From 7b3ffe17a0bf1f6026b1c0ff15c0e9b6e9f028e0 Mon Sep 17 00:00:00 2001 From: leslie Date: Mon, 1 Feb 2010 20:52:19 +0100 Subject: [PATCH] sasc: added mrsattester's nit retry patch --- contrib/sasc-ng/dvbloopback/src/plugin_getsid.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c b/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c index 678768f..eb74526 100644 --- a/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c +++ b/contrib/sasc-ng/dvbloopback/src/plugin_getsid.c @@ -80,7 +80,7 @@ struct pat { static int sid_opt = 0; static int opt_maxfilters = 2; -static int opt_max_fail = 10; +static int opt_max_fail = 20; static int opt_allpids = 0; static int opt_resetpidmap = 0; static int opt_experimental = 0; @@ -424,6 +424,8 @@ static int start(char *dmxdev, struct sid_data *sid_data, int timeout) { struct pat pat; struct list_head *lptr; + restart: + bzero(&pat, sizeof(struct pat)); INIT_LIST_HEAD(&pat.dmx_filter_ll); pat.patfd = open(dmxdev, O_RDWR | O_NONBLOCK); @@ -497,9 +499,11 @@ static int start(char *dmxdev, struct sid_data *sid_data, int timeout) { done = read_nit(pes, &sid_data->nit, size); if (done <= 0) nit_retries++; - if (nit_retries == 5) { - dprintf0("start: giving up reading nit\n"); - done = 1; + if (nit_retries == 10) { + dprintf0("start: giving up reading nit and restarting...\n"); + close(pat.patfd); + free_pat(&pat); + goto restart; } } } -- 2.39.5