mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-09-21 16:39:30 +00:00
6a41acf2db
makedns reports "error was FORMERR" for an update that named rejected with NOTAUTH. The FORMERR is the answer to the retry, not to the first attempt. send_ddns_update in ddns.pm signs the packet the caller built, and signs that same packet again on each attempt. Net::DNS::Packet::sign_tsig appends the TSIG to the additional section, so the second attempt sends two TSIG records and named answers FORMERR. FORMERR is neither NOTAUTH nor SERVFAIL, so the routine stops and reports it. The NOTAUTH and SERVFAIL retry can never be accepted, on any algorithm. Each attempt now signs a request of its own. A packet cannot be unsigned again, so ddns_update_request copies the prerequisite and update records into a new Net::DNS::Update instead, and the caller keeps the unsigned original. ddns_update_retry.t fails before this change: the second attempt carries two TSIG records, and an update that the retry answers with NOERROR still reports failure. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>