satip_frontend_t *lfe = aux, *lfe_master;
satip_tune_req_t *tr = NULL;
mpegts_mux_instance_t *mmi;
- http_client_t *rtsp;
+ http_client_t *rtsp = NULL;
udp_connection_t *rtp = NULL, *rtcp = NULL;
dvb_mux_t *lm;
char buf[256];
struct iovec *iovec;
uint8_t b[2048], session[32];
sbuf_t *sb;
- int nfds, i, r, tc, rtp_port, start = 0;
+ int nfds, i, r, tc, rtp_port, start = 0, poll_reg = 0;
size_t c;
tvhpoll_event_t ev[3];
tvhpoll_t *efd;
/* Setup poll */
efd = tvhpoll_create(4);
- rtsp = NULL;
/* Setup buffers */
sbuf_init(sb = &lfe->sf_sbuf);
tvhpoll_event(&ev[nfds++], rtsp->hc_fd, TVHPOLL_IN, rtsp);
tvhpoll_add(efd, ev, nfds);
rtsp->hc_efd = efd;
+ poll_reg = 1;
position = lfe_master->sf_position;
if (lfe->sf_device->sd_pilot_on)
udp_multirecv_free(&um);
lfe->sf_curmux = NULL;
+ assert(poll_reg);
nfds = 0;
if ((rtsp_flags & SATIP_SETUP_TCP) == 0) {
tvhpoll_event1(&ev[nfds++], rtp->fd);
}
tvhpoll_event1(&ev[nfds++], lfe->sf_dvr_pipe.rd);
tvhpoll_rem(efd, ev, nfds);
+ poll_reg = 0;
if (exit_flag) {
satip_frontend_shutdown(lfe, buf, rtsp, tr, efd);
}
done:
+ if (poll_reg) {
+ nfds = 0;
+ if ((rtsp_flags & SATIP_SETUP_TCP) == 0) {
+ tvhpoll_event1(&ev[nfds++], rtp->fd);
+ tvhpoll_event1(&ev[nfds++], rtcp->fd);
+ }
+ tvhpoll_event1(&ev[nfds++], lfe->sf_dvr_pipe.rd);
+ tvhpoll_rem(efd, ev, nfds);
+ poll_reg = 0;
+ }
udp_close(rtcp);
udp_close(rtp);
rtcp = rtp = NULL;