From e65929c698614f7e2f74e90e857ae3016cc4be72 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Fri, 18 Jan 2019 11:44:04 +0100 Subject: [PATCH] Implement @rgacogne's comments --- pdns/dnspacket.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pdns/dnspacket.cc b/pdns/dnspacket.cc index 6fa0b229f..3a20e2e1d 100644 --- a/pdns/dnspacket.cc +++ b/pdns/dnspacket.cc @@ -314,22 +314,24 @@ void DNSPacket::wrapup() */ size_t optsize = 0; - if (d_haveednssection || d_dnssecOk) + if (d_haveednssection || d_dnssecOk) { + /* root label (1), type (2), class (2), ttl (4) + rdlen (2) */ optsize = 11; + } if(d_wantsnsid) { const static string mode_server_id=::arg()["server-id"]; if(mode_server_id != "disabled") { - opts.push_back(make_pair(3, mode_server_id)); - optsize += 4 + mode_server_id.size(); + opts.push_back(make_pair(EDNSOptionCode::NSID, mode_server_id)); + optsize += EDNS_OPTION_CODE_SIZE + EDNS_OPTION_LENGTH_SIZE + mode_server_id.size(); } } if (d_haveednssubnet) { // this is an upper bound - optsize += 2 + 2 + 2 + 2 + 2; // code+len+family+src len+scope len - optsize += 16; // maximum length of a v6 address + optsize += EDNS_OPTION_CODE_SIZE + EDNS_OPTION_LENGTH_SIZE + 2 + 1 + 1; // code+len+family+src len+scope len + optsize += d_eso.source.isIpv4() ? 4 : 16; } if (d_trc.d_algoName.countLabels()) -- 2.40.0