]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
make nonconst version of getTag() too which is faster
authorbert hubert <bert.hubert@netherlabs.nl>
Fri, 27 Nov 2015 15:41:24 +0000 (16:41 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Fri, 27 Nov 2015 15:41:57 +0000 (16:41 +0100)
pdns/dnsrecords.cc
pdns/dnsrecords.hh

index 9d47361c39fe2ce4eedfea7cdc2e70df75393e39..f95313111b536fd4187c02ae90fffddb6e311491 100644 (file)
@@ -476,10 +476,8 @@ boilerplate_conv(TKEY, QType::TKEY,
                  )
 TKEYRecordContent::TKEYRecordContent() { d_othersize = 0; } // fix CID#1288932
 
-uint16_t DNSKEYRecordContent::getTag() const
+static uint16_t makeTag(const std::string& data)
 {
-  DNSKEYRecordContent tmp(*this);
-  string data=tmp.serialize(DNSName());  // this can't be const for some reason
   const unsigned char* key=(const unsigned char*)data.c_str();
   unsigned int keysize=data.length();
 
@@ -492,6 +490,18 @@ uint16_t DNSKEYRecordContent::getTag() const
   return ac & 0xFFFF;
 }
 
+uint16_t DNSKEYRecordContent::getTag() const
+{
+  DNSKEYRecordContent tmp(*this);
+  return makeTag(tmp.serialize(DNSName()));  // this can't be const for some reason
+}
+
+uint16_t DNSKEYRecordContent::getTag() 
+{
+  return makeTag(this->serialize(DNSName()));
+}
+
+
 bool getEDNSOpts(const MOADNSParser& mdp, EDNSOpts* eo)
 {
   if(mdp.d_header.arcount && !mdp.d_answers.empty()) {
index 21627478337cf1efb04821c385394b017a31cf38..e5cf61d49236951a4ffa935368d34d02f9e0cb9e 100644 (file)
@@ -279,6 +279,7 @@ public:
   DNSKEYRecordContent();
   includeboilerplate(DNSKEY)
   uint16_t getTag() const;
+  uint16_t getTag();
 
   uint16_t d_flags;
   uint8_t d_protocol;