Merged revisions 106945 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Sat, 8 Mar 2008 16:03:48 +0000 (16:03 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Sat, 8 Mar 2008 16:03:48 +0000 (16:03 +0000)
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

index 5614b1f..0bb2d0b 100644 (file)
@@ -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;