diff options
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 6 |
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(), |