diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index f501adaae6b7e1c9b90439c6218ab6f7f357bc66..d77009e7ec532a962b87612ec95e776a7d933d19 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_);
     }
 }