From: Jason Parker Date: Mon, 20 Sep 2010 21:28:32 +0000 (+0000) Subject: Don't crash when parking a non-bridged call. X-Git-Tag: 1.6.2.15-rc1~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d224c4c11c1aa4410e14fbfd1497a66fb8fde2d;p=thirdparty%2Fasterisk.git Don't crash when parking a non-bridged call. (closes issue #17680) Reported by: jmhunter Patches: chan_skinny-park-v1.txt uploaded by DEA (license 3) Tested by: jmhunter, DEA git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@287642 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index dd0f7466df..dd3f963ed4 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -4894,17 +4894,21 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){ c = sub->owner; - if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { - snprintf(message, sizeof(message), "Call Parked at: %d", extout); - transmit_displaynotify(d, message, 10); + if (ast_bridged_channel(c)) { + if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { + snprintf(message, sizeof(message), "Call Parked at: %d", extout); + transmit_displaynotify(d, message, 10); + } else { + transmit_displaynotify(d, "Call Park failed", 10); + } } else { - transmit_displaynotify(d, "Call Park failed", 10); + transmit_displaynotify(d, "Call Park not available", 10); } } else { transmit_displaynotify(d, "Call Park not available", 10); } - } break; + } case STIMULUS_DND: if (skinnydebug) ast_verb(1, "Received Stimulus: DND (%d/%d)\n", instance, callreference); @@ -5984,17 +5988,21 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){ c = sub->owner; - if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { - snprintf(message, sizeof(message), "Call Parked at: %d", extout); - transmit_displaynotify(d, message, 10); + if (ast_bridged_channel(c)) { + if (!ast_masq_park_call(ast_bridged_channel(c), c, 0, &extout)) { + snprintf(message, sizeof(message), "Call Parked at: %d", extout); + transmit_displaynotify(d, message, 10); + } else { + transmit_displaynotify(d, "Call Park failed", 10); + } } else { - transmit_displaynotify(d, "Call Park failed", 10); + transmit_displaynotify(d, "Call Park not available", 10); } } else { transmit_displaynotify(d, "Call Park not available", 10); } - } break; + } case SOFTKEY_JOIN: if (skinnydebug) ast_verb(1, "Received Softkey Event: Join(%d/%d)\n", instance, callreference);