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)
This commit is contained in:
James Turner
2013-10-20 23:20:49 +01:00
parent 49730cadee
commit 48145fb234

View File

@@ -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()) {