svn merge -r 108748:109731 svn+ssh://svn.lindenlab.com/svn/linden/branches/server/server-1.25
Merge server 1.25 back to trunk
Conflicts:
C indra/llcommon/llversionserver.h : svn reverted
C indra/tools/bill/MoneyMachine.pm : one conflict, only difference
was a blank line.
C indra/newsim/lllslmanager.cpp : kept merge-right, in consultation
C indra/newsim/lllslmanager.h : with babbage
C indra/newsim/llagentinfo.cpp : (runNested, not runSpecial)
C indra/test/test_entity_query.py : Kept merge-right
C indra/test/test_agent_linden_dollar.py : Kept merge-right
--> Kartic fixed these testes in server-1.25
C indra/test/template/httpd.tmpl : Kept merge-right
(the IfModule version)
master
parent
6861459c48
commit
ea8e83274a
|
|
@ -36,7 +36,7 @@
|
|||
const S32 LL_VERSION_MAJOR = 1;
|
||||
const S32 LL_VERSION_MINOR = 27;
|
||||
const S32 LL_VERSION_PATCH = 0;
|
||||
const S32 LL_VERSION_BUILD = 108794;
|
||||
const S32 LL_VERSION_BUILD = 109809;
|
||||
|
||||
const char * const LL_CHANNEL = "Second Life Server";
|
||||
|
||||
|
|
|
|||
|
|
@ -502,33 +502,25 @@ static size_t headerCallback(void* data, size_t size, size_t nmemb, void* user)
|
|||
std::string header(header_line, header_len);
|
||||
|
||||
// Per HTTP spec the first header line must be the status line.
|
||||
if (!complete->haveHTTPStatus())
|
||||
if (header.substr(0,5) == "HTTP/")
|
||||
{
|
||||
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);
|
||||
|
||||
S32 status_code = atoi(status.c_str());
|
||||
if (status_code > 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)status_code, reason);
|
||||
return header_len;
|
||||
}
|
||||
return header_len;
|
||||
}
|
||||
|
||||
std::string::iterator sep = std::find(header.begin(),header.end(),':');
|
||||
|
|
@ -593,8 +585,7 @@ LLIOPipe::EStatus LLContextURLExtractor::process_impl(
|
|||
* LLURLRequestComplete
|
||||
*/
|
||||
LLURLRequestComplete::LLURLRequestComplete() :
|
||||
mRequestStatus(LLIOPipe::STATUS_ERROR),
|
||||
mHaveHTTPStatus(false)
|
||||
mRequestStatus(LLIOPipe::STATUS_ERROR)
|
||||
{
|
||||
LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
|
||||
}
|
||||
|
|
@ -610,12 +601,6 @@ void LLURLRequestComplete::header(const std::string& header, const std::string&
|
|||
{
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLURLRequestComplete::httpStatus(U32 status, const std::string& reason)
|
||||
{
|
||||
mHaveHTTPStatus = true;
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLURLRequestComplete::complete(const LLChannelDescriptors& channels,
|
||||
const buffer_ptr_t& buffer)
|
||||
|
|
|
|||
|
|
@ -287,11 +287,13 @@ class LLURLRequestComplete : public LLIOPipe
|
|||
{
|
||||
public:
|
||||
|
||||
// Called once for each header received, except status lines
|
||||
virtual void header(const std::string& header, const std::string& value);
|
||||
///< Called once for each header received, prior to httpStatus
|
||||
|
||||
virtual void httpStatus(U32 status, const std::string& reason);
|
||||
///< Always called on request completion, prior to complete
|
||||
// May be called more than once, particularly for redirects and proxy madness.
|
||||
// Ex. a 200 for a connection to https through a proxy, followed by the "real" status
|
||||
// a 3xx for a redirect followed by a "real" status, or more redirects.
|
||||
virtual void httpStatus(U32 status, const std::string& reason) { }
|
||||
|
||||
virtual void complete(
|
||||
const LLChannelDescriptors& channels,
|
||||
|
|
@ -328,9 +330,6 @@ public:
|
|||
LLURLRequestComplete();
|
||||
virtual ~LLURLRequestComplete();
|
||||
|
||||
// The first line of an http response must be the status line
|
||||
// true if we have already parsed this line.
|
||||
bool haveHTTPStatus() const { return mHaveHTTPStatus; }
|
||||
protected:
|
||||
/* @name LLIOPipe virtual implementations
|
||||
*/
|
||||
|
|
@ -349,8 +348,6 @@ protected:
|
|||
// value to note if we actually got the response. This value
|
||||
// depends on correct useage from the LLURLRequest instance.
|
||||
EStatus mRequestStatus;
|
||||
|
||||
bool mHaveHTTPStatus;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -434,6 +434,13 @@ public:
|
|||
F32 quanta,
|
||||
U32& events_processed, LLTimer& timer);
|
||||
|
||||
// NOTE: babbage: this must be used on occasions where another script may already be executing. Only 2 levels of nesting are allowed.
|
||||
// Provided to support bizarre detach behaviour only. Do not use.
|
||||
virtual F32 runNested(BOOL b_print, const LLUUID &id,
|
||||
const char **errorstr,
|
||||
F32 quanta,
|
||||
U32& events_processed, LLTimer& timer);
|
||||
|
||||
// Run smallest possible amount of code: an instruction for LSL2, a segment
|
||||
// between save tests for Mono
|
||||
void runInstructions(BOOL b_print, const LLUUID &id,
|
||||
|
|
|
|||
|
|
@ -961,6 +961,11 @@ F32 LLScriptExecute::runQuanta(BOOL b_print, const LLUUID &id, const char **erro
|
|||
return inloop;
|
||||
}
|
||||
|
||||
F32 LLScriptExecute::runNested(BOOL b_print, const LLUUID &id, const char **errorstr, F32 quanta, U32& events_processed, LLTimer& timer)
|
||||
{
|
||||
return LLScriptExecute::runQuanta(b_print, id, errorstr, quanta, events_processed, timer);
|
||||
}
|
||||
|
||||
BOOL run_noop(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id)
|
||||
{
|
||||
if (b_print)
|
||||
|
|
|
|||
Loading…
Reference in New Issue