]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 287642 via svnmerge from
authorJason Parker <jparker@digium.com>
Mon, 20 Sep 2010 21:29:46 +0000 (21:29 +0000)
committerJason Parker <jparker@digium.com>
Mon, 20 Sep 2010 21:29:46 +0000 (21:29 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r287642 | qwell | 2010-09-20 16:28:32 -0500 (Mon, 20 Sep 2010) | 8 lines

  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.8@287643 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_skinny.c

index 4edbc4ab973641e96316d192e11f43fb63397c16..b3a1741fb79723fbadb4c4ce0dbf6196dd83a45e 100644 (file)
@@ -5128,17 +5128,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);
@@ -6089,17 +6093,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);