summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2015-06-11 08:39:42 +0000
committerRiza Sulistyo <riza@teluu.com>2015-06-11 08:39:42 +0000
commitc41c5316a7be9c2c674f82b543f2e5326e62316f (patch)
tree9827a2031c48ebcdfca213f2aa4be469dac70b30 /pjsip
parentaaa478efe114f6a1d4e12432be9808ac1b7090c2 (diff)
Re #1857: (Fix) BYE is not sent when 200/OK is not ACK-ed
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5104 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 8fdde222..3993c255 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -291,7 +291,7 @@ static void inv_set_state(pjsip_inv_session *inv, pjsip_inv_state state,
static void inv_set_cause(pjsip_inv_session *inv, int cause_code,
const pj_str_t *cause_text)
{
- if (cause_code > inv->cause) {
+ if ((cause_code > inv->cause) || inv->pending_bye) {
inv->cause = (pjsip_status_code) cause_code;
if (cause_text)
pj_strdup(inv->pool, &inv->cause_text, cause_text);
@@ -4506,6 +4506,11 @@ static void inv_on_state_connecting( pjsip_inv_session *inv, pjsip_event *e)
-1, &bye);
if (status == PJ_SUCCESS) {
pjsip_inv_send_msg(inv, bye);
+
+ if (inv->pending_bye) {
+ pjsip_tx_data_dec_ref(inv->pending_bye);
+ inv->pending_bye = NULL;
+ }
}
}
}