summaryrefslogtreecommitdiff
path: root/indra/llmessage/llurlrequest.cpp
diff options
context:
space:
mode:
authorMark Palange <palange@lindenlab.com>2008-10-07 22:49:00 +0000
committerMark Palange <palange@lindenlab.com>2008-10-07 22:49:00 +0000
commit4296542cd062af425d7744c88d6dd2bd00daf532 (patch)
tree8926d4f0bfaa9ed672f4cf90577afcf8e7f44a97 /indra/llmessage/llurlrequest.cpp
parentc9be97fdfcc6a4c6b23a8c90916af54a38d60ab0 (diff)
Roll back of r98854 Accidentally commited merge in progress
Diffstat (limited to 'indra/llmessage/llurlrequest.cpp')
-rw-r--r--indra/llmessage/llurlrequest.cpp42
1 files changed, 20 insertions, 22 deletions
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index 518e54b79c..ff6ec9f077 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -503,29 +503,27 @@ static size_t headerCallback(void* data, size_t size, size_t nmemb, void* user)
// Per HTTP spec the first header line must be the status line.
if (!complete->haveHTTPStatus())
{
- if (header.substr(0,5) == "HTTP/")
+ std::string::iterator end = header.end();
+ std::string::iterator pos1 = std::find(header.begin(), end, ' ');
+ if (pos1 != end) ++pos1;
+ std::string::iterator pos2 = std::find(pos1, end, ' ');
+ if (pos2 != end) ++pos2;
+ std::string::iterator pos3 = std::find(pos2, end, '\r');
+
+ std::string version(header.begin(), pos1);
+ std::string status(pos1, pos2);
+ std::string reason(pos2, pos3);
+
+ int statusCode = atoi(status.c_str());
+ if (statusCode > 0)
{
- std::string::iterator end = header.end();
- std::string::iterator pos1 = std::find(header.begin(), end, ' ');
- if (pos1 != end) ++pos1;
- std::string::iterator pos2 = std::find(pos1, end, ' ');
- if (pos2 != end) ++pos2;
- std::string::iterator pos3 = std::find(pos2, end, '\r');
-
- std::string version(header.begin(), pos1);
- std::string status(pos1, pos2);
- std::string reason(pos2, pos3);
-
- int statusCode = atoi(status.c_str());
- if (statusCode >= 300 && statusCode < 400)
- {
- // This is a redirect, ignore it and all headers
- // until we find a normal status code.
- }
- else if (statusCode > 0)
- {
- complete->httpStatus((U32)statusCode, reason);
- }
+ complete->httpStatus((U32)statusCode, reason);
+ }
+ else
+ {
+ llwarns << "Unable to parse http response status line: "
+ << header << llendl;
+ complete->httpStatus(499,"Unable to parse status line.");
}
return header_len;
}