static void
gh_flush(globalheaders_t *gh)
{
- if(gh->gh_ss != NULL)
+ if(gh->gh_ss != NULL) {
streaming_start_unref(gh->gh_ss);
- gh->gh_ss = NULL;
+ gh->gh_ss = NULL;
+ }
pktref_clear_queue(&gh->gh_holdq);
}
-
/**
*
*/
assert(ssc != NULL);
if(ssc->ssc_type == SCT_TELETEXT) {
- free(sm);
+ streaming_msg_free(sm);
ssc->ssc_disabled = 1;
break;
}
switch(sm->sm_type) {
case SMT_START:
- abort(); // Should not happen
+ /* stop */
+ gh->gh_passthru = 0;
+ gh_flush(gh);
+ /* restart */
+ gh->gh_ss = streaming_start_copy(sm->sm_data);
+ streaming_msg_free(sm);
+ break;
case SMT_STOP:
gh->gh_passthru = 0;
gh_flush(gh);
free(gh);
}
-