diff options
author | Bernhard Froehlich <decke@FreeBSD.org> | 2018-04-18 11:26:59 +0000 |
---|---|---|
committer | Bernhard Froehlich <decke@FreeBSD.org> | 2018-04-18 11:26:59 +0000 |
commit | 0199c6a95e2308a09e02aaf611a1e836c4871603 (patch) | |
tree | 7d2c5ef1c8bdeae1c0d2a9face1eb294d45e249c /multimedia/tvheadend | |
parent | 54d45fe4a89ef90637ffcd98760ead74eda12e2e (diff) | |
download | ports-0199c6a95e2308a09e02aaf611a1e836c4871603.tar.gz ports-0199c6a95e2308a09e02aaf611a1e836c4871603.zip |
Notes
Diffstat (limited to 'multimedia/tvheadend')
-rw-r--r-- | multimedia/tvheadend/Makefile | 1 | ||||
-rw-r--r-- | multimedia/tvheadend/files/patch-src_tcp.c | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/multimedia/tvheadend/Makefile b/multimedia/tvheadend/Makefile index ce10d446a9a1..fd207fac44c2 100644 --- a/multimedia/tvheadend/Makefile +++ b/multimedia/tvheadend/Makefile @@ -4,6 +4,7 @@ PORTNAME= tvheadend PORTVERSION= 4.2.6 DISTVERSIONPREFIX= v +PORTREVISION= 1 CATEGORIES= multimedia MAINTAINER= decke@FreeBSD.org diff --git a/multimedia/tvheadend/files/patch-src_tcp.c b/multimedia/tvheadend/files/patch-src_tcp.c new file mode 100644 index 000000000000..fc9c75570fb5 --- /dev/null +++ b/multimedia/tvheadend/files/patch-src_tcp.c @@ -0,0 +1,39 @@ +From dc7804e1410971dabbe087193ca2b47f02131524 Mon Sep 17 00:00:00 2001 +From: Jongsung Kim <jongsung.kim@gmail.com> +Date: Mon, 16 Apr 2018 13:01:41 +0900 +Subject: [PATCH] tcp: fix tcp_socket_dead() for FreeBSD + +The FreeBSD port of tvheadend couldn't stream Live TV, and debug +log shows webui judged the peer socket closed immediately after +starting streaming: + +2018-04-15 06:30:04.996 [ DEBUG]:webui: Start streaming /stream/mux/c4bc67bdaa13457e33740ca883cc4d75?ticket=7D1B56AD0E434C5F7EBFA4677A7FBE4C94097974 +2018-04-15 06:30:04.996 [ DEBUG]:webui: Stop streaming /stream/mux/c4bc67bdaa13457e33740ca883cc4d75?ticket=7D1B56AD0E434C5F7EBFA4677A7FBE4C94097974, client hung up + +It looks because tcp_socket_dead() misunderstood the zero-return +from recv(). For the FreeBSD, recv() might return zero for alive +sockets which have nothing to read. + +Patch tested with the latest FreeBSD port of tvheadend-4.2.6. +--- + src/tcp.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/tcp.c b/src/tcp.c +index 40f6c1c0cc..9b865eb292 100644 +--- src/tcp.c ++++ src/tcp.c +@@ -453,8 +453,13 @@ tcp_socket_dead(int fd) + return -errno; + if (err) + return -err; ++#ifdef PLATFORM_FREEBSD ++ if (recv(fd, NULL, 0, MSG_PEEK | MSG_DONTWAIT) < 0) ++ return -errno; ++#else + if (recv(fd, NULL, 0, MSG_PEEK | MSG_DONTWAIT) == 0) + return -EIO; ++#endif + return 0; + } + |