diff --git a/daemon/src/sip/siptransport.cpp b/daemon/src/sip/siptransport.cpp index 984947e4cd14e632465e260006a65c869b32fc79..3204df032ebf1a8cb1c6b93d355367b20782c05c 100644 --- a/daemon/src/sip/siptransport.cpp +++ b/daemon/src/sip/siptransport.cpp @@ -294,14 +294,26 @@ SipTransport::createTlsTransport(const std::string &remoteAddr, pjsip_tls_setting *tlsSettings) { pjsip_transport *transport = NULL; + std::string ipAddr = ""; + int port = DEFAULT_SIP_TLS_PORT; + + DEBUG("SipTransport: Create sip transport on %s:%d at destination %s", interface.c_str(), tlsListenerPort, remoteAddr.c_str()); + + // parse c string + size_t pos = remoteAddr.find(":"); + if(pos != std::string::npos) { + ipAddr = remoteAddr.substr(0, pos); + port = atoi(remoteAddr.substr(pos+1, remoteAddr.length() - pos).c_str()); + } + else { + ipAddr = remoteAddr; + } pj_str_t remote; - pj_cstr(&remote, remoteAddr.c_str()); + pj_cstr(&remote, ipAddr.c_str()); pj_sockaddr_in rem_addr; - pj_sockaddr_in_init(&rem_addr, &remote, (pj_uint16_t) DEFAULT_SIP_TLS_PORT); - - DEBUG("SipTransport: Create sip transport on %s:%d at destination %s", interface.c_str(), tlsListenerPort, remoteAddr.c_str()); + pj_sockaddr_in_init(&rem_addr, &remote, (pj_uint16_t) port); // The local tls listener static pjsip_tpfactory *localTlsListener = NULL; @@ -309,6 +321,7 @@ SipTransport::createTlsTransport(const std::string &remoteAddr, if (localTlsListener == NULL) createTlsListener(interface, tlsListenerPort, tlsSettings, &localTlsListener); + DEBUG("SipTransport: Get new tls transport from transport manager"); pjsip_endpt_acquire_transport(endpt_, PJSIP_TRANSPORT_TLS, &rem_addr, sizeof rem_addr, NULL, &transport);