Index: channels/chan_zap.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v retrieving revision 1.506 diff -u -r1.506 chan_zap.c --- channels/chan_zap.c 9 Sep 2005 18:41:17 -0000 1.506 +++ channels/chan_zap.c 10 Sep 2005 11:13:31 -0000 @@ -8061,7 +8061,7 @@ ast_log(LOG_NOTICE, "PRI got event: %s (%d) on %s D-channel of span %d\n", event2str(x), x, pri_order(which), pri->span); /* Keep track of alarm state */ if (x == ZT_EVENT_ALARM) { - pri->dchanavail[which] &= ~(DCHAN_NOTINALARM | DCHAN_UP); + pri->dchanavail[which] &= ~(DCHAN_NOTINALARM /*| DCHAN_UP*/); pri_find_dchan(pri); } else if (x == ZT_EVENT_NOALARM) { pri->dchanavail[which] |= DCHAN_NOTINALARM; @@ -8082,8 +8082,13 @@ if (e) { if (pri->debug) pri_dump_event(pri->dchans[which], e); - if (e->e != PRI_EVENT_DCHAN_DOWN) - pri->dchanavail[which] |= DCHAN_UP; + if (e->e != PRI_EVENT_DCHAN_DOWN) { + if (!(pri->dchanavail[which] & DCHAN_UP)) { + ast_log(LOG_DEBUG, "Down %s D-Channel on span %d got event %d, so setting DCHAN_UP\n", + pri_order(which), pri->span, e->e); + pri->dchanavail[which] |= DCHAN_UP; + } + } switch(e->e) { case PRI_EVENT_DCHAN_UP: if (option_verbose > 1)