From c01fdece34cb0eac0c1fdbafb5c1cc242ec01933 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 26 May 2006 12:17:46 +0000 Subject: 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 --- pjsip/src/pjsip-ua/sip_reg.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'pjsip/src/pjsip-ua/sip_reg.c') 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; } -- cgit v1.2.3