tsdebug: avoid I/O when file descriptors are not set

This commit is contained in:
Jaroslav Kysela 2014-12-12 08:50:43 +01:00
parent f98f580ee0
commit d18fc1a422
2 changed files with 13 additions and 10 deletions

View file

@ -823,9 +823,9 @@ static inline void
tsdebug_write(mpegts_mux_t *mm, uint8_t *buf, size_t len)
{
#if ENABLE_TSDEBUG
ssize_t r = write(mm->mm_tsdebug_fd2, buf, len);
if (r != len && mm->mm_tsdebug_fd2 >= 0)
tvherror("tsdebug", "unable to write input data (%i)", errno);
if (mm->mm_tsdebug_fd2 >= 0)
if (write(mm->mm_tsdebug_fd2, buf, len) != len)
tvherror("tsdebug", "unable to write input data (%i)", errno);
#endif
}

View file

@ -566,13 +566,16 @@ mpegts_input_stopped_mux
#if ENABLE_TSDEBUG
tsdebug_packet_t *tp;
close(mmi->mmi_mux->mm_tsdebug_fd);
close(mmi->mmi_mux->mm_tsdebug_fd2);
mmi->mmi_mux->mm_tsdebug_fd = -1;
mmi->mmi_mux->mm_tsdebug_fd2 = -1;
mmi->mmi_mux->mm_tsdebug_pos = 0;
while ((tp = TAILQ_FIRST(&mmi->mmi_mux->mm_tsdebug_packets)) != NULL) {
TAILQ_REMOVE(&mmi->mmi_mux->mm_tsdebug_packets, tp, link);
mpegts_mux_t *mm = mmi->mmi_mux;
if (mm->mm_tsdebug_fd >= 0)
close(mm->mm_tsdebug_fd);
if (mm->mm_tsdebug_fd2 >= 0)
close(mm->mm_tsdebug_fd2);
mm->mm_tsdebug_fd = -1;
mm->mm_tsdebug_fd2 = -1;
mm->mm_tsdebug_pos = 0;
while ((tp = TAILQ_FIRST(&mm->mm_tsdebug_packets)) != NULL) {
TAILQ_REMOVE(&mm->mm_tsdebug_packets, tp, link);
free(tp);
}
#endif