summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2012-06-06 07:24:08 +0000
committerBenny Prijono <bennylp@teluu.com>2012-06-06 07:24:08 +0000
commit821d4544260946a004f9cedfa340716185b92b07 (patch)
tree8583f7e89c9b27c1a312ea8daa6e778b5337cdd3 /pjsip/src/pjsip-ua
parent610cb1615fa90db529f0f7b237782010769d03f1 (diff)
Fixed #1530: Sending ACK is reported with wrong pjsip_event info
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4156 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 41e3291f..d14081b9 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -362,6 +362,7 @@ static const pjmedia_sdp_session *inv_has_pending_answer(pjsip_inv_session *inv,
static pj_status_t inv_send_ack(pjsip_inv_session *inv, pjsip_event *e)
{
pjsip_rx_data *rdata;
+ pjsip_event ack_e;
pj_status_t status;
if (e->type == PJSIP_EVENT_TSX_STATE)
@@ -397,8 +398,12 @@ static pj_status_t inv_send_ack(pjsip_inv_session *inv, pjsip_event *e)
} else {
status = pjsip_inv_create_ack(inv, rdata->msg_info.cseq->cseq,
&inv->last_ack);
+ if (status != PJ_SUCCESS)
+ return status;
}
+ PJSIP_EVENT_INIT_TX_MSG(ack_e, inv->last_ack);
+
/* Send ACK */
status = pjsip_dlg_send_request(inv->dlg, inv->last_ack, -1, NULL);
if (status != PJ_SUCCESS) {
@@ -413,7 +418,7 @@ static pj_status_t inv_send_ack(pjsip_inv_session *inv, pjsip_event *e)
* (this may have been a late 200/OK response.
*/
if (inv->state < PJSIP_INV_STATE_CONFIRMED) {
- inv_set_state(inv, PJSIP_INV_STATE_CONFIRMED, e);
+ inv_set_state(inv, PJSIP_INV_STATE_CONFIRMED, &ack_e);
}
return PJ_SUCCESS;