mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-08 18:16:59 +00:00
mediaapi/writers/download: Handle panic to ensure waking of goroutines
If the active request were to panic, we need to ensure all the waiting goroutines get woken up.
This commit is contained in:
parent
ce21b32d38
commit
cae309fa26
@ -229,6 +229,11 @@ func (r *downloadRequest) getRemoteFile(cfg *config.MediaAPI, db *storage.Databa
|
|||||||
// Note: broadcastMediaMetadata uses mutexes and conditions from activeRemoteRequests
|
// Note: broadcastMediaMetadata uses mutexes and conditions from activeRemoteRequests
|
||||||
defer func() {
|
defer func() {
|
||||||
// Note: errorResponse is the named return variable so we wrap this in a closure to re-evaluate the arguments at defer-time
|
// Note: errorResponse is the named return variable so we wrap this in a closure to re-evaluate the arguments at defer-time
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
resErr := jsonerror.InternalServerError()
|
||||||
|
r.broadcastMediaMetadata(activeRemoteRequests, &resErr)
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
r.broadcastMediaMetadata(activeRemoteRequests, errorResponse)
|
r.broadcastMediaMetadata(activeRemoteRequests, errorResponse)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user