HTTP: tweak for malformed header handling.
This commit is contained in:
@@ -65,6 +65,12 @@ class Connection;
|
||||
typedef std::multimap<std::string, Connection*> ConnectionDict;
|
||||
typedef std::list<Request_ptr> RequestList;
|
||||
|
||||
static bool isFailureStatus(int httpStatus)
|
||||
{
|
||||
int majorCode = httpStatus / 100;
|
||||
return (majorCode != 2);
|
||||
}
|
||||
|
||||
class Client::ClientPrivate
|
||||
{
|
||||
public:
|
||||
@@ -214,8 +220,12 @@ public:
|
||||
assert(state == STATE_WAITING_FOR_RESPONSE);
|
||||
|
||||
activeRequest = sentRequests.front();
|
||||
|
||||
activeRequest->responseStart(buffer);
|
||||
activeRequest->responseStart(buffer);
|
||||
if (isFailureStatus(activeRequest->responseCode())) {
|
||||
handleError(EIO);
|
||||
return;
|
||||
}
|
||||
|
||||
state = STATE_GETTING_HEADERS;
|
||||
buffer.clear();
|
||||
if (activeRequest->responseCode() == 204) {
|
||||
|
||||
@@ -115,7 +115,6 @@ void Request::responseStart(const std::string& r)
|
||||
const int maxSplit = 2; // HTTP/1.1 nnn reason-string
|
||||
string_list parts = strutils::split(r, NULL, maxSplit);
|
||||
if (parts.size() != 3) {
|
||||
SG_LOG(SG_IO, SG_WARN, "HTTP::Request: malformed response start:" << r);
|
||||
setFailure(400, "malformed HTTP response header");
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user