summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua/sip_inv.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_inv.c')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 54acb0a2..593a914e 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -176,7 +176,7 @@ static pj_status_t inv_send_ack(pjsip_inv_session *inv, pjsip_rx_data *rdata)
return status;
}
- status = pjsip_dlg_send_request(inv->dlg, tdata, NULL);
+ status = pjsip_dlg_send_request(inv->dlg, tdata, -1, NULL);
if (status != PJ_SUCCESS) {
/* Better luck next time */
pj_assert(!"Unable to send ACK!");
@@ -1580,17 +1580,19 @@ PJ_DEF(pj_status_t) pjsip_inv_send_msg( pjsip_inv_session *inv,
pjsip_tx_data_get_info(tdata)));
if (tdata->msg->type == PJSIP_REQUEST_MSG) {
- pjsip_transaction *tsx;
struct tsx_inv_data *tsx_inv_data;
- status = pjsip_dlg_send_request(inv->dlg, tdata, &tsx);
- if (status != PJ_SUCCESS)
- return status;
+ pjsip_dlg_inc_lock(inv->dlg);
- tsx_inv_data = pj_pool_zalloc(tsx->pool, sizeof(struct tsx_inv_data));
+ tsx_inv_data = pj_pool_zalloc(inv->pool, sizeof(struct tsx_inv_data));
tsx_inv_data->inv = inv;
- tsx->mod_data[mod_inv.mod.id] = tsx_inv_data;
+ pjsip_dlg_dec_lock(inv->dlg);
+
+ status = pjsip_dlg_send_request(inv->dlg, tdata, mod_inv.mod.id,
+ tsx_inv_data);
+ if (status != PJ_SUCCESS)
+ return status;
} else {
pjsip_cseq_hdr *cseq;