From: James Turner Date: Sun, 20 Oct 2013 22:20:49 +0000 (+0100) Subject: Fail HTTP request with missing/illegal protocols. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=48145fb2349242c97ff8725ed09f39f828872ded;p=simgear.git Fail HTTP request with missing/illegal protocols. Instead of throwing, run the failure handler for requests with either a missing spec or something other than http:// (eg, https or ftp) --- diff --git a/simgear/io/HTTPClient.cxx b/simgear/io/HTTPClient.cxx index 8b4b2594..b3dbbf4a 100644 --- a/simgear/io/HTTPClient.cxx +++ b/simgear/io/HTTPClient.cxx @@ -667,9 +667,16 @@ void Client::update(int waitTimeout) void Client::makeRequest(const Request_ptr& r) { - if( r->url().find("://") == std::string::npos ) - throw std::runtime_error("Unable to parse URL (missing scheme)"); + if( r->url().find("://") == std::string::npos ) { + r->setFailure(EINVAL, "malformed URL"); + return; + } + if( r->url().find("http://") != 0 ) { + r->setFailure(EINVAL, "only HTTP protocol is supported"); + return; + } + string host = r->host(); int port = r->port(); if (!d->proxy.empty()) {