[svn] commit: r793 - in /branches/each-ds/src/lib/dns/cpp: name.h name_unittest.cc rdata/generic/rrsig_46.cc rdata/generic/soa_6.cc rdata_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Feb 10 23:27:05 UTC 2010


Author: each
Date: Wed Feb 10 23:27:05 2010
New Revision: 793

Log:
merge in recent changes from trunk

Modified:
    branches/each-ds/src/lib/dns/cpp/name.h
    branches/each-ds/src/lib/dns/cpp/name_unittest.cc
    branches/each-ds/src/lib/dns/cpp/rdata/generic/rrsig_46.cc
    branches/each-ds/src/lib/dns/cpp/rdata/generic/soa_6.cc
    branches/each-ds/src/lib/dns/cpp/rdata_unittest.cc

Modified: branches/each-ds/src/lib/dns/cpp/name.h
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/name.h (original)
+++ branches/each-ds/src/lib/dns/cpp/name.h Wed Feb 10 23:27:05 2010
@@ -261,7 +261,11 @@
     /// \param buffer A buffer storing the wire format data.
     /// \param downcase Whether to convert upper case alphabets to lower case.
     explicit Name(InputBuffer& buffer, bool downcase = false);
-    //@}
+    ///
+    /// We use the default copy constructor intentionally.
+    //@}
+    /// We use the default copy assignment operator intentionally.
+    ///
 
     ///
     /// \name Getter Methods

Modified: branches/each-ds/src/lib/dns/cpp/name_unittest.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/name_unittest.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/name_unittest.cc Wed Feb 10 23:27:05 2010
@@ -266,6 +266,36 @@
                                   25).getLabelCount());
 }
 
+TEST_F(NameTest, copyConstruct)
+{
+    Name copy(example_name);
+    EXPECT_EQ(copy, example_name);
+
+    // Check the copied data is valid even after the original is deleted
+    Name* copy2 = new Name(example_name);
+    Name copy3(*copy2);
+    delete copy2;
+    EXPECT_EQ(copy3, example_name);
+}
+
+TEST_F(NameTest, assignment)
+{
+    Name copy(".");
+    copy = example_name;
+    EXPECT_EQ(copy, example_name);
+
+    // Check if the copied data is valid even after the original is deleted
+    Name* copy2 = new Name(example_name);
+    Name copy3(".");
+    copy3 = *copy2;
+    delete copy2;
+    EXPECT_EQ(copy3, example_name);
+
+    // Self assignment
+    copy = copy;
+    EXPECT_EQ(copy, example_name);
+}
+
 TEST_F(NameTest, toText)
 {
     // tests derived from BIND9

Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/rrsig_46.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/rrsig_46.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/rrsig_46.cc Wed Feb 10 23:27:05 2010
@@ -124,7 +124,7 @@
         return (*this);
     }
 
-    RRSIGImpl* newimpl = new RRSIGImpl(*impl_);
+    RRSIGImpl* newimpl = new RRSIGImpl(*source.impl_);
     delete impl_;
     impl_ = newimpl;
 

Modified: branches/each-ds/src/lib/dns/cpp/rdata/generic/soa_6.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata/generic/soa_6.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata/generic/soa_6.cc Wed Feb 10 23:27:05 2010
@@ -39,10 +39,35 @@
     buffer.readData(numdata_, sizeof(numdata_));
 }
 
-SOA::SOA(const std::string& soastr) :
-    mname_("."), rname_(".")
+SOA::SOA(const string& soastr) :
+    mname_("."), rname_(".")    // quick hack workaround
 {
-    dns_throw(InvalidRdataText, "Not implemented yet");
+    istringstream iss(soastr);
+    string token;
+
+    iss >> token;
+    if (iss.bad() || iss.fail()) {
+        dns_throw(InvalidRdataText, "Invalid SOA MNAME");
+    }
+    mname_ = Name(token);
+    iss >> token;
+    if (iss.bad() || iss.fail()) {
+        dns_throw(InvalidRdataText, "Invalid SOA RNAME");
+    }
+    rname_ = Name(token);
+
+    uint32_t serial, refresh, retry, expire, minimum;
+    iss >> serial >> refresh >> retry >> expire >> minimum;
+    if (iss.rdstate() != ios::eofbit) {
+        dns_throw(InvalidRdataText, "Invalid SOA format");
+    }
+    OutputBuffer buffer(20);
+    buffer.writeUint32(serial);
+    buffer.writeUint32(refresh);
+    buffer.writeUint32(retry);
+    buffer.writeUint32(expire);
+    buffer.writeUint32(minimum);
+    memcpy(numdata_,  buffer.getData(), buffer.getLength());
 }
 
 SOA::SOA(const Name& mname, const Name& rname, uint32_t serial,

Modified: branches/each-ds/src/lib/dns/cpp/rdata_unittest.cc
==============================================================================
--- branches/each-ds/src/lib/dns/cpp/rdata_unittest.cc (original)
+++ branches/each-ds/src/lib/dns/cpp/rdata_unittest.cc Wed Feb 10 23:27:05 2010
@@ -330,7 +330,11 @@
 
 TEST_F(RdataTest, createFromText_SOA)
 {
-    //TBD
+    EXPECT_EQ(0, rdata_soa.compare(generic::SOA("ns.example.com. "
+                                                "root.example.com. "
+                                                "2010012601 3600 300 3600000 "
+                                                "1200")));
+    // TBD: more tests
 }
 
 TEST_F(RdataTest, createFromWire_SOA)




More information about the bind10-changes mailing list