summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-05-22 12:21:40 +0000
committerBenny Prijono <bennylp@teluu.com>2007-05-22 12:21:40 +0000
commit3e51d83ffd41ea71ef0d1336b9c86b4f74192e43 (patch)
tree1de41f219e15f3df5ee683c78d4c67cbcba2c975
parent2d070d8d5de58091274a7c096b44982059ebae98 (diff)
Fixed ticket #284: Failed scenarios with CANCEL requests (thanks Esbjörn Dominique)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1287 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/include/pjsip-ua/sip_inv.h1
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/pjsip/include/pjsip-ua/sip_inv.h b/pjsip/include/pjsip-ua/sip_inv.h
index 8023c8ec..7ea1f27d 100644
--- a/pjsip/include/pjsip-ua/sip_inv.h
+++ b/pjsip/include/pjsip-ua/sip_inv.h
@@ -223,6 +223,7 @@ struct pjsip_inv_session
char obj_name[PJ_MAX_OBJ_NAME]; /**< Log identification */
pj_pool_t *pool; /**< Dialog's pool. */
pjsip_inv_state state; /**< Invite sess state. */
+ pj_bool_t cancelling; /**< CANCEL sent? */
pjsip_status_code cause; /**< Disconnect cause. */
pj_str_t cause_text; /**< Cause text. */
pj_bool_t notify; /**< Internal. */
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 44d073b4..3e4e546b 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -1560,6 +1560,7 @@ PJ_DEF(pj_status_t) pjsip_inv_end_session( pjsip_inv_session *inv,
/* Done */
+ inv->cancelling = PJ_TRUE;
*p_tdata = tdata;
return PJ_SUCCESS;
@@ -1950,7 +1951,9 @@ static void inv_on_state_calling( pjsip_inv_session *inv, pjsip_event *e)
inv_check_sdp_in_incoming_msg(inv, tsx,
e->body.tsx_state.src.rdata);
- } else if (tsx->status_code==401 || tsx->status_code==407) {
+ } else if ((tsx->status_code==401 || tsx->status_code==407) &&
+ !inv->cancelling)
+ {
/* Handle authentication failure:
* Resend the request with Authorization header.