diff --git a/daemon/src/sip/siptransport.cpp b/daemon/src/sip/siptransport.cpp index f2b8b6b2d277caf6233eb4c4834fff678724afaf..ece189460152aec6e91facca6c2fd6891f3ddb88 100644 --- a/daemon/src/sip/siptransport.cpp +++ b/daemon/src/sip/siptransport.cpp @@ -46,6 +46,7 @@ #include <arpa/inet.h> #include <net/if.h> #include <stdexcept> +#include <sstream> #include "logger.h" #include "siptransport.h" @@ -414,20 +415,20 @@ SipTransport::createUdpTransport(const std::string &interface, unsigned int port return NULL; } - pj_sockaddr boundAddr; + std::ostringstream fullAddress; + fullAddress << listeningAddress << ":" << listeningPort; pj_str_t udpString; - pj_cstr(&udpString, listeningAddress.c_str()); + pj_cstr(&udpString, fullAddress.str().c_str()); + pj_sockaddr boundAddr; pj_sockaddr_parse(pj_AF_UNSPEC(), 0, &udpString, &boundAddr); pj_status_t status; pjsip_transport *transport = NULL; if (boundAddr.addr.sa_family == pj_AF_INET()) { - boundAddr.ipv4.sin_port = listeningPort; status = pjsip_udp_transport_start(endpt_, &boundAddr.ipv4, NULL, 1, &transport); if (status != PJ_SUCCESS) { return NULL; } } else if (boundAddr.addr.sa_family == pj_AF_INET6()) { - boundAddr.ipv6.sin6_port = listeningPort; status = pjsip_udp_transport_start6(endpt_, &boundAddr.ipv6, NULL, 1, &transport); if (status != PJ_SUCCESS) { return NULL;