diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp
index e9b6d19d9d193a6a9839ea6cf14530b0cb73db6a..11396b5a1ac9a9a366484cc6f36ba3d46ad2bfdc 100644
--- a/src/sip/sipaccountbase.cpp
+++ b/src/sip/sipaccountbase.cpp
@@ -293,9 +293,8 @@ SIPAccountBase::unserialize(const YAML::Node& node)
 
     parseValue(node, Conf::INTERFACE_KEY, interface_);
     parseValue(node, Conf::SAME_AS_LOCAL_KEY, publishedSameasLocal_);
-    std::string publishedIpAddress;
-    parseValue(node, Conf::PUBLISH_ADDR_KEY, publishedIpAddress);
-    IpAddr publishedIp {publishedIpAddress};
+    parseValue(node, Conf::PUBLISH_ADDR_KEY, publishedIpAddress_);
+    IpAddr publishedIp {publishedIpAddress_};
     if (publishedIp and not publishedSameasLocal_)
         setPublishedAddress(publishedIp);
 
@@ -332,6 +331,9 @@ SIPAccountBase::setAccountDetails(const std::map<std::string, std::string>& deta
     parseBool(details, Conf::CONFIG_PUBLISHED_SAMEAS_LOCAL, publishedSameasLocal_);
     parseString(details, Conf::CONFIG_PUBLISHED_ADDRESS, publishedIpAddress_);
     parseInt(details, Conf::CONFIG_PUBLISHED_PORT, publishedPort_);
+    IpAddr publishedIp {publishedIpAddress_};
+    if (publishedIp and not publishedSameasLocal_)
+        setPublishedAddress(publishedIp);
 
     parseString(details, Conf::CONFIG_ACCOUNT_DTMF_TYPE, dtmfType_);