aboutsummaryrefslogtreecommitdiff
path: root/multimedia/tvheadend
diff options
context:
space:
mode:
authorBernhard Froehlich <decke@FreeBSD.org>2018-04-18 11:26:59 +0000
committerBernhard Froehlich <decke@FreeBSD.org>2018-04-18 11:26:59 +0000
commit0199c6a95e2308a09e02aaf611a1e836c4871603 (patch)
tree7d2c5ef1c8bdeae1c0d2a9face1eb294d45e249c /multimedia/tvheadend
parent54d45fe4a89ef90637ffcd98760ead74eda12e2e (diff)
downloadports-0199c6a95e2308a09e02aaf611a1e836c4871603.tar.gz
ports-0199c6a95e2308a09e02aaf611a1e836c4871603.zip
Notes
Diffstat (limited to 'multimedia/tvheadend')
-rw-r--r--multimedia/tvheadend/Makefile1
-rw-r--r--multimedia/tvheadend/files/patch-src_tcp.c39
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;
+ }
+