muxers: handle ECONNRESET errno as end-of-stream

This commit is contained in:
Jaroslav Kysela 2014-07-05 11:40:41 +02:00
parent 0b4bcfaa98
commit 6958e67784
4 changed files with 5 additions and 3 deletions

View file

@ -24,6 +24,8 @@
#define MC_REWRITE_PAT 0x0001
#define MC_REWRITE_PMT 0x0002
#define MC_IS_EOS_ERROR(e) ((e) == EPIPE || (e) == ECONNRESET)
typedef enum {
MC_UNKNOWN = 0,
MC_MATROSKA = 1,

View file

@ -405,7 +405,7 @@ pass_muxer_write(muxer_t *m, const void *data, size_t size)
pm->m_errors++;
} else if(tvh_write(pm->pm_fd, data, size)) {
pm->pm_error = errno;
if (errno != EPIPE)
if (!MC_IS_EOS_ERROR(errno))
tvhlog(LOG_ERR, "pass", "%s: Write failed -- %s", pm->pm_filename,
strerror(errno));
else

View file

@ -160,7 +160,7 @@ tvh_muxer_write_pkt(muxer_t *m, streaming_message_type_t smt, void *data)
assert(smt == SMT_PACKET);
if((r = mk_mux_write_pkt(tm->tm_ref, pkt)) != 0) {
if (r == EPIPE)
if (MC_IS_EOS_ERROR(r))
tm->m_eos = 1;
tm->m_errors++;
return -1;

View file

@ -466,7 +466,7 @@ mk_write_to_fd(mk_mux_t *mkm, htsbuf_queue_t *hq)
static void
mk_write_queue(mk_mux_t *mkm, htsbuf_queue_t *q)
{
if(!mkm->error && mk_write_to_fd(mkm, q) && mkm->error != EPIPE)
if(!mkm->error && mk_write_to_fd(mkm, q) && !MC_IS_EOS_ERROR(mkm->error))
tvhlog(LOG_ERR, "mkv", "%s: Write failed -- %s", mkm->filename,
strerror(errno));