From 85c81156a37e161ca08831b9ac9af022c72ebdea Mon Sep 17 00:00:00 2001 From: Mikhail Burakov Date: Sat, 18 Mar 2023 18:17:05 +0100 Subject: Proper handling of clients closing their stdin --- encode.c | 1 + main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/encode.c b/encode.c index ba38c6a..5c7e886 100644 --- a/encode.c +++ b/encode.c @@ -206,6 +206,7 @@ static bool DrainPacket(const struct AVPacket* packet, int fd) { switch (result) { case -1: if (errno == EINTR) continue; + if (errno == EPIPE) return true; LOG("Failed to write packed (%s)", strerror(errno)); return false; case 0: diff --git a/main.c b/main.c index 50d9df4..8e63703 100644 --- a/main.c +++ b/main.c @@ -63,6 +63,7 @@ int main(int argc, char* argv[]) { (void)argv; if (signal(SIGINT, OnSignal) == SIG_ERR || + signal(SIGPIPE, OnSignal) == SIG_ERR || signal(SIGTERM, OnSignal) == SIG_ERR) { LOG("Failed to set signal handlers (%s)", strerror(errno)); return EXIT_FAILURE; -- cgit v1.2.3