summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua/sip_reg.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-05-26 12:17:46 +0000
committerBenny Prijono <bennylp@teluu.com>2006-05-26 12:17:46 +0000
commitc01fdece34cb0eac0c1fdbafb5c1cc242ec01933 (patch)
treee48d300bf63489fd01dd66db8b75b8b49681be6d /pjsip/src/pjsip-ua/sip_reg.c
parentb2627727779145512c9c414cb532cb7e18133ddd (diff)
First stage in pjsua library re-arrangements towards creating an easy to use high level API
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@476 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_reg.c')
-rw-r--r--pjsip/src/pjsip-ua/sip_reg.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/pjsip/src/pjsip-ua/sip_reg.c b/pjsip/src/pjsip-ua/sip_reg.c
index 84fb57dd..6272e34c 100644
--- a/pjsip/src/pjsip-ua/sip_reg.c
+++ b/pjsip/src/pjsip-ua/sip_reg.c
@@ -484,6 +484,7 @@ static void tsx_callback(void *token, pjsip_event *event)
pjsip_transaction *tsx = event->body.tsx_state.tsx;
/* Decrement pending transaction counter. */
+ pj_assert(regc->pending_tsx > 0);
--regc->pending_tsx;
/* If registration data has been deleted by user then remove registration
@@ -609,10 +610,13 @@ PJ_DEF(pj_status_t) pjsip_regc_send(pjsip_regc *regc, pjsip_tx_data *tdata)
cseq_hdr = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL);
cseq_hdr->cseq = cseq;
- /* Send. */
+ /* Increment pending transaction first, since transaction callback
+ * may be called even before send_request() returns!
+ */
+ ++regc->pending_tsx;
status = pjsip_endpt_send_request(regc->endpt, tdata, -1, regc, &tsx_callback);
- if (status==PJ_SUCCESS)
- ++regc->pending_tsx;
+ if (status!=PJ_SUCCESS)
+ --regc->pending_tsx;
return status;
}