From 362cd9fea6aa2c09b301f249cb70712ebc44cca9 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Fri, 5 Oct 2007 06:41:04 +0000 Subject: Related to ticket #95: bug in TLS transport: keep-alive timer is not cancelled when transport is destroyed git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1476 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip/sip_transport_tcp.c | 6 ++++++ pjsip/src/pjsip/sip_transport_tls_ossl.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) (limited to 'pjsip') diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c index 1bf0a030..da3c2a25 100644 --- a/pjsip/src/pjsip/sip_transport_tcp.c +++ b/pjsip/src/pjsip/sip_transport_tcp.c @@ -663,6 +663,12 @@ static pj_status_t tcp_destroy(pjsip_transport *transport, /* Mark transport as closing */ tcp->is_closing = PJ_TRUE; + /* Stop keep-alive timer. */ + if (tcp->ka_timer.id) { + pjsip_endpt_cancel_timer(tcp->listener->endpt, &tcp->ka_timer); + tcp->ka_timer.id = PJ_FALSE; + } + /* Cancel all delayed transmits */ while (!pj_list_empty(&tcp->delayed_list)) { struct delayed_tdata *pending_tx; diff --git a/pjsip/src/pjsip/sip_transport_tls_ossl.c b/pjsip/src/pjsip/sip_transport_tls_ossl.c index 3998b6d8..db159148 100644 --- a/pjsip/src/pjsip/sip_transport_tls_ossl.c +++ b/pjsip/src/pjsip/sip_transport_tls_ossl.c @@ -1397,6 +1397,12 @@ static pj_status_t tls_destroy(pjsip_transport *transport, /* Mark transport as closing */ ++tls->is_closing; + /* Stop keep-alive timer. */ + if (tls->ka_timer.id) { + pjsip_endpt_cancel_timer(tls->listener->endpt, &tls->ka_timer); + tls->ka_timer.id = PJ_FALSE; + } + /* Cancel all delayed transmits */ while (!pj_list_empty(&tls->delayed_list)) { struct delayed_tdata *pending_tx; @@ -1958,6 +1964,12 @@ static pj_status_t tls_shutdown(pjsip_transport *transport) SSL_shutdown(tls->ssl); tls->ssl_shutdown_called = PJ_TRUE; + /* Stop keep-alive timer. */ + if (tls->ka_timer.id) { + pjsip_endpt_cancel_timer(tls->listener->endpt, &tls->ka_timer); + tls->ka_timer.id = PJ_FALSE; + } + PJ_LOG(4,(transport->obj_name, "TLS transport shutdown")); } -- cgit v1.2.3