}
static void
-satip_frontend_shutdown1 ( http_client_t *rtsp, tvhpoll_t *efd,
- int shutdown2, int timeout )
+satip_frontend_shutdown ( http_client_t *rtsp, tvhpoll_t *efd )
{
char b[32];
tvhpoll_event_t ev;
r = http_client_run(rtsp);
if (r != HTTP_CON_RECEIVING && r != HTTP_CON_SENDING)
break;
- nfds = tvhpoll_wait(efd, &ev, 1, timeout);
+ nfds = tvhpoll_wait(efd, &ev, 1, 400);
if (nfds == 0)
break;
if (nfds < 0) {
}
}
-static void
-satip_frontend_shutdown
- ( satip_frontend_t *lfe, http_client_t *rtsp, tvhpoll_t *efd, int shutdown2 )
-{
- satip_frontend_shutdown1(rtsp, efd, shutdown2, 250);
- if (shutdown2)
- satip_frontend_shutdown1(rtsp, efd, shutdown2, 50);
-}
-
static void
satip_frontend_tuning_error ( satip_frontend_t *lfe, satip_tune_req_t *tr )
{
if (!tvheadend_running) { exit_flag = 1; goto done; }
if (rtsp && nfds == 0) {
- satip_frontend_shutdown(lfe, rtsp, efd, lfe->sf_device->sd_shutdown2);
+
+ memset(ev, 0, sizeof(ev));
+ ev[0].events = TVHPOLL_IN;
+ ev[0].fd = lfe->sf_dvr_pipe.rd;
+ ev[0].data.ptr = NULL;
+ tvhpoll_rem(efd, ev, 1);
+
+ satip_frontend_shutdown(rtsp, efd);
+
+ memset(ev, 0, sizeof(ev));
+ ev[0].events = TVHPOLL_IN;
+ ev[0].fd = lfe->sf_dvr_pipe.rd;
+ ev[0].data.ptr = NULL;
+ tvhpoll_add(efd, ev, 1);
+
http_client_close(rtsp);
rtsp = NULL;
}
tvhpoll_rem(efd, ev, 3);
if (exit_flag) {
- satip_frontend_shutdown(lfe, rtsp, efd, lfe->sf_device->sd_shutdown2);
+ satip_frontend_shutdown(rtsp, efd);
http_client_close(rtsp);
rtsp = NULL;
}