See the `3.X <https://doc.powerdns.com/3/authoritative/upgrading/>`__
upgrade notes if your version is older than 3.4.2.
-4.4.x to 4.5.0 or master
+4.5.x to 4.6.0 or master
------------------------
+Automatic conversion of ``@`` signs in SOA
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Before version 4.5.0, PowerDNS would automatically replace ``@`` in the SOA RNAME with ``.``, making it easy for users to enter their hostmaster email address without having to think about syntax.
+However, this feature interacts badly with handling of presigned zones.
+In version 4.5.0, this feature was accidentally broken in the implementation of the zone cache.
+In 4.6.0, this automatic conversion is fully removed.
+If you still have ``@`` signs in any SOA RNAMEs, 4.6.0 will serve those out literally.
+
+4.4.x to 4.5.0
+--------------
+
+Automatic conversion of ``@`` signs in SOA
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Before version 4.5.0, PowerDNS would automatically replace ``@`` in the SOA RNAME with ``.``, making it easy for users to enter their hostmaster email address without having to think about syntax.
+In version 4.5.0, this feature was accidentally broken in the implementation of the zone cache, and the replacement would only happen if the zone cache was disabled.
+Note that in 4.6.0, this automatic conversion is fully removed.
+If you still have ``@`` signs in any SOA RNAMEs, 4.5.0 will serve those out literally if the zone cache is enabled.
+
Record type changes
^^^^^^^^^^^^^^^^^^^
return ret;
}
-
-string& attodot(string &str)
-{
- if(str.find_first_of('@')==string::npos)
- return str;
-
- for (unsigned int i = 0; i < str.length(); i++)
- {
- if (str[i] == '@') {
- str[i] = '.';
- break;
- } else if (str[i] == '.') {
- str.insert(i++, "\\");
- }
- }
- return str;
-}
try {
data.nameserver = DNSName(parts.at(0));
- data.hostmaster = DNSName(attodot(parts.at(1))); // ahu@ds9a.nl -> ahu.ds9a.nl, piet.puk@ds9a.nl -> piet\.puk.ds9a.nl
+ data.hostmaster = DNSName(parts.at(1));
data.serial = pdns_stou(parts.at(2).c_str());
data.refresh = pdns_stou(parts.at(3).c_str());
data.retry = pdns_stou(parts.at(4).c_str());