From ffec92ec579cdb44a38f1561500fe50e8792c11e Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Tue, 19 Jan 2016 10:42:25 +0900 Subject: [PATCH] Fix mysterious 1 second delay with async DNS --- src/DHTEntryPointNameResolveCommand.cc | 37 +++++++++++++------------- src/NameResolveCommand.cc | 37 +++++++++++++------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/DHTEntryPointNameResolveCommand.cc b/src/DHTEntryPointNameResolveCommand.cc index 8854f0aa..7379ec0a 100644 --- a/src/DHTEntryPointNameResolveCommand.cc +++ b/src/DHTEntryPointNameResolveCommand.cc @@ -170,30 +170,29 @@ int DHTEntryPointNameResolveCommand::resolveHostname( { if (!asyncNameResolverMan_->started()) { asyncNameResolverMan_->startAsync(hostname, e_, this); - return 0; } - else { - switch (asyncNameResolverMan_->getStatus()) { - case -1: + + switch (asyncNameResolverMan_->getStatus()) { + case -1: + A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), + asyncNameResolverMan_->getLastError().c_str())); + return -1; + case 0: + return 0; + case 1: + asyncNameResolverMan_->getResolvedAddress(res); + if (res.empty()) { A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), - asyncNameResolverMan_->getLastError().c_str())); + "No address returned")); return -1; - case 0: - return 0; - case 1: - asyncNameResolverMan_->getResolvedAddress(res); - if (res.empty()) { - A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), - "No address returned")); - return -1; - } - else { - A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_COMPLETE, getCuid(), - hostname.c_str(), res.front().c_str())); - return 1; - } + } + else { + A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_COMPLETE, getCuid(), hostname.c_str(), + res.front().c_str())); + return 1; } } + // Unreachable return 0; } diff --git a/src/NameResolveCommand.cc b/src/NameResolveCommand.cc index 48ffe77a..5c56b6d2 100644 --- a/src/NameResolveCommand.cc +++ b/src/NameResolveCommand.cc @@ -148,30 +148,29 @@ int NameResolveCommand::resolveHostname(std::vector& res, { if (!asyncNameResolverMan_->started()) { asyncNameResolverMan_->startAsync(hostname, e_, this); - return 0; } - else { - switch (asyncNameResolverMan_->getStatus()) { - case -1: + + switch (asyncNameResolverMan_->getStatus()) { + case -1: + A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), + asyncNameResolverMan_->getLastError().c_str())); + return -1; + case 0: + return 0; + case 1: + asyncNameResolverMan_->getResolvedAddress(res); + if (res.empty()) { A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), - asyncNameResolverMan_->getLastError().c_str())); + "No address returned")); return -1; - case 0: - return 0; - case 1: - asyncNameResolverMan_->getResolvedAddress(res); - if (res.empty()) { - A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_FAILED, getCuid(), hostname.c_str(), - "No address returned")); - return -1; - } - else { - A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_COMPLETE, getCuid(), - hostname.c_str(), res.front().c_str())); - return 1; - } + } + else { + A2_LOG_INFO(fmt(MSG_NAME_RESOLUTION_COMPLETE, getCuid(), hostname.c_str(), + res.front().c_str())); + return 1; } } + // Unreachable return 0; }