Browse Source

checkpoint: slightly improve efficiency of construction

git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@982 e5f2f494-b856-4b98-b285-d166d9295462
JINMEI Tatuya 15 years ago
parent
commit
842d9903bd
1 changed files with 12 additions and 5 deletions
  1. 12 5
      src/lib/dns/cpp/rdata/generic/rrsig_46.cc

+ 12 - 5
src/lib/dns/cpp/rdata/generic/rrsig_46.cc

@@ -63,6 +63,16 @@ struct RRSIGImpl {
         timeinception_(timeinception), keyid_(keyid), signer_(signer),
         signature_(signature)
     {}
+    RRSIGImpl(const RRType& covered, uint8_t algorithm, uint8_t labels,
+              uint32_t originalttl, uint32_t timeexpire, uint32_t timeinception,
+              uint16_t keyid, const Name& signer,
+              const string& signature_txt) :
+        covered_(covered), algorithm_(algorithm), labels_(labels),
+        originalttl_(originalttl), timeexpire_(timeexpire),
+        timeinception_(timeinception), keyid_(keyid), signer_(signer)
+    {
+        decodeBase64(signature_txt, signature_);
+    }
 
     const RRType covered_;
     uint8_t algorithm_;
@@ -72,7 +82,7 @@ struct RRSIGImpl {
     uint32_t timeinception_;
     uint16_t keyid_;
     const Name signer_;
-    const vector<char> signature_;
+    vector<char> signature_;
 };
 
 RRSIG::RRSIG(const string& rrsig_str) :
@@ -101,12 +111,9 @@ RRSIG::RRSIG(const string& rrsig_str) :
     uint32_t timeexpire = convertDNSSECTime(expire_txt);
     uint32_t timeinception = convertDNSSECTime(inception_txt);
 
-    vector<char> signature;
-    decodeBase64(signaturebuf.str(), signature);
-
     impl_ = new RRSIGImpl(RRType(covered_txt), algorithm, labels,
                           originalttl, timeexpire, timeinception, keyid,
-                          Name(signer_txt), signature);
+                          Name(signer_txt), signaturebuf.str());
 }
 
 RRSIG::RRSIG(InputBuffer& buffer, size_t rdata_len)