Fixed ACK receipt not processed by invite session

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@170 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
Benny Prijono 2006-02-09 14:14:21 +00:00
parent 632ce714c0
commit 5eff043644
1 changed files with 11 additions and 2 deletions

View File

@ -198,10 +198,19 @@ static pj_bool_t mod_inv_on_rx_request(pjsip_rx_data *rdata)
* move state to CONFIRMED.
*/
if (method->id == PJSIP_ACK_METHOD && inv &&
inv->state == PJSIP_INV_STATE_CONFIRMED)
inv->state != PJSIP_INV_STATE_CONFIRMED)
{
pjsip_event event;
/* Terminate INVITE transaction, if it's still present. */
if (inv->invite_tsx &&
inv->invite_tsx->state <= PJSIP_TSX_STATE_COMPLETED)
{
pjsip_tsx_terminate(inv->invite_tsx,
inv->invite_tsx->status_code);
inv->invite_tsx = NULL;
}
PJSIP_EVENT_INIT_RX_MSG(event, rdata);
inv_set_state(inv, PJSIP_INV_STATE_CONFIRMED, &event);
}
@ -1561,6 +1570,7 @@ static void inv_on_state_calling( pjsip_inv_session *inv, pjsip_event *e)
pj_assert(e->body.tsx_state.type == PJSIP_EVENT_RX_MSG);
inv_send_ack(inv, e->body.tsx_state.src.rdata);
inv_set_state(inv, PJSIP_INV_STATE_CONFIRMED, e);
} else {
@ -1700,7 +1710,6 @@ static void inv_on_state_early( pjsip_inv_session *inv, pjsip_event *e)
pj_assert(e->body.tsx_state.type == PJSIP_EVENT_RX_MSG);
inv_send_ack(inv, e->body.tsx_state.src.rdata);
inv_set_state(inv, PJSIP_INV_STATE_CONFIRMED, e);
}