Ignore:
Timestamp:
Feb 22, 2008 11:10:17 AM (14 years ago)
Author:
bennylp
Message:

Ticket #7: Move PJSIP compile time configurations/settings (such as T1, T2 timers) to run-time (thanks Philippe Leuba)

File:
1 edited

Legend:

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

    r1594 r1818  
    131131 
    132132/* Timer timeout value constants */ 
    133 static const pj_time_val t1_timer_val = { PJSIP_T1_TIMEOUT/1000,  
    134                                           PJSIP_T1_TIMEOUT%1000 }; 
    135 static const pj_time_val t2_timer_val = { PJSIP_T2_TIMEOUT/1000,  
    136                                           PJSIP_T2_TIMEOUT%1000 }; 
    137 static const pj_time_val t4_timer_val = { PJSIP_T4_TIMEOUT/1000,  
    138                                           PJSIP_T4_TIMEOUT%1000 }; 
    139 static const pj_time_val td_timer_val = { PJSIP_TD_TIMEOUT/1000,  
    140                                           PJSIP_TD_TIMEOUT%1000 }; 
    141 static const pj_time_val timeout_timer_val = { (64*PJSIP_T1_TIMEOUT)/1000, 
    142                                                (64*PJSIP_T1_TIMEOUT)%1000 }; 
     133static pj_time_val t1_timer_val = { PJSIP_T1_TIMEOUT/1000,  
     134                                    PJSIP_T1_TIMEOUT%1000 }; 
     135static pj_time_val t2_timer_val = { PJSIP_T2_TIMEOUT/1000,  
     136                                    PJSIP_T2_TIMEOUT%1000 }; 
     137static pj_time_val t4_timer_val = { PJSIP_T4_TIMEOUT/1000,  
     138                                    PJSIP_T4_TIMEOUT%1000 }; 
     139static pj_time_val td_timer_val = { PJSIP_TD_TIMEOUT/1000,  
     140                                    PJSIP_TD_TIMEOUT%1000 }; 
     141static pj_time_val timeout_timer_val = { (64*PJSIP_T1_TIMEOUT)/1000, 
     142                                         (64*PJSIP_T1_TIMEOUT)%1000 }; 
    143143 
    144144#define TIMER_INACTIVE  0 
     
    428428    PJ_ASSERT_RETURN(mod_tsx_layer.endpt==NULL, PJ_EINVALIDOP); 
    429429 
     430    /* Initialize timer values */ 
     431    t1_timer_val.sec  = pjsip_cfg()->tsx.t1 / 1000; 
     432    t1_timer_val.msec = pjsip_cfg()->tsx.t1 % 1000; 
     433    t2_timer_val.sec  = pjsip_cfg()->tsx.t2 / 1000; 
     434    t2_timer_val.msec = pjsip_cfg()->tsx.t2 % 1000; 
     435    t4_timer_val.sec  = pjsip_cfg()->tsx.t4 / 1000; 
     436    t4_timer_val.msec = pjsip_cfg()->tsx.t4 % 1000; 
     437    td_timer_val.sec  = pjsip_cfg()->tsx.td / 1000; 
     438    td_timer_val.msec = pjsip_cfg()->tsx.td % 1000; 
     439    timeout_timer_val.sec  = (64 * pjsip_cfg()->tsx.t1) / 1000; 
     440    timeout_timer_val.msec = (64 * pjsip_cfg()->tsx.t1) % 1000; 
     441 
    430442    /* Initialize TLS ID for transaction lock. */ 
    431443    status = pj_thread_local_alloc(&pjsip_tsx_lock_tls_id); 
     
    453465 
    454466    /* Create hash table. */ 
    455     mod_tsx_layer.htable = pj_hash_create( pool, PJSIP_MAX_TSX_COUNT ); 
     467    mod_tsx_layer.htable = pj_hash_create( pool, pjsip_cfg()->tsx.max_count ); 
    456468    if (!mod_tsx_layer.htable) { 
    457469        pjsip_endpt_release_pool(endpt, pool); 
     
    18681880{ 
    18691881    pj_time_val timeout; 
    1870     int msec_time; 
     1882    unsigned msec_time; 
    18711883 
    18721884    pj_assert((tsx->transport_flag & TSX_HAS_PENDING_TRANSPORT) == 0); 
    18731885 
    18741886    if (tsx->role==PJSIP_ROLE_UAC && tsx->status_code >= 100) 
    1875         msec_time = PJSIP_T2_TIMEOUT; 
     1887        msec_time = pjsip_cfg()->tsx.t2; 
    18761888    else 
    1877         msec_time = (1 << (tsx->retransmit_count)) * PJSIP_T1_TIMEOUT; 
     1889        msec_time = (1 << (tsx->retransmit_count)) * pjsip_cfg()->tsx.t1; 
    18781890 
    18791891    if (tsx->role == PJSIP_ROLE_UAC) { 
    18801892        pj_assert(tsx->status_code < 200); 
    18811893        /* Retransmission for non-INVITE transaction caps-off at T2 */ 
    1882         if (msec_time>PJSIP_T2_TIMEOUT && tsx->method.id!=PJSIP_INVITE_METHOD) 
    1883             msec_time = PJSIP_T2_TIMEOUT; 
     1894        if (msec_time > pjsip_cfg()->tsx.t2 &&  
     1895            tsx->method.id != PJSIP_INVITE_METHOD) 
     1896        { 
     1897            msec_time = pjsip_cfg()->tsx.t2; 
     1898        } 
    18841899    } else { 
    18851900        /* Retransmission of INVITE final response also caps-off at T2 */ 
    18861901        pj_assert(tsx->status_code >= 200); 
    1887         if (msec_time>PJSIP_T2_TIMEOUT) 
    1888             msec_time = PJSIP_T2_TIMEOUT; 
     1902        if (msec_time > pjsip_cfg()->tsx.t2) 
     1903            msec_time = pjsip_cfg()->tsx.t2; 
    18891904    } 
    18901905 
Note: See TracChangeset for help on using the changeset viewer.