[svn] commit: r3276 - in /branches/trac374/src/lib/datasrc: data_source.cc data_source.h

BIND 10 source code commits bind10-changes at lists.isc.org
Tue Oct 19 12:17:52 UTC 2010


Author: jelte
Date: Tue Oct 19 12:17:51 2010
New Revision: 3276

Log:
return WriteResult instead of Result in doIXFR and doUpdate

Modified:
    branches/trac374/src/lib/datasrc/data_source.cc
    branches/trac374/src/lib/datasrc/data_source.h

Modified: branches/trac374/src/lib/datasrc/data_source.cc
==============================================================================
--- branches/trac374/src/lib/datasrc/data_source.cc (original)
+++ branches/trac374/src/lib/datasrc/data_source.cc Tue Oct 19 12:17:51 2010
@@ -1496,38 +1496,46 @@
     }
 }
 
-DataSrc::Result
+DataSrc::WriteResult
 DataSrc::doIXFR(DataSrcTransaction& transaction UNUSED_PARAM,
                 isc::dns::RRsetPtr (*nextRRset)(void*, void*),
                 void* arg1, void* arg2)
 {
+    WriteResult result;
+    
     if (transaction.getState() != DataSrcTransaction::RUNNING) {
-        return (DataSrc::ERROR);
+        return (DataSrc::W_ERROR);
     }
 
     RRsetPtr final_soa = nextRRset(arg1, arg2);
     if (!final_soa) {
-        return (DataSrc::ERROR);
+        return (DataSrc::W_ERROR);
     }
     RRsetPtr first_soa = nextRRset(arg1, arg2);
     if (!final_soa) {
-        return (DataSrc::ERROR);
+        return (DataSrc::W_ERROR);
     }
 
     RRsetPtr next_rrset, last_rrset;
 
     if (first_soa->getType() == RRType::SOA()) {
         if (!haveRRset(transaction, first_soa)) {
-            return (DataSrc::ERROR);
+            return (DataSrc::W_ERROR);
         }
     } else {
         // Not a SOA, then this must be an AXFR-type response
-        replaceZone(transaction, NULL);
+        result = replaceZone(transaction, NULL);
+        if (result != W_SUCCESS) {
+            return (result);
+        }
         
         while (next_rrset = nextRRset(arg1, arg2)) {
-            addRRset(transaction, next_rrset);
-        }
-        return (DataSrc::SUCCESS);
+            result = addRRset(transaction, next_rrset);
+            if (result != W_SUCCESS) {
+                return (result);
+            }
+        }
+        return (DataSrc::W_SUCCESS);
     }
     bool deleting = true;
 
@@ -1545,48 +1553,60 @@
             if (deleting) {
                 // check if rrset exists, if not, something is very wrong, abort
                 if (haveRRset(transaction, next_rrset)) {
-                    delRRset(transaction, next_rrset);
+                    result = delRRset(transaction, next_rrset);
+                    if (result != W_SUCCESS) {
+                        return (result);
+                    }
                 } else {
-                    return (DataSrc::ERROR);
+                    return (DataSrc::W_ERROR);
                 }
             } else {
-                addRRset(transaction, next_rrset);
+                result = addRRset(transaction, next_rrset);
+                if (result != W_SUCCESS) {
+                    return (result);
+                }
             }
         }
     }
     if (equalRRsets(last_rrset, final_soa)) {
         // Finally replace the SOA
-        delRRset(transaction, first_soa);
+        result = delRRset(transaction, first_soa);
+        if (result != W_SUCCESS) {
+            return (result);
+        }
         addRRset(transaction, final_soa);
-        return (DataSrc::SUCCESS);
+        if (result != W_SUCCESS) {
+            return (result);
+        }
+        return (DataSrc::W_SUCCESS);
     } else {
-        return (DataSrc::ERROR);
-    }
-    return (NOT_IMPLEMENTED);
-}
-
-
-DataSrc::Result
+        return (DataSrc::W_ERROR);
+    }
+    return (W_NOT_IMPLEMENTED);
+}
+
+
+DataSrc::WriteResult
 DataSrc::doUpdate(DataSrcTransaction& transaction UNUSED_PARAM,
                          isc::dns::Message& msg UNUSED_PARAM) {
     if (msg.getOpcode() != isc::dns::Opcode::UPDATE()) {
-        return ERROR;
+        return W_ERROR;
     }
 
     // hmz, zone already in transaction. should we do transaction here?
     // (and not as an argument) for now, simply check it
     if (msg.getRRCount(isc::dns::Section::QUESTION()) != 1) {
-        return ERROR;
+        return W_ERROR;
     }
     QuestionPtr question = *(msg.beginQuestion());
     if (question->getName() != transaction.getZoneName()) {
-        return ERROR;
+        return W_ERROR;
     }
     if (question->getType() != isc::dns::RRType::SOA()) {
-        return ERROR;
+        return W_ERROR;
     }
     if (question->getClass() != transaction.getZoneClass()) {
-        return ERROR;
+        return W_ERROR;
     }
 
     // check the prerequisites
@@ -1599,7 +1619,7 @@
         if (prereq_result != Rcode::NOERROR()) {
             msg.clear(Message::RENDER);
             msg.setRcode(prereq_result);
-            return ERROR;
+            return W_ERROR;
         }
     }
 
@@ -1609,13 +1629,13 @@
         RRsetPtr cur_update = *it;
         Rcode result = updateProcessUpdate(transaction, cur_update);
         if (result != Rcode::NOERROR()) {
-            return ERROR;
+            return W_ERROR;
         }
     }
 
     // do we need to do anything with additional?
     
-    return SUCCESS;
+    return W_SUCCESS;
 }
 
 DataSrc::Result

Modified: branches/trac374/src/lib/datasrc/data_source.h
==============================================================================
--- branches/trac374/src/lib/datasrc/data_source.h (original)
+++ branches/trac374/src/lib/datasrc/data_source.h Tue Oct 19 12:17:51 2010
@@ -540,17 +540,17 @@
     ///             nextRRset function (defaults to NULL)
     /// \param arg2 This will be passed as the second argument to the
     ///             nextRRset function (defaults to NULL)
-    /// \return SUCCESS on success, ERROR on failure.
-    virtual Result doIXFR(DataSrcTransaction& transaction,
-                          isc::dns::RRsetPtr (*nextRRset)(void*, void*),
-                          void* arg1 = NULL, void* arg2 = NULL);
+    /// \return W_SUCCESS on success, error value on failure.
+    virtual WriteResult doIXFR(DataSrcTransaction& transaction,
+                               isc::dns::RRsetPtr (*nextRRset)(void*, void*),
+                               void* arg1 = NULL, void* arg2 = NULL);
 
     /// \brief Perform a DNS Dynamic update as desribed in RFC2136
     /// \param transaction the transaction to perform the udpate in
     /// \param msg the DNS UPDATE msg to handle
     /// \return SUCCESS on success, ERROR on failure.
-    virtual Result doUpdate(DataSrcTransaction& transaction,
-                            isc::dns::Message& msg);
+    virtual WriteResult doUpdate(DataSrcTransaction& transaction,
+                                 isc::dns::Message& msg);
     //@}
 
 private:




More information about the bind10-changes mailing list