From b134688e7ec80e74f7da9789f8edef32808a537c Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Wed, 23 Jul 2008 15:52:29 +0000 Subject: [PATCH] ensure that after a channel is created, if it happened to be in 'channel alarm' state, when that alarm clears we won't generate a spurious 'alarm cleared' message (closes issue #12160) Reported by: tzafrir git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@132942 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_dahdi.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index ddba8016e3..93ead486c1 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -7586,12 +7586,25 @@ static struct dahdi_pvt *mkintf(int channel, const struct dahdi_chan_conf *conf, ioctl(tmp->subs[SUB_REAL].dfd,DAHDI_SETTONEZONE,&tmp->tonezone); #ifdef HAVE_PRI /* the dchannel is down so put the channel in alarm */ - if (tmp->pri && !pri_is_up(tmp->pri)) + if (tmp->pri && !pri_is_up(tmp->pri)) { tmp->inalarm = 1; + } #endif if ((res = get_alarms(tmp)) != DAHDI_ALARM_NONE) { tmp->inalarm = 1; handle_alarms(tmp, res); + } else { + /* yes, this looks strange... the unknown_alarm flag is only used to + control whether an 'alarm cleared' message gets generated when we + get an indication that the channel is no longer in alarm status. + however, the channel *could* be in an alarm status that we aren't + aware of (since get_alarms() only reports span alarms, not channel + alarms). setting this flag will cause any potential 'alarm cleared' + message to be suppressed, but if a real alarm occurs before that + happens, this flag will get cleared by it and the situation will + be normal. + */ + tmp->unknown_alarm = 1; } }