diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 9b7fe3664c34e48b096bce9c407a2eb0992c342f..b2ce299f382f81fc6cd56f78782301d7530487d1 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -1893,8 +1893,10 @@ static int zt_hangup(struct ast_channel *ast) p->faxhandled = 0; p->pulsedial = 0; p->onhooktime = time(NULL); +#ifdef ZAPATA_PRI p->proceeding = 0; p->setup_ack = 0; +#endif if (p->dsp) { ast_dsp_free(p->dsp); p->dsp = NULL; @@ -5146,7 +5148,11 @@ static void *do_monitor(void *data) count = 0; i = iflist; while(i) { - if ((i->subs[SUB_REAL].zfd > -1) && i->sig && (!i->radio) && !i->pri) { + if ((i->subs[SUB_REAL].zfd > -1) && i->sig && (!i->radio) +#ifdef ZAPATA_PRI + && !i->pri +#endif + ) { if (!i->owner && !i->subs[SUB_REAL].owner) { /* This needs to be watched, as it lacks an owner */ pfds[count].fd = i->subs[SUB_REAL].zfd; @@ -6156,7 +6162,7 @@ static int pri_find_principle(struct zt_pri *pri, int channel) span = PRI_SPAN(channel); channel = PRI_CHANNEL(channel); - for (x=1;x<=pri->numchans;x++) { + for (x=1;x<pri->numchans;x++) { if (pri->pvts[x] && (pri->pvts[x]->prioffset == channel) && (pri->logicalspan == span)) { principle = x; break; @@ -6175,11 +6181,11 @@ static int pri_fixup_principle(struct zt_pri *pri, int principle, q931_call *c) return principle; } if ((principle > -1) && - (principle <= pri->numchans) && + (principle < pri->numchans) && (pri->pvts[principle]) && (pri->pvts[principle]->call == c)) return principle; - for (x=1;x<=pri->numchans;x++) { + for (x=1;x<pri->numchans;x++) { if (!pri->pvts[x]) continue; if (pri->pvts[x]->call == c) { /* Found our call */ @@ -6282,11 +6288,11 @@ static int pri_check_restart(struct zt_pri *pri) { do { pri->resetpos++; - } while((pri->resetpos <= pri->numchans) && + } while((pri->resetpos < pri->numchans) && (!pri->pvts[pri->resetpos] || pri->pvts[pri->resetpos]->call || pri->pvts[pri->resetpos]->resetting)); - if (pri->resetpos <= pri->numchans) { + if (pri->resetpos < pri->numchans) { /* Mark the channel as resetting and restart it */ pri->pvts[pri->resetpos]->resetting = 1; pri_reset(pri->pri, PVT_TO_CHANNEL(pri->pvts[pri->resetpos])); @@ -6480,7 +6486,7 @@ static void *pri_dchannel(void *vpri) pri->lastreset += 5; pri->resetting = 0; /* Take the channels from inalarm condition */ - for (i=0; i<=pri->numchans; i++) + for (i=0; i<pri->numchans; i++) if (pri->pvts[i]) { pri->pvts[i]->inalarm = 0; } @@ -6491,7 +6497,7 @@ static void *pri_dchannel(void *vpri) pri->up = 0; pri->resetting = 0; /* Hangup active channels and put them in alarm mode */ - for (i=0; i<=pri->numchans; i++) { + for (i=0; i<pri->numchans; i++) { struct zt_pvt *p = pri->pvts[i]; if (p) { if (p->call) { @@ -6531,7 +6537,7 @@ static void *pri_dchannel(void *vpri) } else { if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_2 "Restart on requested on entire span %d\n", pri->span); - for (x=1;x <= pri->numchans;x++) + for (x=1;x < pri->numchans;x++) if (pri->pvts[x]) { ast_mutex_lock(&pri->pvts[x]->lock); if (pri->pvts[x]->call) {