|
@@ -627,21 +627,34 @@ private:
|
|
}
|
|
}
|
|
|
|
|
|
void doSegmentUpdate(const isc::data::ConstElementPtr& arg) {
|
|
void doSegmentUpdate(const isc::data::ConstElementPtr& arg) {
|
|
- // TODO: Error handling. Invalid RRClass, non-existing stuff, exceptions
|
|
|
|
- const isc::dns::RRClass
|
|
|
|
- rrclass(arg->get("data-source-class")->stringValue());
|
|
|
|
- const std::string& name(arg->get("data-source-name")->stringValue());
|
|
|
|
- const isc::data::ConstElementPtr& segment_params =
|
|
|
|
- arg->get("segment-params");
|
|
|
|
- typename MutexType::Locker locker(*map_mutex_);
|
|
|
|
- const boost::shared_ptr<isc::datasrc::ConfigurableClientList>& list =
|
|
|
|
- (**clients_map_)[rrclass];
|
|
|
|
- if (!list) {
|
|
|
|
- // TODO: Log error
|
|
|
|
- return;
|
|
|
|
|
|
+ try {
|
|
|
|
+ const isc::dns::RRClass
|
|
|
|
+ rrclass(arg->get("data-source-class")->stringValue());
|
|
|
|
+ const std::string&
|
|
|
|
+ name(arg->get("data-source-name")->stringValue());
|
|
|
|
+ const isc::data::ConstElementPtr& segment_params =
|
|
|
|
+ arg->get("segment-params");
|
|
|
|
+ typename MutexType::Locker locker(*map_mutex_);
|
|
|
|
+ const boost::shared_ptr<isc::datasrc::ConfigurableClientList>&
|
|
|
|
+ list = (**clients_map_)[rrclass];
|
|
|
|
+ if (!list) {
|
|
|
|
+ LOG_ERROR(auth_logger,
|
|
|
|
+ AUTH_DATASRC_CLIENTS_BUILDER_SEGMENT_UNKNOWN_CLASS)
|
|
|
|
+ .arg(rrclass);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ list->resetMemorySegment(name,
|
|
|
|
+ isc::datasrc::memory::ZoneTableSegment::READ_ONLY,
|
|
|
|
+ segment_params);
|
|
|
|
+ } catch (const isc::dns::InvalidRRClass& irce) {
|
|
|
|
+ LOG_ERROR(auth_logger,
|
|
|
|
+ AUTH_DATASRC_CLIENTS_BUILDER_SEGMENT_BAD_CLASS)
|
|
|
|
+ .arg(arg->get("data-source-class"));
|
|
|
|
+ } catch (const isc::Exception& e) {
|
|
|
|
+ LOG_ERROR(auth_logger,
|
|
|
|
+ AUTH_DATASRC_CLIENTS_BUILDER_SEGMENT_ERROR)
|
|
|
|
+ .arg(e.what());
|
|
}
|
|
}
|
|
- list->resetMemorySegment(name,
|
|
|
|
- isc::datasrc::memory::ZoneTableSegment::READ_ONLY, segment_params);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void doLoadZone(const isc::data::ConstElementPtr& arg);
|
|
void doLoadZone(const isc::data::ConstElementPtr& arg);
|