summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlle Johansson <oej@edvina.net>2006-09-18 19:56:44 +0000
committerOlle Johansson <oej@edvina.net>2006-09-18 19:56:44 +0000
commitb93280947a1f431221a315078b5e3b6df7c8c9ea (patch)
tree7331f228d736f3da2c088a1241dd26dcb156b4a9
parent58ca54e68ac7a3473cdb8ee7587fa9bc0bda2bc0 (diff)
Issue #7351 - sending CANCEL when the call at some point has been in UP state is wrong.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43214 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--channels/chan_sip.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5314f498d..f59c3ba62 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -3201,7 +3201,7 @@ static int sip_hangup(struct ast_channel *ast)
return 0;
}
/* If the call is not UP, we need to send CANCEL instead of BYE */
- if (ast->_state != AST_STATE_UP) {
+ if (ast->_state == AST_STATE_RING || ast->_state == AST_STATE_RINGING) {
needcancel = TRUE;
if (option_debug > 3)
ast_log(LOG_DEBUG, "Hanging up channel in state %s (not UP)\n", ast_state2str(ast->_state));
@@ -14172,6 +14172,7 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc
}
check_pendings(p);
}
+ /* Got an ACK that we did not match. Ignore silently */
if (!p->lastinvite && ast_strlen_zero(p->randdata))
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
break;