From 3b48817a7b3c2ca70b5498a2e8acd5461bb4a476 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sun, 1 Nov 2015 14:52:49 -0800 Subject: [PATCH] obs-outputs: Fix race condition It's possible that packets would still be coming in while the packets were being freed. --- plugins/obs-outputs/rtmp-stream.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/obs-outputs/rtmp-stream.c b/plugins/obs-outputs/rtmp-stream.c index 76e8298a2..ef5fbabd0 100644 --- a/plugins/obs-outputs/rtmp-stream.c +++ b/plugins/obs-outputs/rtmp-stream.c @@ -87,11 +87,14 @@ static void log_rtmp(int level, const char *format, va_list args) static inline void free_packets(struct rtmp_stream *stream) { + pthread_mutex_lock(&stream->packets_mutex); + while (stream->packets.size) { struct encoder_packet packet; circlebuf_pop_front(&stream->packets, &packet, sizeof(packet)); obs_free_encoder_packet(&packet); } + pthread_mutex_unlock(&stream->packets_mutex); } static void rtmp_stream_stop(void *data);