mediaapi/writers/download: Wrap broadcast call in closure to re-evaluate args

This commit is contained in:
Robert Swain 2017-06-01 14:44:00 +02:00
parent 4457ebddca
commit ce21b32d38

View File

@ -226,9 +226,11 @@ func (r *downloadRequest) getRemoteFile(cfg *config.MediaAPI, db *storage.Databa
r.MediaMetadata = mediaMetadata r.MediaMetadata = mediaMetadata
} else { } else {
// Note: This is an active request that MUST broadcastMediaMetadata to wake up waiting goroutines! // Note: This is an active request that MUST broadcastMediaMetadata to wake up waiting goroutines!
// Note: errorResponse is the named return variable
// Note: broadcastMediaMetadata uses mutexes and conditions from activeRemoteRequests // Note: broadcastMediaMetadata uses mutexes and conditions from activeRemoteRequests
defer r.broadcastMediaMetadata(activeRemoteRequests, errorResponse) defer func() {
// Note: errorResponse is the named return variable so we wrap this in a closure to re-evaluate the arguments at defer-time
r.broadcastMediaMetadata(activeRemoteRequests, errorResponse)
}()
// check if we have a record of the media in our database // check if we have a record of the media in our database
mediaMetadata, err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin) mediaMetadata, err := db.GetMediaMetadata(r.MediaMetadata.MediaID, r.MediaMetadata.Origin)