]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Make sure to set a speeddials parent on creation.
authorJason Parker <jparker@digium.com>
Sat, 24 Feb 2007 02:02:53 +0000 (02:02 +0000)
committerJason Parker <jparker@digium.com>
Sat, 24 Feb 2007 02:02:53 +0000 (02:02 +0000)
Don't crash if hold is pressed when no call is active.
Don't return in places that we shouldn't..

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@56569 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_skinny.c

index b5a3f65502bc976b6e52906c7e81c0371b7d60f0..c7e4b5976982e58afed3429cc06d4da4e951a1a6 100644 (file)
@@ -2108,6 +2108,8 @@ static struct skinny_device *build_device(const char *cat, struct ast_variable *
                                                ast_copy_string(sd->label, exten, sizeof(sd->label));
                                        sd->instance = speeddialInstance++;
 
+                                       sd->parent = d;
+
                                        sd->next = d->speeddials;
                                        d->speeddials = sd;
                                }
@@ -2464,6 +2466,7 @@ static int skinny_answer(struct ast_channel *ast)
           or you won't get keypad messages in some situations. */
        transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, ast->exten, ast->exten, l->instance, sub->callid, 2);
        transmit_callstate(s, l->instance, SKINNY_CONNECTED, sub->callid);
+       transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_CONNECTED);
        transmit_displaypromptstatus(s, "Connected", 0, l->instance, sub->callid);
        return res;
 }
@@ -3083,6 +3086,9 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession
                if (skinnydebug)
                        ast_verbose("Received Stimulus: Hold(%d)\n", instance);
 
+               if (!sub)
+                       break;
+
                if (sub->onhold) {
                        skinny_unhold(sub);
                } else {
@@ -3752,7 +3758,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse
 
                        if (ast_strlen_zero(l->lastnumberdialed)) {
                                ast_log(LOG_WARNING, "Attempted redial, but no previously dialed number found.\n");
-                               return 0;
+                               break;
                        }
                        if (!ast_ignore_pattern(c->context, l->lastnumberdialed)) {
                                transmit_tone(s, SKINNY_SILENCE);
@@ -3871,7 +3877,7 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse
                                        }
                                } else if (res) {
                                        ast_log(LOG_WARNING, "Transfer attempt failed\n");
-                                       return 0;
+                                       break;
                                }
 #endif
                        } else {