From dd4b26d1b7ad0e3ebe337e66db81050ca545ed72 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandresavard@alexandresavard-desktop.(none)> Date: Mon, 25 Jan 2010 10:01:16 -0500 Subject: [PATCH] [#1722] Add createDefaultSipTlsListener method in sipVoipLink initialization --- sflphone-common/src/sip/sipvoiplink.cpp | 63 ++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index b80ecda8db..ec4b52ae8d 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -1855,7 +1855,7 @@ bool SIPVoIPLink::pjsip_init() createDefaultSipUdpTransport(); // Call this method to create TLS listener - // acquireTransport(IP2IP_PROFILE); + createDefaultSipTlsListener(); // Initialize transaction layer status = pjsip_tsx_layer_init_module (_endpt); @@ -2130,6 +2130,60 @@ bool SIPVoIPLink::createDefaultSipUdpTransport() void SIPVoIPLink::createDefaultSipTlsListener() { + + pjsip_tpfactory *tls; + pj_sockaddr_in local_addr; + pjsip_host_port a_name; + pj_status_t status; + pj_status_t success; + + /* Grab the tls settings, populated + * from configuration file. + */ + SIPAccount * account = NULL; + account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (IP2IP_PROFILE)); + + if (account == NULL) { + _debug ("Account is null while creating TLS default listener. Returning"); + // return !PJ_SUCCESS; + } + + + // Init local address for this listener to be bound (ADDR_ANY on port 5061). + pj_sockaddr_in_init (&local_addr, 0, 0); + pj_uint16_t localTlsPort = 5061; + local_addr.sin_port = pj_htons (localTlsPort); + + pj_str_t pjAddress; + pj_cstr (&pjAddress, PJ_INADDR_ANY); + success = pj_sockaddr_in_set_str_addr (&local_addr, &pjAddress); + + + // Init published address for this listener (Local IP address on port 5061) + std::string publishedAddress; + loadSIPLocalIP(&publishedAddress); + + pj_bzero (&a_name, sizeof (pjsip_host_port)); + pj_cstr (&a_name.host, publishedAddress.c_str()); + a_name.port = 5061; + + /* Get TLS settings. Expected to be filled */ + pjsip_tls_setting * tls_setting = account->getTlsSetting(); + + + _debug ("TLS transport to be initialized with published address %.*s," + " published port %d, local address %.*s, local port %d", + (int) a_name.host.slen, a_name.host.ptr, + (int) a_name.port, pjAddress.slen, pjAddress.ptr, (int) localTlsPort); + + + status = pjsip_tls_transport_start (_endpt, tls_setting, &local_addr, &a_name, 1, &tls); + + if (status != PJ_SUCCESS) { + _debug ("Error creating SIP TLS listener (%d)", status); + } + + // return PJ_SUCCESS; } @@ -2185,15 +2239,10 @@ bool SIPVoIPLink::createSipTransport(AccountID id) // TLS transport is ephemeral and is managed by PJSIP, should not be stored either. addTransportToMap(account->getTransportMapKey(), account->getAccountTransport()); } - - } - } - return true; - - + return true; } -- GitLab