diff options
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r-- | channels/chan_skinny.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index b5a3f6550..c7e4b5976 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -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 { |