diff --git a/daemon/src/sip/sipaccountbase.cpp b/daemon/src/sip/sipaccountbase.cpp
index 07ec4371860da644880e351b991edbe42f10ee79..49adcfa14786c3ca30f1b2584179cdd1b3d1ce14 100644
--- a/daemon/src/sip/sipaccountbase.cpp
+++ b/daemon/src/sip/sipaccountbase.cpp
@@ -143,10 +143,16 @@ void SIPAccountBase::unserialize(const YAML::Node &node)
     int port = DEFAULT_SIP_PORT;
     parseValue(node, PORT_KEY, port);
     localPort_ = port;
-    parseValue(node, PUBLISH_ADDR_KEY, publishedIpAddress_);
+
+    parseValue(node, SAME_AS_LOCAL_KEY, publishedSameasLocal_);
+    std::string publishedIpAddress;
+    parseValue(node, PUBLISH_ADDR_KEY, publishedIpAddress);
+    IpAddr publishedIp = publishedIpAddress;
+    if (publishedIp and not publishedSameasLocal_)
+        setPublishedAddress(publishedIp);
+
     parseValue(node, PUBLISH_PORT_KEY, port);
     publishedPort_ = port;
-    parseValue(node, SAME_AS_LOCAL_KEY, publishedSameasLocal_);
 
     parseValue(node, DTMF_TYPE_KEY, dtmfType_);