aboutsummaryrefslogtreecommitdiffhomepage
path: root/demux
diff options
context:
space:
mode:
authorGravatar wm4 <wm4@nowhere>2018-03-21 14:48:01 +0100
committerGravatar wm4 <wm4@nowhere>2018-03-26 19:47:07 +0200
commit7d10728aaadd171bc5e25545dae1c7dedd5145f7 (patch)
treef14a58530756c5222daeaee491630188d5daf7c4 /demux
parent965ba23303d980c239e2b0191488766cfa7b0f75 (diff)
demux, stream: ignore packets and errors on forced exit
When this happens, network calls are forcibly aborted (more or less), but demuxers might keep going, as most of them do not check for forced exits properly. This can possibly lead to broken packets being added. Also do not attempt to read more packets in this situation. Also do not print a stream open failed message if opening was aborted anyway.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 4d70938938..4563a034a2 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -1183,7 +1183,7 @@ static void adjust_seek_range_on_packet(struct demux_stream *ds,
void demux_add_packet(struct sh_stream *stream, demux_packet_t *dp)
{
struct demux_stream *ds = stream ? stream->ds : NULL;
- if (!dp || !dp->len || !ds) {
+ if (!dp || !dp->len || !ds || demux_cancel_test(ds->in->d_thread)) {
talloc_free(dp);
return;
}
@@ -1306,7 +1306,7 @@ static bool read_packet(struct demux_internal *in)
in->eof = false;
in->idle = true;
- if (!in->reading || in->blocked)
+ if (!in->reading || in->blocked || demux_cancel_test(in->d_thread))
return false;
// Check if we need to read a new packet. We do this if all queues are below