summaryrefslogtreecommitdiff
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authorJason Parker <jparker@digium.com>2007-02-24 02:04:34 +0000
committerJason Parker <jparker@digium.com>2007-02-24 02:04:34 +0000
commit639aee2ec713de64a565b944333a427ef44ab699 (patch)
treecbb5ff57058cd5efa55eea42e95abf1f549d9eff /channels/chan_skinny.c
parente6bd19bfa5ff99c84cae8df4063e2de908c1eda0 (diff)
Merged revisions 56569 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r56569 | qwell | 2007-02-23 20:02:53 -0600 (Fri, 23 Feb 2007) | 4 lines Make sure to set a speeddials parent on creation. Don't crash if hold is pressed when no call is active. Don't return in places that we shouldn't.. Update softkey map when call is connected ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@56574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r--channels/chan_skinny.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 9de13427e..fb658f76e 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;
}
@@ -2466,6 +2468,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;
}
@@ -3086,6 +3089,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 {
@@ -3757,7 +3763,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);
@@ -3876,7 +3882,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 {