svn commit: r486762 - in head/multimedia/tvheadend: . files
Bernhard Froehlich
decke at FreeBSD.org
Thu Dec 6 14:26:23 UTC 2018
Author: decke
Date: Thu Dec 6 14:26:22 2018
New Revision: 486762
URL: https://svnweb.freebsd.org/changeset/ports/486762
Log:
- Fix sendfile() integration affecting webui
- Fix epg compatibility issues in webui
- Bump PORTREVISION
Both patches are already included upstream.
Submitted by: Jongsung Kim <jongsung.kim at gmail.com> (via email to ports@)
Added:
head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js (contents, props changed)
head/multimedia/tvheadend/files/patch-src_webui_webui.c (contents, props changed)
Modified:
head/multimedia/tvheadend/Makefile
Modified: head/multimedia/tvheadend/Makefile
==============================================================================
--- head/multimedia/tvheadend/Makefile Thu Dec 6 14:19:23 2018 (r486761)
+++ head/multimedia/tvheadend/Makefile Thu Dec 6 14:26:22 2018 (r486762)
@@ -4,7 +4,7 @@
PORTNAME= tvheadend
PORTVERSION= 4.2.7
DISTVERSIONPREFIX= v
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= multimedia
MAINTAINER= decke at FreeBSD.org
Added: head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/multimedia/tvheadend/files/patch-src_webui_static_app_epg.js Thu Dec 6 14:26:22 2018 (r486762)
@@ -0,0 +1,44 @@
+From 5363fb5cefbf8f9f0f4d38f81252ce93942665e4 Mon Sep 17 00:00:00 2001
+From: Jongsung Kim <jongsung.kim at gmail.com>
+Date: Tue, 20 Nov 2018 17:36:10 +0900
+Subject: [PATCH 2/2] webui: epg: fix compatibility issue for FreeBSD
+
+The EPG screen serviced by FreeBSD port of tvheadend has two abnormal control
+behaviors:
+
+ Reset All button makes the list empty
+ Typing and then deleting any search string also makes the list empty.
+
+This patch fixes the symptoms above.
+
+Patch tested with the latest FreeBSD port of tvheadend-4.2.7.
+
+Changes since v1:
+- call reset only if required
+---
+ src/webui/static/app/epg.js | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/webui/static/app/epg.js b/src/webui/static/app/epg.js
+index 2c8b914b2..7337177ef 100644
+--- src/webui/static/app/epg.js
++++ src/webui/static/app/epg.js
+@@ -902,10 +902,11 @@ tvheadend.epg = function() {
+ epgFilterTitle.on('valid', function(c) {
+ var value = c.getValue();
+
+- if (value.length < 1)
+- value = null;
+-
+- if (epgStore.baseParams.title !== value) {
++ if (value.length < 1) {
++ delete epgStore.baseParams.title;
++ epgView.reset();
++ }
++ else if (epgStore.baseParams.title !== value) {
+ epgStore.baseParams.title = value;
+ epgView.reset();
+ }
+--
+2.19.1
+
Added: head/multimedia/tvheadend/files/patch-src_webui_webui.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/multimedia/tvheadend/files/patch-src_webui_webui.c Thu Dec 6 14:26:22 2018 (r486762)
@@ -0,0 +1,80 @@
+From 411f957733222e24df4ead9fb15332dcb2c116da Mon Sep 17 00:00:00 2001
+From: Jongsung Kim <jongsung.kim at gmail.com>
+Date: Tue, 29 May 2018 03:42:04 +0900
+Subject: [PATCH 1/2] webui: fix http_serve_file() for FreeBSD
+
+This patch fixes two major problems of FreeBSD port of tvheadend:
+
+1. very high CPU usage while streaming a recored program
+2. unable to stream the recorded program beyond 128MB.
+
+Unlike Linux sendfile(), FreeBSD sendfile() requires an explicit
+file offset, and return value must be checked to catch any error
+occurred. (i.e., closed connection)
+
+Patch tested with the latest FreeBSD port of tvheadend-4.2.6.
+---
+ src/webui/webui.c | 24 +++++++++++++++++-------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/src/webui/webui.c b/src/webui/webui.c
+index 12b965230..331d998e9 100644
+--- src/webui/webui.c
++++ src/webui/webui.c
+@@ -1570,7 +1570,7 @@ http_serve_file(http_connection_t *hc, const char *fname,
+ #if defined(PLATFORM_LINUX)
+ ssize_t r;
+ #elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN)
+- off_t r;
++ off_t o, r;
+ #endif
+
+ if (fconv) {
+@@ -1631,11 +1631,15 @@ http_serve_file(http_connection_t *hc, const char *fname,
+ sprintf(range_buf, "bytes %jd-%jd/%jd",
+ file_start, file_end, (intmax_t)st.st_size);
+
++#if defined(PLATFORM_LINUX)
+ if(file_start > 0)
+ if (lseek(fd, file_start, SEEK_SET) != file_start) {
+ close(fd);
+ return HTTP_STATUS_INTERNAL;
+ }
++#elif defined(PLATFORM_FREEBSD) || defined(PLATFORM_DARWIN)
++ o = file_start;
++#endif
+
+ if (preop) {
+ ret = preop(hc, file_start, content_len, opaque);
+@@ -1656,16 +1660,22 @@ http_serve_file(http_connection_t *hc, const char *fname,
+ chunk = MIN(1024 * ((stats ? 128 : 1024) * 1024), content_len);
+ #if defined(PLATFORM_LINUX)
+ r = sendfile(hc->hc_fd, fd, NULL, chunk);
++ if (r < 0) {
++ ret = -1;
++ break;
++ }
+ #elif defined(PLATFORM_FREEBSD)
+- sendfile(fd, hc->hc_fd, 0, chunk, NULL, &r, 0);
++ ret = sendfile(fd, hc->hc_fd, o, chunk, NULL, &r, 0);
++ if (ret < 0)
++ break;
++ o += r;
+ #elif defined(PLATFORM_DARWIN)
+ r = chunk;
+- sendfile(fd, hc->hc_fd, 0, &r, NULL, 0);
+-#endif
+- if(r < 0) {
+- ret = -1;
++ ret = sendfile(fd, hc->hc_fd, o, &r, NULL, 0);
++ if (ret < 0)
+ break;
+- }
++ o += r;
++#endif
+ content_len -= r;
+ if (stats)
+ stats(hc, r, opaque);
+--
+2.19.1
+
More information about the svn-ports-all
mailing list