summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-04-04 11:06:34 +0000
committerBenny Prijono <bennylp@teluu.com>2006-04-04 11:06:34 +0000
commit9da5ebeca867322da5ed41e4e9fb3218caf5ab41 (patch)
treefb43d750f33df9df7d6fb63e568d6a3522d312c1 /pjsip/src/pjsip-ua
parente7a65ea2ca8a296a5134dc61b339597763e1dffd (diff)
Changed pjsip_dlg_send_request() API to NOT return transaction as it is not safe against race condition
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@376 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua')
-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;