diff options
author | Benny Prijono <bennylp@teluu.com> | 2014-02-21 07:24:18 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2014-02-21 07:24:18 +0000 |
commit | 8b46d5f4bc1803eca95013c4da193a7b8cee348c (patch) | |
tree | 4a7cd1559c1912d3cf8bae120ad7b94fce8963d1 | |
parent | ffa460e4438968b000f4011b62b2229087aff4ce (diff) |
More #1712: Handle case when 200/OK is not ACKed and inv needs to send BYE. In this case, ACK will never be received so don't wait for it. Similar treatment for transport error
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4754 74dad513-b988-da41-8d7b-12977e46ad98
-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(), |