diff --git a/libavformat/udp.c b/libavformat/udp.c index 433f961814..c6f0a1fd71 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -766,8 +766,10 @@ static int udp_read(URLContext *h, uint8_t *buf, int size) int64_t t = av_gettime() + 100000; struct timespec tv = { .tv_sec = t / 1000000, .tv_nsec = (t % 1000000) * 1000 }; - if (pthread_cond_timedwait(&s->cond, &s->mutex, &tv) < 0) + if (pthread_cond_timedwait(&s->cond, &s->mutex, &tv) < 0) { + pthread_mutex_unlock(&s->mutex); return AVERROR(errno == ETIMEDOUT ? EAGAIN : errno); + } nonblock = 1; } } while( 1);