Ignore:
Timestamp:
Feb 22, 2008 9:56:27 AM (14 years ago)
Author:
bennylp
Message:

Ticket #491: Crash in TCP/TLS transport when the listener is destroyed

File:
1 edited

Legend:

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

    r1602 r1817  
    104104    pjsip_transport          base; 
    105105    pj_bool_t                is_server; 
     106 
     107    /* Do not save listener instance in the transport, because 
     108     * listener might be destroyed during transport's lifetime. 
     109     * See http://trac.pjsip.org/repos/ticket/491 
    106110    struct tcp_listener     *listener; 
     111     */ 
     112 
    107113    pj_bool_t                is_registered; 
    108114    pj_bool_t                is_closing; 
     
    525531    tcp->sock = sock; 
    526532    tcp->is_server = is_server; 
    527     tcp->listener = listener; 
     533    /*tcp->listener = listener;*/ 
    528534    pj_list_init(&tcp->delayed_list); 
    529535    tcp->base.pool = pool; 
     
    674680    /* Stop keep-alive timer. */ 
    675681    if (tcp->ka_timer.id) { 
    676         pjsip_endpt_cancel_timer(tcp->listener->endpt, &tcp->ka_timer); 
     682        pjsip_endpt_cancel_timer(tcp->base.endpt, &tcp->ka_timer); 
    677683        tcp->ka_timer.id = PJ_FALSE; 
    678684    } 
     
    757763 
    758764    /* Init rdata */ 
    759     pool = pjsip_endpt_create_pool(tcp->listener->endpt, 
     765    pool = pjsip_endpt_create_pool(tcp->base.endpt, 
    760766                                   "rtd%p", 
    761767                                   PJSIP_POOL_RDATA_LEN, 
     
    11951201    /* Stop keep-alive timer. */ 
    11961202    if (tcp->ka_timer.id) { 
    1197         pjsip_endpt_cancel_timer(tcp->listener->endpt, &tcp->ka_timer); 
     1203        pjsip_endpt_cancel_timer(tcp->base.endpt, &tcp->ka_timer); 
    11981204        tcp->ka_timer.id = PJ_FALSE; 
    11991205    } 
     
    14351441    if (PJSIP_TCP_KEEP_ALIVE_INTERVAL) { 
    14361442        pj_time_val delay = { PJSIP_TCP_KEEP_ALIVE_INTERVAL, 0 }; 
    1437         pjsip_endpt_schedule_timer(tcp->listener->endpt, &tcp->ka_timer,  
     1443        pjsip_endpt_schedule_timer(tcp->base.endpt, &tcp->ka_timer,  
    14381444                                   &delay); 
    14391445        tcp->ka_timer.id = PJ_TRUE; 
     
    14631469        delay.msec = 0; 
    14641470 
    1465         pjsip_endpt_schedule_timer(tcp->listener->endpt, &tcp->ka_timer,  
     1471        pjsip_endpt_schedule_timer(tcp->base.endpt, &tcp->ka_timer,  
    14661472                                   &delay); 
    14671473        tcp->ka_timer.id = PJ_TRUE; 
     
    14901496    delay.msec = 0; 
    14911497 
    1492     pjsip_endpt_schedule_timer(tcp->listener->endpt, &tcp->ka_timer,  
     1498    pjsip_endpt_schedule_timer(tcp->base.endpt, &tcp->ka_timer,  
    14931499                               &delay); 
    14941500    tcp->ka_timer.id = PJ_TRUE; 
Note: See TracChangeset for help on using the changeset viewer.