X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2FHTTPClient.cxx;h=4d1f2c0e757292a8cb37e7ed81a8130882a9d65f;hb=3bcd0bafd5fba1eebadfd1cb8a7294d665cf1932;hp=e345c093d66cbd4467e052a86b84dbe363a008e0;hpb=04246f0a633e44a9f59bf1f4cf280a950bde4cd4;p=simgear.git diff --git a/simgear/io/HTTPClient.cxx b/simgear/io/HTTPClient.cxx index e345c093..4d1f2c0e 100644 --- a/simgear/io/HTTPClient.cxx +++ b/simgear/io/HTTPClient.cxx @@ -122,27 +122,28 @@ public: // socket-level errors virtual void handleError(int error) { - if (error == ENOENT) { - // 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 + const char* errStr = strerror(error); + if (!activeRequest) + { + // connection level failure, eg name lookup or routing + // we won't have an active request yet, so let's fail all of the + // requests since we presume it's a systematic failure for + // the host in question BOOST_FOREACH(Request_ptr req, sentRequests) { - req->setFailure(error, "hostname lookup failure"); + req->setFailure(error, errStr); } BOOST_FOREACH(Request_ptr req, queuedRequests) { - req->setFailure(error, "hostname lookup failure"); + req->setFailure(error, errStr); } - // name lookup failure, abandon all requests on this connection sentRequests.clear(); queuedRequests.clear(); } NetChat::handleError(error); if (activeRequest) { - SG_LOG(SG_IO, SG_INFO, "HTTP socket error"); - activeRequest->setFailure(error, "socket error"); + activeRequest->setFailure(error, errStr); activeRequest = NULL; _contentDecoder.reset(); } @@ -252,6 +253,7 @@ public: if (state == STATE_CLOSED) { if (!connectToHost()) { + return; }