summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua/sip_inv.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_inv.c')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 8fff3ded..4b361e3c 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -2953,7 +2953,9 @@ PJ_DEF(pj_status_t) pjsip_inv_send_msg( pjsip_inv_session *inv,
*/
if (tdata->msg->line.req.method.id == PJSIP_BYE_METHOD &&
inv->role == PJSIP_ROLE_UAS &&
- inv->state == PJSIP_INV_STATE_CONNECTING)
+ inv->state == PJSIP_INV_STATE_CONNECTING &&
+ inv->cause != PJSIP_SC_REQUEST_TIMEOUT &&
+ inv->cause != PJSIP_SC_TSX_TRANSPORT_ERROR)
{
if (inv->pending_bye)
pjsip_tx_data_dec_ref(inv->pending_bye);
@@ -4213,6 +4215,8 @@ static void inv_on_state_connecting( pjsip_inv_session *inv, pjsip_event *e)
pjsip_tx_data *bye;
pj_status_t status;
+ inv_set_cause(inv, tsx->status_code, &tsx->status_text);
+
/* Send BYE */
status = pjsip_dlg_create_request(inv->dlg,
pjsip_get_bye_method(),