svn commit: r467705 - in head/multimedia/tvheadend: . files
Bernhard Froehlich
decke at FreeBSD.org
Wed Apr 18 11:27:00 UTC 2018
Author: decke
Date: Wed Apr 18 11:26:59 2018
New Revision: 467705
URL: https://svnweb.freebsd.org/changeset/ports/467705
Log:
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 tcp_socket_dead() misunderstood the zero-return from recv().
For the FreeBSD, recv() might return zero for alive sockets which
have nothing to read.
Submitted by: Jongsung Kim <jongsung.kim at gmail.com>
Obtained from: https://github.com/tvheadend/tvheadend/pull/1112
Added:
head/multimedia/tvheadend/files/patch-src_tcp.c (contents, props changed)
Modified:
head/multimedia/tvheadend/Makefile
Modified: head/multimedia/tvheadend/Makefile
==============================================================================
--- head/multimedia/tvheadend/Makefile Wed Apr 18 11:20:04 2018 (r467704)
+++ head/multimedia/tvheadend/Makefile Wed Apr 18 11:26:59 2018 (r467705)
@@ -4,6 +4,7 @@
PORTNAME= tvheadend
PORTVERSION= 4.2.6
DISTVERSIONPREFIX= v
+PORTREVISION= 1
CATEGORIES= multimedia
MAINTAINER= decke at FreeBSD.org
Added: head/multimedia/tvheadend/files/patch-src_tcp.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/multimedia/tvheadend/files/patch-src_tcp.c Wed Apr 18 11:26:59 2018 (r467705)
@@ -0,0 +1,39 @@
+From dc7804e1410971dabbe087193ca2b47f02131524 Mon Sep 17 00:00:00 2001
+From: Jongsung Kim <jongsung.kim at 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;
+ }
+
More information about the svn-ports-all
mailing list