diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index 74ea71322898b8c720aeb0430ad1eaf697db7ed3..914706f607364d3b54f193ea3b9b03bf370a2c0c 100644
--- a/src/ice_transport.cpp
+++ b/src/ice_transport.cpp
@@ -262,7 +262,8 @@ add_turn_server(pj_pool_t& pool, pj_ice_strans_cfg& cfg, const TurnServerInfo& i
     pj_ice_strans_turn_cfg_default(&turn);
     pj_strdup2_with_null(&pool, &turn.server, ip.toString().c_str());
     turn.af = ip.getFamily();
-    turn.port = PJ_STUN_PORT;
+    if (!(turn.port = ip.getPort()))
+        turn.port = PJ_STUN_PORT;
     turn.cfg.max_pkt_size = STUN_MAX_PACKET_SIZE;
     turn.conn_type = cfg.turn.conn_type;
 
diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp
index f1c4c5d1c94563bb94448f16ffcdbea7c0e7b5c0..b590176213a80bfea796fc660d1588bd0aa701f2 100644
--- a/src/sip/sipaccountbase.cpp
+++ b/src/sip/sipaccountbase.cpp
@@ -449,14 +449,14 @@ SIPAccountBase::getIceOptions() const noexcept
         cached = cacheTurnV4_ || cacheTurnV6_;
         if (cacheTurnV4_ && *cacheTurnV4_) {
             opts.turnServers.emplace_back(TurnServerInfo()
-                                .setUri(*cacheTurnV4_)
+                                .setUri(cacheTurnV4_->toString(true))
                                 .setUsername(turnServerUserName_)
                                 .setPassword(turnServerPwd_)
                                 .setRealm(turnServerRealm_));
         }
         if (cacheTurnV6_ && *cacheTurnV6_) {
             opts.turnServers.emplace_back(TurnServerInfo()
-                                .setUri(*cacheTurnV4_)
+                                .setUri(cacheTurnV4_->toString(true))
                                 .setUsername(turnServerUserName_)
                                 .setPassword(turnServerPwd_)
                                 .setRealm(turnServerRealm_));