From b74d2ae9fa35026aa82987e89611fd341acda394 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sat, 29 Dec 2012 14:36:38 +0000 Subject: [PATCH] Notify all requests on name lookup failures. Since there's no active request during a name lookup failure, explicitly fail all sent and queued requests, so the Request subclasses can take regular failure action. --- simgear/io/HTTPClient.cxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/simgear/io/HTTPClient.cxx b/simgear/io/HTTPClient.cxx index ec25011f..71f03e37 100644 --- a/simgear/io/HTTPClient.cxx +++ b/simgear/io/HTTPClient.cxx @@ -88,13 +88,24 @@ public: virtual void handleError(int error) { if (error == ENOENT) { - // name lookup failure, abandon all requests on this connection + // name lookup failure + // we won't have an active request yet, so the logic below won't + // fire to actually call setFailure. Let's fail all of the requests + BOOST_FOREACH(Request_ptr req, sentRequests) { + req->setFailure(error, "hostname lookup failure"); + } + + BOOST_FOREACH(Request_ptr req, queuedRequests) { + req->setFailure(error, "hostname lookup failure"); + } + + // name lookup failure, abandon all requests on this connection sentRequests.clear(); queuedRequests.clear(); } NetChat::handleError(error); - if (activeRequest) { + if (activeRequest) { SG_LOG(SG_IO, SG_INFO, "HTTP socket error"); activeRequest->setFailure(error, "socket error"); activeRequest = NULL; -- 2.39.5