Changeset 4259


Ignore:
Timestamp:
Sep 18, 2012 9:35:54 AM (12 years ago)
Author:
ming
Message:

Re #1583: Fixed error propagation that caused the disconnection of the transport

Location:
pjproject/trunk/pjsip/src/pjsip
Files:
2 edited

Legend:

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

    r4258 r4259  
    102102    /* Keep-alive timer. */ 
    103103    pj_timer_entry           ka_timer; 
     104    pj_timer_entry           connect_timer; 
    104105    pj_time_val              last_activity; 
    105106    pjsip_tx_data_op_key     ka_op_key; 
     
    524525 
    525526/* Callback when connect completes */ 
     527static pj_bool_t on_connect_complete_real(pj_activesock_t *asock, 
     528                                     pj_status_t status); 
     529 
     530static void tcp_connect_timer(pj_timer_heap_t *th, pj_timer_entry *e) 
     531{ 
     532    struct tcp_transport *tcp = (struct tcp_transport*) e->user_data; 
     533 
     534    e->id = 0; 
     535    on_connect_complete_real(tcp->asock, PJ_SUCCESS); 
     536} 
     537 
    526538static pj_bool_t on_connect_complete(pj_activesock_t *asock, 
    527                                      pj_status_t status); 
     539                                     pj_status_t status) 
     540{ 
     541    struct tcp_transport *tcp; 
     542    pj_time_val delay = {35, 0}; 
     543 
     544    tcp = (struct tcp_transport*) pj_activesock_get_user_data(asock); 
     545 
     546    if (status != PJ_SUCCESS) { 
     547        return on_connect_complete_real(asock, status); 
     548    } 
     549 
     550    PJ_LOG(3,(tcp->base.obj_name, "Delaying CONNECT notification")); 
     551    pj_timer_entry_init(&tcp->connect_timer, 1, (void*)tcp, &tcp_connect_timer); 
     552    pjsip_endpt_schedule_timer(tcp->base.endpt, &tcp->connect_timer, 
     553                               &delay); 
     554 
     555    return PJ_TRUE; 
     556} 
    528557 
    529558/* TCP keep-alive timer callback */ 
     
    671700            PJ_TIME_VAL_GT(now, pending_tx->timeout)) 
    672701        { 
    673             on_data_sent(tcp->asock, op_key, -PJ_ETIMEDOUT); 
    674702            continue; 
    675703        } 
     
    12861314 * Callback from ioqueue when asynchronous connect() operation completes. 
    12871315 */ 
    1288 static pj_bool_t on_connect_complete(pj_activesock_t *asock, 
     1316static pj_bool_t on_connect_complete_real(pj_activesock_t *asock, 
    12891317                                     pj_status_t status) 
    12901318{ 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport_tls.c

    r4258 r4259  
    669669            PJ_TIME_VAL_GT(now, pending_tx->timeout)) 
    670670        { 
    671             on_data_sent(tls->ssock, op_key, -PJ_ETIMEDOUT); 
    672671            continue; 
    673672        } 
Note: See TracChangeset for help on using the changeset viewer.