diff options
author | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-01-25 16:50:53 +0000 |
---|---|---|
committer | mvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-01-25 16:50:53 +0000 |
commit | ff9d78a3228cfdcac6c92ce93d137e2a87747ebd (patch) | |
tree | 928b47d0d91f086fd62919425d0c61ec9364603e /channels | |
parent | f079c0a57fe157dcbaa0249935d2b6f4faf3a59e (diff) |
dont segfault when a MWI event occurs on a line without a registered device
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@171081 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_skinny.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index cacc776b0..654077e8a 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); } } |