Ignore:
Timestamp:
Feb 27, 2013 11:57:43 AM (11 years ago)
Author:
ming
Message:

Re #1583: Backported to 1.x

Location:
pjproject/branches/1.x
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/1.x

  • pjproject/branches/1.x/pjsip/src/pjsip/sip_transport_tls.c

    r4376 r4393  
    7272    PJ_DECL_LIST_MEMBER(struct delayed_tdata); 
    7373    pjsip_tx_data_op_key    *tdata_op_key; 
     74    pj_time_val              timeout; 
    7475}; 
    7576 
     
    648649static void tls_flush_pending_tx(struct tls_transport *tls) 
    649650{ 
     651    pj_time_val now; 
     652 
     653    pj_gettickcount(&now); 
    650654    pj_lock_acquire(tls->base.lock); 
    651655    while (!pj_list_empty(&tls->delayed_list)) { 
     
    661665        tdata = pending_tx->tdata_op_key->tdata; 
    662666        op_key = (pj_ioqueue_op_key_t*)pending_tx->tdata_op_key; 
     667 
     668        if (pending_tx->timeout.sec > 0 && 
     669            PJ_TIME_VAL_GT(now, pending_tx->timeout)) 
     670        { 
     671            continue; 
     672        } 
    663673 
    664674        /* send! */ 
     
    12181228             * connect() is still in progress. Put the transmit data to 
    12191229             * the delayed list. 
     1230             * Starting from #1583 (https://trac.pjsip.org/repos/ticket/1583), 
     1231             * we also add timeout value for the transmit data. When the 
     1232             * connect() is completed, the timeout value will be checked to 
     1233             * determine whether the transmit data needs to be sent. 
    12201234             */ 
    1221             delayed_tdata = PJ_POOL_ALLOC_T(tdata->pool,  
    1222                                             struct delayed_tdata); 
     1235            delayed_tdata = PJ_POOL_ZALLOC_T(tdata->pool,  
     1236                                             struct delayed_tdata); 
    12231237            delayed_tdata->tdata_op_key = &tdata->op_key; 
     1238            if (tdata->msg && tdata->msg->type == PJSIP_REQUEST_MSG) { 
     1239                pj_gettickcount(&delayed_tdata->timeout); 
     1240                delayed_tdata->timeout.msec += pjsip_cfg()->tsx.td; 
     1241                pj_time_val_normalize(&delayed_tdata->timeout); 
     1242            } 
    12241243 
    12251244            pj_list_push_back(&tls->delayed_list, delayed_tdata); 
Note: See TracChangeset for help on using the changeset viewer.