TechnitiumSoftware/DnsServer · critical · InvalidDataException

SOARecordInfo format version not supported.

Error message

SOARecordInfo format version not supported.

What it means

Thrown by SOARecordInfo.ReadExtendedRecordInfoFrom when the version byte is neither 1 nor 2. Version 1 carries zone-transfer protocol, TSIG key name, and the SOA-serial-date flag; version 2 slimmed down to just the serial-date flag (current writer). The default rejects any other version to prevent misreading the extended block that precedes the SOA RDATA.

Source

Thrown at DnsServerCore/Dns/ResourceRecords/SOARecordInfo.cs:83

                        NameServerAddress[] primaryNameServers = new NameServerAddress[count];

                        for (int i = 0; i < primaryNameServers.Length; i++)
                            primaryNameServers[i] = new NameServerAddress(bR);

                        _primaryNameServers = primaryNameServers;
                    }

                    _zoneTransferProtocol = (DnsTransportProtocol)bR.ReadByte();
                    _tsigKeyName = bR.BaseStream.ReadShortString();
                    _useSoaSerialDateScheme = bR.ReadBoolean();
                    break;

                case 2:
                    _useSoaSerialDateScheme = bR.ReadBoolean();
                    break;

                default:
                    throw new InvalidDataException("SOARecordInfo format version not supported.");
            }
        }

        protected override void WriteExtendedRecordInfoTo(BinaryWriter bW)
        {
            bW.Write((byte)2); //version

            bW.Write(_useSoaSerialDateScheme);
        }

        #endregion

        #region properties

        public override bool Disabled
        {
            get { return base.Disabled; }
            set

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Restore the zone (especially the SOA) from a compatible backup.
  2. Re-create the SOA record manually with correct primary nameserver, admin email, and serial, then reload the zone.
  3. Upgrade to the build that wrote the file, export the zone as text, then re-import on the target build.
Defensive patterns

Strategy: try-catch

Try / catch

try { soa.Load(); }
catch (InvalidDataException ex) when (ex.Message == "SOARecordInfo format version not supported.")
{ _log.Error("SOA store incompatible; restore zone from backup or recreate SOA."); }

Prevention

When it happens

Trigger: Deserializing a SOA record whose extended-info version byte is outside {1,2}, from a corrupt file, a truncated stream, or a file produced by an incompatible server build.

Common situations: Downgrade after the v1->v2 SOARecordInfo change; zone file corruption; restore of a zone from an incompatible build.

Related errors


AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13). Data as JSON: /api/errors/72a7cc1938f652a8. Report an issue: GitHub.