From f5bee50ad1182c524e176cd0997a5d6f5c27a7f3 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Sat, 8 Mar 2008 16:03:48 +0000 Subject: Merged revisions 106945 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r106945 | kpfleming | 2008-03-08 09:59:42 -0600 (Sat, 08 Mar 2008) | 2 lines don't generate D-Channel "up" and "down" messages unless the channel state is actually changing; also, generate the "up" message when an implicit "up" occurs due to reception of a normal event when we thought the channel was "down" ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@106946 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_zap.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 5614b1fdc..0bb2d0b2e 100644 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -10301,8 +10301,18 @@ static void *pri_dchannel(void *vpri) if (e) { if (pri->debug) pri_dump_event(pri->dchans[which], e); - if (e->e != PRI_EVENT_DCHAN_DOWN) + + if (e->e != PRI_EVENT_DCHAN_DOWN) { + if (!(pri->dchanavail[which] & DCHAN_UP)) { + ast_verb(2, "%s D-Channel on span %d up\n", pri_order(which), pri->span); + } pri->dchanavail[which] |= DCHAN_UP; + } else { + if (pri->dchanavail[which] & DCHAN_UP) { + ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span); + } + pri->dchanavail[which] &= ~DCHAN_UP; + } if ((e->e != PRI_EVENT_DCHAN_UP) && (e->e != PRI_EVENT_DCHAN_DOWN) && (pri->pri != pri->dchans[which])) /* Must be an NFAS group that has the secondary dchan active */ @@ -10310,8 +10320,6 @@ static void *pri_dchannel(void *vpri) switch (e->e) { case PRI_EVENT_DCHAN_UP: - ast_verb(2, "%s D-Channel on span %d up\n", pri_order(which), pri->span); - pri->dchanavail[which] |= DCHAN_UP; if (!pri->pri) pri_find_dchan(pri); /* Note presense of D-channel */ @@ -10330,8 +10338,6 @@ static void *pri_dchannel(void *vpri) } break; case PRI_EVENT_DCHAN_DOWN: - ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span); - pri->dchanavail[which] &= ~DCHAN_UP; pri_find_dchan(pri); if (!pri_is_up(pri)) { pri->resetting = 0; -- cgit v1.2.3