summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorMatthew Fredrickson <creslin@digium.com>2006-11-17 18:26:33 +0000
committerMatthew Fredrickson <creslin@digium.com>2006-11-17 18:26:33 +0000
commit03ee5533430587d0595ba0eb71741d4f1a6a9aaf (patch)
tree0a13e7ad0a492a3d69e21e4c957c52ebeb47f2bf /channels
parent6f9b6ba0b1a144cdf9c8db7ab410bcbc9da547bf (diff)
Add some sense of link state. Don't make calls if link is down. Only reset if we're bringing the
link up for the first time. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@47801 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_zap.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index fcfe76781..a914ac7e3 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -426,6 +426,10 @@ struct zt_ss7 {
int linkstate[NUM_DCHANS];
int numchans;
int type;
+ enum {
+ LINKSET_STATE_DOWN = 0,
+ LINKSET_STATE_UP
+ } state;
struct ss7 *ss7;
struct zt_pvt *pvts[MAX_CHANNELS]; /*!< Member channel pvt structs */
};
@@ -8536,10 +8540,18 @@ static void *ss7_linkset(void *data)
switch (e->e) {
case SS7_EVENT_UP:
ast_verbose("--- SS7 Up ---\n");
- ss7_reset_linkset(linkset);
+ if (linkset->state != LINKSET_STATE_UP)
+ ss7_reset_linkset(linkset);
+ linkset->state = LINKSET_STATE_UP;
break;
case SS7_EVENT_DOWN:
ast_verbose("--- SS7 Down ---\n");
+ linkset->state = LINKSET_STATE_DOWN;
+ for (i = 0; i < linkset->numchans; i++) {
+ struct zt_pvt *p = linkset->pvts[i];
+ if (p)
+ p->inalarm = 1;
+ }
break;
case MTP2_LINK_UP:
ast_log(LOG_DEBUG, "MTP2 link up\n");