From: Michiel van Baak Date: Sun, 25 Jan 2009 16:50:53 +0000 (+0000) Subject: dont segfault when a MWI event occurs on a line without a registered device X-Git-Tag: 1.6.2.0-beta1~363 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=630fe3ccb8ed96ba1af14a1259dbb0bebe1cee78;p=thirdparty%2Fasterisk.git dont segfault when a MWI event occurs on a line without a registered device git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@171081 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index cacc776b0b..654077e8a0 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -2513,35 +2513,37 @@ static void mwi_event_cb(const struct ast_event *event, void *userdata) { struct skinny_line *l = userdata; struct skinny_device *d = l->device; - struct skinnysession *s = d->session; - struct skinny_line *l2; - int new_msgs = 0; - int dev_msgs = 0; - - if (s) { - if (event) { - l->newmsgs = ast_event_get_ie_uint(event, AST_EVENT_IE_NEWMSGS); - } + if (d) { + struct skinnysession *s = d->session; + struct skinny_line *l2; + int new_msgs = 0; + int dev_msgs = 0; + + if (s) { + if (event) { + l->newmsgs = ast_event_get_ie_uint(event, AST_EVENT_IE_NEWMSGS); + } - if (l->newmsgs) { - transmit_lamp_indication(d, STIMULUS_VOICEMAIL, l->instance, l->mwiblink?SKINNY_LAMP_BLINK:SKINNY_LAMP_ON); - } else { - transmit_lamp_indication(d, STIMULUS_VOICEMAIL, l->instance, SKINNY_LAMP_OFF); - } + if (l->newmsgs) { + transmit_lamp_indication(d, STIMULUS_VOICEMAIL, l->instance, l->mwiblink?SKINNY_LAMP_BLINK:SKINNY_LAMP_ON); + } else { + transmit_lamp_indication(d, STIMULUS_VOICEMAIL, l->instance, SKINNY_LAMP_OFF); + } - /* find out wether the device lamp should be on or off */ - AST_LIST_TRAVERSE(&d->lines, l2, list) { - if (l2->newmsgs) { - dev_msgs++; + /* find out wether the device lamp should be on or off */ + AST_LIST_TRAVERSE(&d->lines, l2, list) { + if (l2->newmsgs) { + dev_msgs++; + } } - } - if (dev_msgs) { - transmit_lamp_indication(d, STIMULUS_VOICEMAIL, 0, d->mwiblink?SKINNY_LAMP_BLINK:SKINNY_LAMP_ON); - } else { - transmit_lamp_indication(d, STIMULUS_VOICEMAIL, 0, SKINNY_LAMP_OFF); + if (dev_msgs) { + transmit_lamp_indication(d, STIMULUS_VOICEMAIL, 0, d->mwiblink?SKINNY_LAMP_BLINK:SKINNY_LAMP_ON); + } else { + transmit_lamp_indication(d, STIMULUS_VOICEMAIL, 0, SKINNY_LAMP_OFF); + } + ast_verb(3, "Skinny mwi_event_cb found %d new messages\n", new_msgs); } - ast_verb(3, "Skinny mwi_event_cb found %d new messages\n", new_msgs); } }