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:
Robert Swain 2017-06-01 14:54:59 +02:00
parent ce21b32d38
commit cae309fa26

View file

@ -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)
}() }()