diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-04-04 11:06:34 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-04-04 11:06:34 +0000 |
commit | 9da5ebeca867322da5ed41e4e9fb3218caf5ab41 (patch) | |
tree | fb43d750f33df9df7d6fb63e568d6a3522d312c1 /pjsip/src/pjsip-ua | |
parent | e7a65ea2ca8a296a5134dc61b339597763e1dffd (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.c | 16 |
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; |