Ignore:
Timestamp:
Dec 13, 2017 8:16:30 AM (6 years ago)
Author:
nanang
Message:

Fixed #2076:

  • Ignore transport error on completed transaction.
  • Don't disconnect call if transport error happens on transaction that is not initial INVITE transaction.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_transaction.c

    r5682 r5714  
    20452045        lock_timer(tsx); 
    20462046        tsx->transport_err = (pj_status_t)-sent; 
    2047         tsx_cancel_timer(tsx, &tsx->timeout_timer); 
    2048         tsx_schedule_timer(tsx, &tsx->timeout_timer, &delay, 
    2049                            TRANSPORT_ERR_TIMER); 
     2047        /* Don't cancel timeout timer if tsx state is already 
     2048         * PJSIP_TSX_STATE_COMPLETED (see #2076). 
     2049         */ 
     2050        if (tsx->state < PJSIP_TSX_STATE_COMPLETED) { 
     2051            tsx_cancel_timer(tsx, &tsx->timeout_timer); 
     2052            tsx_schedule_timer(tsx, &tsx->timeout_timer, &delay, 
     2053                               TRANSPORT_ERR_TIMER); 
     2054        } 
    20502055        unlock_timer(tsx); 
    20512056   } 
     
    20782083        lock_timer(tsx); 
    20792084        tsx->transport_err = info->status; 
    2080         tsx_cancel_timer(tsx, &tsx->timeout_timer); 
    2081         tsx_schedule_timer(tsx, &tsx->timeout_timer, &delay, 
    2082                            TRANSPORT_ERR_TIMER); 
     2085        /* Don't cancel timeout timer if tsx state is already 
     2086         * PJSIP_TSX_STATE_COMPLETED (see #2076). 
     2087         */ 
     2088        if (tsx->state < PJSIP_TSX_STATE_COMPLETED) { 
     2089            tsx_cancel_timer(tsx, &tsx->timeout_timer); 
     2090            tsx_schedule_timer(tsx, &tsx->timeout_timer, &delay, 
     2091                               TRANSPORT_ERR_TIMER); 
     2092        } 
    20832093        unlock_timer(tsx); 
    20842094    } 
Note: See TracChangeset for help on using the changeset viewer.