From 7f1a80d11fd00b3396b62aa2189b4774f150e8ce Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandresavard@alexandresavard-desktop.(none)> Date: Thu, 4 Feb 2010 17:15:27 -0500 Subject: [PATCH] [#2722] Create tls listener only if required --- sflphone-common/src/sip/sipvoiplink.cpp | 23 ++++++++++++++++++++--- sflphone-common/src/sip/sipvoiplink.h | 8 +++++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index f142322231..d39542037c 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -79,8 +79,8 @@ struct result { pjsip_server_addresses servers; }; -pjsip_transport *_localUDPTransport; -pjsip_tpfactory *_localTlsListener; +pjsip_transport *_localUDPTransport = NULL; +pjsip_tpfactory *_localTlsListener = NULL; const pj_str_t STR_USER_AGENT = { (char*) "User-Agent", 10 }; @@ -2122,6 +2122,18 @@ bool SIPVoIPLink::createDefaultSipUdpTransport() void SIPVoIPLink::createDefaultSipTlsListener() +{ + + SIPAccount * account = NULL; + account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (IP2IP_PROFILE)); + + if(account->isTlsEnabled()) { + createTlsListener(IP2IP_PROFILE); + } +} + + +void SIPVoIPLink::createTlsListener(const AccountID& accountID) { pjsip_tpfactory *tls; @@ -2130,11 +2142,13 @@ void SIPVoIPLink::createDefaultSipTlsListener() pj_status_t status; pj_status_t success; + _debug("Create TLS listener"); + /* Grab the tls settings, populated * from configuration file. */ SIPAccount * account = NULL; - account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (IP2IP_PROFILE)); + account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (accountID)); if (account == NULL) { _debug ("UserAgent: Account is null while creating TLS default listener. Returning"); @@ -2196,6 +2210,9 @@ bool SIPVoIPLink::createSipTransport(AccountID id) if (account->isTlsEnabled()) { + if(_localTlsListener == NULL) + createTlsListener(id); + // Parse remote address to establish connection std::string remoteSipUri = account->getServerUri(); int sips = remoteSipUri.find("<sips:") + 6; diff --git a/sflphone-common/src/sip/sipvoiplink.h b/sflphone-common/src/sip/sipvoiplink.h index f7a561adce..b83d6bf36c 100644 --- a/sflphone-common/src/sip/sipvoiplink.h +++ b/sflphone-common/src/sip/sipvoiplink.h @@ -397,11 +397,17 @@ class SIPVoIPLink : public VoIPLink /** - * Create the default TLS litener on port 5061 + * Create the default TLS litener using IP2IP_PROFILE settings */ void createDefaultSipTlsListener(); + /** + * Create the default TLS litener according to account settings. + */ + void createTlsListener(const AccountID& accountID); + + /** * General Sip transport creation method according to the * transport type specified in account settings -- GitLab