|
@@ -18,32 +18,48 @@ namespace isc {
|
|
|
namespace resolve {
|
|
|
|
|
|
void
|
|
|
-ResolverCallbackServer::callback(bool result) {
|
|
|
- server_->resume(result);
|
|
|
+ResolverCallbackServer::success(isc::dns::MessagePtr response)
|
|
|
+{
|
|
|
+ // ignore our response here
|
|
|
+ (void)response;
|
|
|
+
|
|
|
+ server_->resume(true);
|
|
|
+ // delete our clone now
|
|
|
+ delete server_;
|
|
|
+ delete this;
|
|
|
+}
|
|
|
+
|
|
|
+void
|
|
|
+ResolverCallbackServer::failure()
|
|
|
+{
|
|
|
+ server_->resume(false);
|
|
|
+ // delete our clone now
|
|
|
delete server_;
|
|
|
delete this;
|
|
|
}
|
|
|
|
|
|
void
|
|
|
-ResolverCallbackDirect::callback(bool result)
|
|
|
+ResolverCallbackDirect::success(isc::dns::MessagePtr response)
|
|
|
{
|
|
|
- // simply return with the first rrset from answer right now
|
|
|
- if (result &&
|
|
|
- answer_message_->getRcode() == isc::dns::Rcode::NOERROR() &&
|
|
|
- answer_message_->getRRCount(isc::dns::Message::SECTION_ANSWER) > 0) {
|
|
|
- /*
|
|
|
- std::cout << *answer_message_ << std::endl;
|
|
|
- isc::dns::RRsetIterator rrsi = answer_message_->beginSection(isc::dns::Message::SECTION_ANSWER);
|
|
|
- const isc::dns::RRsetPtr result = *rrsi;
|
|
|
- callback_->success(result);
|
|
|
- */
|
|
|
- callback_->success(answer_message_);
|
|
|
+ if (response &&
|
|
|
+ response->getRcode() == isc::dns::Rcode::NOERROR() &&
|
|
|
+ response->getRRCount(isc::dns::Message::SECTION_ANSWER) > 0) {
|
|
|
+ callback_->success(response);
|
|
|
+ // once called back we don't need ourselves anymore
|
|
|
+ delete this;
|
|
|
} else {
|
|
|
- callback_->failure();
|
|
|
+ failure();
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+void
|
|
|
+ResolverCallbackDirect::failure()
|
|
|
+{
|
|
|
+ callback_->failure();
|
|
|
// once called back we don't need ourselves anymore
|
|
|
delete this;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
} // namespace resolve
|
|
|
} // namespace isc
|