Changeset 4787


Ignore:
Timestamp:
Mar 11, 2014 2:50:36 AM (8 years ago)
Author:
bennylp
Message:

Fixed #1746: Assertion in sip_transaction.c when ACK and retransmit timer events occur simultaneously

File:
1 edited

Legend:

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

    r4630 r4787  
    32433243 
    32443244    } else if (event->type == PJSIP_EVENT_TIMER) { 
    3245         /* Must be from timeout_timer_. */ 
    3246         pj_assert(event->body.timer.entry == &tsx->timeout_timer); 
    3247  
    3248         /* Move to Terminated state. */ 
    3249         tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, 
    3250                        PJSIP_EVENT_TIMER, &tsx->timeout_timer ); 
    3251  
    3252         /* Transaction has been destroyed. */ 
    3253         //return PJSIP_ETSXDESTROYED; 
    3254  
     3245        /* Ignore overlapped retransmit timer. 
     3246         * https://trac.pjsip.org/repos/ticket/1746 
     3247         */ 
     3248        if (event->body.timer.entry == &tsx->retransmit_timer) { 
     3249            /* Ignore */ 
     3250        } else { 
     3251            /* Must be from timeout_timer_. */ 
     3252            pj_assert(event->body.timer.entry == &tsx->timeout_timer); 
     3253 
     3254            /* Move to Terminated state. */ 
     3255            tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, 
     3256                           PJSIP_EVENT_TIMER, &tsx->timeout_timer ); 
     3257 
     3258            /* Transaction has been destroyed. */ 
     3259            //return PJSIP_ETSXDESTROYED; 
     3260        } 
    32553261    } else { 
    32563262        pj_assert(!"Unexpected event"); 
Note: See TracChangeset for help on using the changeset viewer.