From 47563d0202213cc38e27563806e1c0ed8e27cf8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 9 Dec 2020 00:37:07 -0500
Subject: [PATCH] sipaccount: cleanup stun configuration

Change-Id: I724883bf523ce7670f87979c884d97a86688cc38
---
 src/sip/sipaccount.cpp | 28 +++++++++-------------------
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index f501adaae6..d77009e7ec 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -73,6 +73,7 @@
 #include <thread>
 #include <chrono>
 #include <ctime>
+#include <charconv>
 
 #ifdef _WIN32
 #include <lmcons.h>
@@ -985,10 +986,7 @@ SIPAccount::doRegister2_()
     }
 
     // Init STUN settings for this account if the user selected it
-    if (stunEnabled_)
-        initStunConfiguration();
-    else
-        stunServerName_ = pj_str((char*) stunServer_.c_str());
+    initStunConfiguration();
 
     // In our definition of the ip2ip profile (aka Direct IP Calls),
     // no registration should be performed
@@ -1396,23 +1394,15 @@ SIPAccount::initTlsConfiguration()
 void
 SIPAccount::initStunConfiguration()
 {
-    size_t pos;
-    std::string stunServer, serverName, serverPort;
-
-    stunServer = stunServer_;
-    // Init STUN socket
-    pos = stunServer.find(':');
-
-    if (pos == std::string::npos) {
-        stunServerName_ = pj_str((char*) stunServer.data());
+    std::string_view stunServer(stunServer_);
+    auto pos = stunServer.find(':');
+    if (pos == std::string_view::npos) {
+        stunServerName_ = sip_utils::CONST_PJ_STR(stunServer);
         stunPort_ = PJ_STUN_PORT;
-        // stun_status = pj_sockaddr_in_init (&stun_srv.ipv4, &stun_adr, (pj_uint16_t) 3478);
     } else {
-        serverName = stunServer.substr(0, pos);
-        serverPort = stunServer.substr(pos + 1);
-        stunPort_ = atoi(serverPort.data());
-        stunServerName_ = pj_str((char*) serverName.data());
-        // stun_status = pj_sockaddr_in_init (&stun_srv.ipv4, &stun_adr, (pj_uint16_t) nPort);
+        stunServerName_ = sip_utils::CONST_PJ_STR(stunServer.substr(0, pos));
+        auto serverPort = stunServer.substr(pos + 1);
+        std::from_chars(serverPort.data(), serverPort.data() + serverPort.size(), stunPort_);
     }
 }
 
-- 
GitLab