summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
+ }
}
}
}