Make sure lookup_hostname_txt isn't checking lookup_hostname's cache for answers.

This commit is contained in:
Vlad Grigorescu 2012-11-03 11:07:48 -04:00
parent d9803a0d9d
commit a1c0b853fe

View file

@ -1055,7 +1055,24 @@ void DNS_Mgr::AsyncLookupName(string name, LookupCallback* callback, bool is_txt
} }
AsyncRequest* req = 0; AsyncRequest* req = 0;
if ( is_txt )
{
// Have we already a request waiting for this host?
AsyncRequestTextMap::iterator i = asyncs_texts.find(name);
if ( i != asyncs_texts.end() )
req = i->second;
else
{
// A new one.
req = new AsyncRequest;
req->name = name;
req->is_txt = is_txt;
asyncs_queued.push_back(req);
asyncs_texts.insert(AsyncRequestTextMap::value_type(name, req));
}
}
else
{
// Have we already a request waiting for this host? // Have we already a request waiting for this host?
AsyncRequestNameMap::iterator i = asyncs_names.find(name); AsyncRequestNameMap::iterator i = asyncs_names.find(name);
if ( i != asyncs_names.end() ) if ( i != asyncs_names.end() )
@ -1069,7 +1086,7 @@ void DNS_Mgr::AsyncLookupName(string name, LookupCallback* callback, bool is_txt
asyncs_queued.push_back(req); asyncs_queued.push_back(req);
asyncs_names.insert(AsyncRequestNameMap::value_type(name, req)); asyncs_names.insert(AsyncRequestNameMap::value_type(name, req));
} }
}
req->callbacks.push_back(callback); req->callbacks.push_back(callback);
IssueAsyncRequests(); IssueAsyncRequests();
@ -1170,7 +1187,6 @@ void DNS_Mgr::CheckAsyncTextRequest(const char* host, bool timeout)
// Note that this code is a mirror of that for CheckAsyncAddrRequest. // Note that this code is a mirror of that for CheckAsyncAddrRequest.
AsyncRequestTextMap::iterator i = asyncs_texts.find(host); AsyncRequestTextMap::iterator i = asyncs_texts.find(host);
if ( i != asyncs_texts.end() ) if ( i != asyncs_texts.end() )
{ {
const char* name = LookupTextInCache(host); const char* name = LookupTextInCache(host);