/* * Stop connection */ static void iptv_rtsp_stop ( iptv_mux_t *im ) { rtsp_priv_t *rp = im->im_data; int play; lock_assert(&global_lock); if (rp == NULL) return; play = rp->play; im->im_data = NULL; rp->hc->hc_aux = NULL; if (play) rtsp_teardown(rp->hc, rp->path, ""); pthread_mutex_unlock(&iptv_lock); gtimer_disarm(&rp->alive_timer); udp_multirecv_free(&rp->um); if (!play) http_client_close(rp->hc); free(rp->path); free(rp->query); rtcp_destroy(rp->rtcp_info); free(rp->rtcp_info); free(rp); pthread_mutex_lock(&iptv_lock); }
static void iptv_udp_stop ( iptv_input_t *mi, iptv_mux_t *im ) { udp_multirecv_t *um = im->im_data; im->im_data = NULL; tvh_mutex_unlock(&iptv_lock); udp_multirecv_free(um); free(um); tvh_mutex_lock(&iptv_lock); }