diff --git a/channels/chan_zap.c b/channels/chan_zap.c index cf8527096c683a09d967b3b85836f999689d2ce0..c16d3b2ced7f8754c7f38ce6bb7cabf2da2b7a05 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -7525,7 +7525,7 @@ static void *pri_dchannel(void *vpri) numdchans = i; time(&t); ast_mutex_lock(&pri->lock); - if (pri->switchtype != PRI_SWITCH_GR303_TMC) { + if (pri->switchtype != PRI_SWITCH_GR303_TMC && (pri->resetinterval > 0)) { if (pri->resetting && pri_is_up(pri)) { if (pri->resetpos < 0) pri_check_restart(pri); @@ -7703,8 +7703,10 @@ static void *pri_dchannel(void *vpri) time(&pri->lastreset); /* Restart in 5 seconds */ - pri->lastreset -= pri->resetinterval; - pri->lastreset += 5; + if (pri->resetinterval > -1) { + pri->lastreset -= pri->resetinterval; + pri->lastreset += 5; + } pri->resetting = 0; /* Take the channels from inalarm condition */ for (i=0; i<pri->numchans; i++) @@ -9942,10 +9944,12 @@ static int setup_zap(int reload) } else if (!strcasecmp(v->name, "unknownprefix")) { strncpy(unknownprefix, v->value, sizeof(unknownprefix)-1); } else if (!strcasecmp(v->name, "resetinterval")) { - if( atoi(v->value) >= 60 ) + if (!strcasecmp(v->value, "never")) + resetinterval = -1; + else if( atoi(v->value) >= 60 ) resetinterval = atoi(v->value); else - ast_log(LOG_WARNING, "'%s' is not a valid reset interval, should be >= 60 seconds at line %d\n", + ast_log(LOG_WARNING, "'%s' is not a valid reset interval, should be >= 60 seconds or 'never' at line %d\n", v->value, v->lineno); } else if (!strcasecmp(v->name, "minunused")) { minunused = atoi(v->value); diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample index 1a31c0281466748497255d2b5604dc830002229b..5ddf6e2225441d6d35e56169b99c78bc01f963f5 100755 --- a/configs/zapata.conf.sample +++ b/configs/zapata.conf.sample @@ -104,6 +104,7 @@ switchtype=national ; PRI resetinterval: sets the time in seconds between restart of unused channels, defaults to 3600 ; minimum 60 seconds ; some PBXs don't like channel restarts. so set the interval to a very long interval e.g. 100000000 +; or 'never' to disable *entirely*. ; ;resetinterval = 3600 ;