diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-12 20:42:08 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-12 20:42:08 +0000 |
commit | 12e8c6e39212b06bcbe0dad55d4adece25112c25 (patch) | |
tree | 28c409fef38d4f43126bbeae813bd68665666089 | |
parent | 31e4dbdd2f025607210fcf81e867f36110b70048 (diff) |
This patch resolves 10143; thanks to irroot for the patch; looked acceptable. Let the community decide if it messes things up
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@74955 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_sip.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f0a0c047c..8523888cf 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -13201,7 +13201,8 @@ static int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, in ast_mutex_unlock(&p->refer->refer_call->lock); /* Make sure that the masq does not free our PVT for the old call */ - ast_set_flag(&p->refer->refer_call->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Delay hangup */ + if (! earlyreplace && ! oneleggedreplace ) + ast_set_flag(&p->refer->refer_call->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Delay hangup */ /* Prepare the masquerade - if this does not happen, we will be gone */ if(ast_channel_masquerade(replacecall, c)) @@ -13418,7 +13419,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int error = 1; } - if (!error && p->refer->refer_call->owner->_state != AST_STATE_RING && p->refer->refer_call->owner->_state != AST_STATE_UP ) { + if (!error && p->refer->refer_call->owner->_state != AST_STATE_RINGING && p->refer->refer_call->owner->_state != AST_STATE_RING && p->refer->refer_call->owner->_state != AST_STATE_UP ) { ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-ringing or active call id (%s)!\n", replace_id); transmit_response(p, "603 Declined (Replaces)", req); error = 1; |