Ignore:
Timestamp:
Feb 20, 2017 1:23:54 AM (6 years ago)
Author:
ming
Message:

Closed #1997: Add setting to retry timer upon transport disconnection failure (503)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip-ua/sip_timer.c

    r5488 r5557  
    971971 
    972972            PJ_LOG(3, (inv->pool->obj_name,  
    973                         "Receive error %d for refresh request %.*s/cseq=%d, " 
    974                         "stopping session now", st_code,  
    975                         event->body.tsx_state.tsx->method.name.slen, 
     973                        "Receive error %d for refresh request %.*s/cseq=%d", 
     974                        st_code, event->body.tsx_state.tsx->method.name.slen, 
    976975                        event->body.tsx_state.tsx->method.name.ptr, 
    977976                        event->body.tsx_state.tsx->cseq)); 
    978977 
    979             status = pjsip_inv_end_session(inv,  
     978            if (st_code == 503 && PJSIP_SESS_TIMER_RETRY_DELAY >= 0) { 
     979                /* Retry the refresh after some delay */ 
     980                pj_time_val delay = {PJSIP_SESS_TIMER_RETRY_DELAY, 0}; 
     981 
     982                PJ_LOG(3, (inv->pool->obj_name, "Scheduling to retry refresh " 
     983                           "request after %d second(s)", delay.sec)); 
     984 
     985                inv->timer->timer.id = 1; 
     986                pjsip_endpt_schedule_timer(inv->dlg->endpt, 
     987                                           &inv->timer->timer, &delay); 
     988            } else { 
     989                PJ_LOG(3, (inv->pool->obj_name, "Ending session now")); 
     990 
     991                status = pjsip_inv_end_session(inv,  
    980992                                    event->body.tsx_state.tsx->status_code,  
    981993                                    pjsip_get_status_text(st_code),  
    982994                                    &bye); 
    983995 
    984             if (status == PJ_SUCCESS && bye) 
    985                 status = pjsip_inv_send_msg(inv, bye); 
    986  
     996                if (status == PJ_SUCCESS && bye) 
     997                    status = pjsip_inv_send_msg(inv, bye); 
     998            } 
    987999        } 
    9881000    } 
Note: See TracChangeset for help on using the changeset viewer.