summaryrefslogtreecommitdiff
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authorDamien Wedhorn <voip@facts.com.au>2010-08-07 22:07:43 +0000
committerDamien Wedhorn <voip@facts.com.au>2010-08-07 22:07:43 +0000
commitdcb865f68af2b4eb2b7ab2be80d20ea734c11d97 (patch)
treeda27f163035983fb0aaf53f6f3821b551fcc8626 /channels/chan_skinny.c
parentfc21c6f9e91af13c7379671a5bbe14ee4832fd9d (diff)
Start rtp on answer before the answer is queued
(closes issue #17770) Reported by: salecha Patches: skinny.answercrash.diff uploaded by wedhorn (license 30) Tested by: salecha Review: NA git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@281226 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r--channels/chan_skinny.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 435dccf9b..3f8d66388 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -5225,7 +5225,6 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession
if (sub && sub->outgoing) {
/* We're answering a ringing call */
- ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
transmit_callstate(d, l->instance, sub->callid, SKINNY_OFFHOOK);
transmit_activatecallplane(d, l);
transmit_stop_tone(d, l->instance, sub->callid);
@@ -5233,6 +5232,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession
transmit_displaypromptstatus(d, "Connected", 0, l->instance, sub->callid);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_CONNECTED);
start_rtp(sub);
+ ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
ast_setstate(sub->owner, AST_STATE_UP);
} else {
if (sub && sub->owner) {
@@ -5327,13 +5327,13 @@ static int handle_offhook_message(struct skinny_req *req, struct skinnysession *
if (sub && sub->outgoing) {
/* We're answering a ringing call */
- ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
transmit_callstate(d, l->instance, sub->callid, SKINNY_OFFHOOK);
transmit_activatecallplane(d, l);
transmit_stop_tone(d, l->instance, sub->callid);
transmit_callstate(d, sub->parent->instance, sub->callid, SKINNY_CONNECTED);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_CONNECTED);
start_rtp(sub);
+ ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
ast_setstate(sub->owner, AST_STATE_UP);
} else {
if (sub && sub->owner) {
@@ -6050,13 +6050,13 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse
if (sub && sub->outgoing) {
/* We're answering a ringing call */
- ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
transmit_callstate(d, l->instance, sub->callid, SKINNY_OFFHOOK);
transmit_activatecallplane(d, l);
transmit_stop_tone(d, l->instance, sub->callid);
transmit_callstate(d, sub->parent->instance, sub->callid, SKINNY_CONNECTED);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_CONNECTED);
start_rtp(sub);
+ ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
ast_setstate(sub->owner, AST_STATE_UP);
}
break;