[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