ensure that hangups while incoming calls are in early state are handled properly (issue #5919)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@7451 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Kevin P. Fleming 20 years ago
parent f9bc6f8afc
commit 8452f6b494

@ -2275,6 +2275,7 @@ static int hangup_sip2cause(int cause)
/* Possible values taken from causes.h */
switch(cause) {
case 603: /* Declined */
case 403: /* Not found */
return AST_CAUSE_CALL_REJECTED;
case 404: /* Not found */
@ -2454,7 +2455,7 @@ static int sip_hangup(struct ast_channel *ast)
if (ast->hangupcause && ((res = hangup_cause2sip(ast->hangupcause)))) {
transmit_response_reliable(p, res, &p->initreq, 1);
} else
transmit_response_reliable(p, "403 Forbidden", &p->initreq, 1);
transmit_response_reliable(p, "603 Declined", &p->initreq, 1);
}
} else { /* Call is in UP state, send BYE */
if (!p->pendinginvite) {

@ -5513,6 +5513,8 @@ static int pbx_builtin_setamaflags(struct ast_channel *chan, void *data)
static int pbx_builtin_hangup(struct ast_channel *chan, void *data)
{
/* Just return non-zero and it will hang up */
if (!chan->hangupcause)
chan->hangupcause = AST_CAUSE_NORMAL_CLEARING;
return -1;
}

Loading…
Cancel
Save