]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
SAT>IP: Do not enable the second RTSP SHUTDOWN sequence by default
authorJaroslav Kysela <perex@perex.cz>
Fri, 12 Dec 2014 10:28:04 +0000 (11:28 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 12 Dec 2014 10:28:04 +0000 (11:28 +0100)
docs/html/config_tvadapters.html
src/input/mpegts/satip/satip.c
src/input/mpegts/satip/satip_frontend.c
src/input/mpegts/satip/satip_private.h

index fc5e82a6653558c0561f543943343305b76094e7..c1a4e3a600cefab6db7e027bc0cd5f465efe53c5 100644 (file)
@@ -85,6 +85,9 @@ setting this to 100.</dd>
 <p>
   <dt><b>PIDs in setup</b></dt>
   <dd>Enable, if the SAT>IP box requires pids=0 parameter in the SETUP RTSP command.</dd>
+<p>
+  <dt><b>Double RTSP Shutdown</b></dt>
+  <dd>Enable, if the SAT>IP box might require to send twice the RTSP SHUTDOWN command.</dd>
 <p>
   <dt><b>Force pilot for DVB-S2</b></dt>
   <dd>Enable, if the SAT>IP box requiest plts=on parameter in the SETUP RTSP
index 9962c424603b509ae5c0ba46871f64a82b880da9..ef5c75fcf8dde0c43a8bf65c1827e359db76cfc5 100644 (file)
@@ -180,6 +180,13 @@ const idclass_t satip_device_class =
       .opts     = PO_ADVANCED,
       .off      = offsetof(satip_device_t, sd_pids0),
     },
+    {
+      .type     = PT_BOOL,
+      .id       = "shutdown2",
+      .name     = "Double RTSP Shutdown",
+      .opts     = PO_ADVANCED,
+      .off      = offsetof(satip_device_t, sd_shutdown2),
+    },
     {
       .type     = PT_BOOL,
       .id       = "piloton",
index b910b58e2677e59298f93e7a7be7623c361c7bb8..d15af32d09d245b7fa9eeabd02edeb15ad8426eb 100644 (file)
@@ -1474,24 +1474,26 @@ new_tune:
       }
     }
     /* for sure - the second sequence */
-    r = rtsp_teardown(rtsp, (char *)b, NULL);
-    if (r < 0) {
-      tvhtrace("satip", "%s - bad teardown2", buf);
-    } else {
-      while (1) {
-        r = http_client_run(rtsp);
-        if (r != HTTP_CON_RECEIVING && r != HTTP_CON_SENDING)
-          break;
-        nfds = tvhpoll_wait(efd, ev, 1, 50); /* only small delay here */
-        if (nfds == 0)
-          break;
-        if (nfds < 0) {
-          if (ERRNO_AGAIN(errno))
-            continue;
-          break;
+    if (lfe->sf_device->sd_shutdown2) {
+      r = rtsp_teardown(rtsp, (char *)b, NULL);
+      if (r < 0) {
+        tvhtrace("satip", "%s - bad teardown2", buf);
+      } else {
+        while (1) {
+          r = http_client_run(rtsp);
+          if (r != HTTP_CON_RECEIVING && r != HTTP_CON_SENDING)
+            break;
+          nfds = tvhpoll_wait(efd, ev, 1, 50); /* only small delay here */
+          if (nfds == 0)
+            break;
+          if (nfds < 0) {
+            if (ERRNO_AGAIN(errno))
+              continue;
+            break;
+          }
+          if(ev[0].events & (TVHPOLL_ERR | TVHPOLL_HUP))
+            break;
         }
-        if(ev[0].events & (TVHPOLL_ERR | TVHPOLL_HUP))
-          break;
       }
     }
   }
index 43cc1ff62a6c2336e7c11edbfd86c60df6216a5a..b791ea388e345ae9e54590f953c80afb1ab570b6 100644 (file)
@@ -82,6 +82,7 @@ struct satip_device
   int                        sd_sig_scale;
   int                        sd_pids0;
   int                        sd_pilot_on;
+  int                        sd_shutdown2;
   int                        sd_dbus_allow;
   pthread_mutex_t            sd_tune_mutex;
 };