[svn] commit: r884 - in /branches/each-ds/src/lib/dns/cpp: name.cc rdata/generic/nsec_47.cc rdata/generic/nsec_47.h

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Feb 19 19:54:09 UTC 2010


Author: each
Date: Fri Feb 19 19:54:08 2010
New Revision: 884

Log:
- modify Name.reverse() per discussion on bind10-dev
- add support for NSEC rdata type

Added:
    branches/each-ds/src/lib/dns/cpp/rdata/generic/nsec_47.cc
    branches/each-ds/src/lib/dns/cpp/rdata/generic/nsec_47.h
Modified:
    branches/each-ds/src/lib/dns/cpp/name.cc

Modified: branches/each-ds/src/lib/dns/cpp/name.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/name.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/name.cc Fri Feb 19 19:54:08 2010
@@ -618,19 +618,18 @@
     retname.offsets_.reserve(labelcount_);
     retname.ndata_.reserve(length_);
 
-    std::vector<unsigned char>::const_reverse_iterator rit;
-    rit = offsets_.rbegin();
-    rit++;  // skip over the trailing dot
-    retname.offsets_.push_back(0);
-    while (rit < offsets_.rend()) {
-        unsigned char offset = *rit;
-        retname.ndata_.insert(retname.ndata_.size(), ndata_, offset,
-                              ndata_.at(offset) + 1);
+    // Copy the original name, label by label, from tail to head.
+    vector<unsigned char>::const_reverse_iterator rit0 = offsets_.rbegin();
+    vector<unsigned char>::const_reverse_iterator rit1 = rit0 + 1;
+    string::const_iterator n0 = ndata_.begin();
+    while (rit1 != offsets_.rend()) {
+        retname.ndata_.append(n0 + *rit1, n0 + *rit0);
         retname.offsets_.push_back(retname.ndata_.size());
-        rit++;
-    }
-
+        ++rit0;
+        ++rit1;
+    }
     retname.ndata_.push_back(0);
+
     retname.labelcount_ = labelcount_;
     retname.length_ = length_;
 




More information about the bind10-changes mailing list