From 48145fb2349242c97ff8725ed09f39f828872ded Mon Sep 17 00:00:00 2001 From: James Turner Date: Sun, 20 Oct 2013 23:20:49 +0100 Subject: [PATCH] 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) --- simgear/io/HTTPClient.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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()) { -- 2.39.5