dect
/
asterisk
Archived
13
0
Fork 0

Fix an issue with requesting a T38 reinvite before the call is answered.

The code responsible for sending the T38 reinvite did not check if an INVITE was
already being handled. This caused things to get confused and the call to fail.
The code now defers sending the T38 reinvite until the current INVITE is done being
handled.

(issue AST-191)


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@182022 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
file 2009-03-13 17:25:09 +00:00
parent b85c11f49a
commit b1e7fa8737
1 changed files with 6 additions and 2 deletions

View File

@ -6081,7 +6081,11 @@ static int sip_indicate(struct ast_channel *ast, int condition, const void *data
case AST_T38_REQUEST_NEGOTIATE: /* Request T38 */
if (p->t38.state != T38_ENABLED) {
change_t38_state(p, T38_LOCAL_REINVITE);
transmit_reinvite_with_sdp(p, TRUE, FALSE);
if (!p->pendinginvite) {
transmit_reinvite_with_sdp(p, TRUE, FALSE);
} else if (!ast_test_flag(&p->flags[0], SIP_PENDINGBYE)) {
ast_set_flag(&p->flags[0], SIP_NEEDREINVITE);
}
}
break;
case AST_T38_TERMINATED:
@ -16491,7 +16495,7 @@ static void check_pendings(struct sip_pvt *p)
} else {
ast_debug(2, "Sending pending reinvite on '%s'\n", p->callid);
/* Didn't get to reinvite yet, so do it now */
transmit_reinvite_with_sdp(p, FALSE, FALSE);
transmit_reinvite_with_sdp(p, (p->t38.state == T38_LOCAL_REINVITE ? TRUE : FALSE), FALSE);
ast_clear_flag(&p->flags[0], SIP_NEEDREINVITE);
}
}