diff options
26 files changed, 118 insertions, 154 deletions
| diff --git a/indra/llcorehttp/_httplibcurl.cpp b/indra/llcorehttp/_httplibcurl.cpp index 81b44ab90b..17e997688f 100755 --- a/indra/llcorehttp/_httplibcurl.cpp +++ b/indra/llcorehttp/_httplibcurl.cpp @@ -554,7 +554,7 @@ void HttpLibcurl::HandleCache::freeHandle(CURL * handle)  // --------------------------------------- -struct curl_slist * append_headers_to_slist(const HttpHeaders * headers, struct curl_slist * slist) +struct curl_slist * append_headers_to_slist(const HttpHeaders::ptr_t &headers, struct curl_slist * slist)  {  	const HttpHeaders::const_iterator end(headers->end());  	for (HttpHeaders::const_iterator it(headers->begin()); end != it; ++it) diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index 799587ff22..5d118a9afb 100755 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -122,7 +122,7 @@ HttpOpRequest::HttpOpRequest()  	  mReqBody(NULL),  	  mReqOffset(0),  	  mReqLength(0), -	  mReqHeaders(NULL), +	  mReqHeaders(),  	  mReqOptions(NULL),  	  mCurlActive(false),  	  mCurlHandle(NULL), @@ -135,7 +135,7 @@ HttpOpRequest::HttpOpRequest()  	  mReplyOffset(0),  	  mReplyLength(0),  	  mReplyFullLength(0), -	  mReplyHeaders(NULL), +	  mReplyHeaders(),  	  mPolicyRetries(0),  	  mPolicy503Retries(0),  	  mPolicyRetryAt(HttpTime(0)), @@ -162,12 +162,6 @@ HttpOpRequest::~HttpOpRequest()  		mReqOptions = NULL;  	} -	if (mReqHeaders) -	{ -		mReqHeaders->release(); -		mReqHeaders = NULL; -	} -  	if (mCurlHandle)  	{  		// Uncertain of thread context so free using @@ -194,11 +188,6 @@ HttpOpRequest::~HttpOpRequest()  		mReplyBody = NULL;  	} -	if (mReplyHeaders) -	{ -		mReplyHeaders->release(); -		mReplyHeaders = NULL; -	}  } @@ -299,7 +288,7 @@ HttpStatus HttpOpRequest::setupGet(HttpRequest::policy_t policy_id,  								   HttpRequest::priority_t priority,  								   const std::string & url,  								   HttpOptions * options, -								   HttpHeaders * headers) +								   HttpHeaders::ptr_t &headers)  {  	setupCommon(policy_id, priority, url, NULL, options, headers);  	mReqMethod = HOR_GET; @@ -314,7 +303,7 @@ HttpStatus HttpOpRequest::setupGetByteRange(HttpRequest::policy_t policy_id,  											size_t offset,  											size_t len,  											HttpOptions * options, -											HttpHeaders * headers) +                                            HttpHeaders::ptr_t &headers)  {  	setupCommon(policy_id, priority, url, NULL, options, headers);  	mReqMethod = HOR_GET; @@ -334,7 +323,7 @@ HttpStatus HttpOpRequest::setupPost(HttpRequest::policy_t policy_id,  									const std::string & url,  									BufferArray * body,  									HttpOptions * options, -									HttpHeaders * headers) +                                    HttpHeaders::ptr_t &headers)  {  	setupCommon(policy_id, priority, url, body, options, headers);  	mReqMethod = HOR_POST; @@ -348,7 +337,7 @@ HttpStatus HttpOpRequest::setupPut(HttpRequest::policy_t policy_id,  								   const std::string & url,  								   BufferArray * body,  								   HttpOptions * options, -								   HttpHeaders * headers) +								   HttpHeaders::ptr_t &headers)  {  	setupCommon(policy_id, priority, url, body, options, headers);  	mReqMethod = HOR_PUT; @@ -361,7 +350,7 @@ HttpStatus HttpOpRequest::setupDelete(HttpRequest::policy_t policy_id,      HttpRequest::priority_t priority,      const std::string & url,      HttpOptions * options, -    HttpHeaders * headers) +    HttpHeaders::ptr_t &headers)  {      setupCommon(policy_id, priority, url, NULL, options, headers);      mReqMethod = HOR_DELETE; @@ -375,7 +364,7 @@ HttpStatus HttpOpRequest::setupPatch(HttpRequest::policy_t policy_id,      const std::string & url,      BufferArray * body,      HttpOptions * options, -    HttpHeaders * headers) +    HttpHeaders::ptr_t &headers)  {      setupCommon(policy_id, priority, url, body, options, headers);      mReqMethod = HOR_PATCH; @@ -388,7 +377,7 @@ HttpStatus HttpOpRequest::setupCopy(HttpRequest::policy_t policy_id,      HttpRequest::priority_t priority,      const std::string & url,      HttpOptions * options, -    HttpHeaders * headers) +    HttpHeaders::ptr_t &headers)  {      setupCommon(policy_id, priority, url, NULL, options, headers);      mReqMethod = HOR_COPY; @@ -402,7 +391,7 @@ void HttpOpRequest::setupCommon(HttpRequest::policy_t policy_id,  								const std::string & url,  								BufferArray * body,  								HttpOptions * options, -								HttpHeaders * headers) +								HttpHeaders::ptr_t &headers)  {  	mProcFlags = 0U;  	mReqPolicy = policy_id; @@ -415,7 +404,7 @@ void HttpOpRequest::setupCommon(HttpRequest::policy_t policy_id,  	}  	if (headers && ! mReqHeaders)  	{ -		headers->addRef(); +		//headers->addRef();  		mReqHeaders = headers;  	}  	if (options && ! mReqOptions) @@ -467,11 +456,7 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)  	mReplyOffset = 0;  	mReplyLength = 0;  	mReplyFullLength = 0; -	if (mReplyHeaders) -	{ -		mReplyHeaders->release(); -		mReplyHeaders = NULL; -	} +    mReplyHeaders.reset();  	mReplyConType.clear();  	// *FIXME:  better error handling later @@ -946,7 +931,7 @@ size_t HttpOpRequest::headerCallback(void * data, size_t size, size_t nmemb, voi  		// Save headers in response  		if (! op->mReplyHeaders)  		{ -			op->mReplyHeaders = new HttpHeaders; +			op->mReplyHeaders = HttpHeaders::ptr_t(new HttpHeaders);  		}  		op->mReplyHeaders->append(name, value ? value : "");  	} diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h index b1bb101bea..0465c2b83f 100755 --- a/indra/llcorehttp/_httpoprequest.h +++ b/indra/llcorehttp/_httpoprequest.h @@ -41,6 +41,7 @@  #include "_httpoperation.h"  #include "_refcounted.h" +#include "httpheaders.h"  namespace LLCore  { @@ -105,7 +106,7 @@ public:  						HttpRequest::priority_t priority,  						const std::string & url,  						HttpOptions * options, -						HttpHeaders * headers); +						HttpHeaders::ptr_t & headers);  	HttpStatus setupGetByteRange(HttpRequest::policy_t policy_id,  								 HttpRequest::priority_t priority, @@ -113,40 +114,40 @@ public:  								 size_t offset,  								 size_t len,  								 HttpOptions * options, -								 HttpHeaders * headers); +								 HttpHeaders::ptr_t & headers);  	HttpStatus setupPost(HttpRequest::policy_t policy_id,  						 HttpRequest::priority_t priority,  						 const std::string & url,  						 BufferArray * body,  						 HttpOptions * options, -						 HttpHeaders * headers); +						 HttpHeaders::ptr_t & headers);  	HttpStatus setupPut(HttpRequest::policy_t policy_id,  						HttpRequest::priority_t priority,  						const std::string & url,  						BufferArray * body,  						HttpOptions * options, -						HttpHeaders * headers); +						HttpHeaders::ptr_t & headers);      HttpStatus setupDelete(HttpRequest::policy_t policy_id,                          HttpRequest::priority_t priority,                          const std::string & url,                          HttpOptions * options, -                        HttpHeaders * headers); +                        HttpHeaders::ptr_t & headers);      HttpStatus setupPatch(HttpRequest::policy_t policy_id,                          HttpRequest::priority_t priority,                          const std::string & url,                          BufferArray * body,                          HttpOptions * options, -                        HttpHeaders * headers); +                        HttpHeaders::ptr_t & headers);      HttpStatus setupCopy(HttpRequest::policy_t policy_id,                          HttpRequest::priority_t priority,                          const std::string & url,                          HttpOptions * options, -                        HttpHeaders * headers); +                        HttpHeaders::ptr_t & headers);      // Internal method used to setup the libcurl options for a request.  	// Does all the libcurl handle setup in one place. @@ -167,7 +168,7 @@ protected:  					 const std::string & url,  					 BufferArray * body,  					 HttpOptions * options, -					 HttpHeaders * headers); +					 HttpHeaders::ptr_t &headers);  	// libcurl operational callbacks  	// @@ -197,7 +198,7 @@ public:  	BufferArray *		mReqBody;  	off_t				mReqOffset;  	size_t				mReqLength; -	HttpHeaders *		mReqHeaders; +	HttpHeaders::ptr_t	mReqHeaders;  	HttpOptions *		mReqOptions;  	// Transport data @@ -215,7 +216,7 @@ public:  	off_t				mReplyOffset;  	size_t				mReplyLength;  	size_t				mReplyFullLength; -	HttpHeaders *		mReplyHeaders; +	HttpHeaders::ptr_t	mReplyHeaders;  	std::string			mReplyConType;  	int					mReplyRetryAfter; @@ -246,7 +247,7 @@ public:  // Internal function to append the contents of an HttpHeaders  // instance to a curl_slist object. -curl_slist * append_headers_to_slist(const HttpHeaders *, curl_slist * slist); +curl_slist * append_headers_to_slist(const HttpHeaders::ptr_t &, curl_slist * slist);  }   // end namespace LLCore diff --git a/indra/llcorehttp/httpheaders.cpp b/indra/llcorehttp/httpheaders.cpp index e03b1b080d..f586191a7c 100755 --- a/indra/llcorehttp/httpheaders.cpp +++ b/indra/llcorehttp/httpheaders.cpp @@ -34,7 +34,6 @@ namespace LLCore  HttpHeaders::HttpHeaders() -	: RefCounted(true)  {} diff --git a/indra/llcorehttp/httpheaders.h b/indra/llcorehttp/httpheaders.h index 8f14568fa3..a97bae5537 100755 --- a/indra/llcorehttp/httpheaders.h +++ b/indra/llcorehttp/httpheaders.h @@ -74,7 +74,7 @@ namespace LLCore  /// constructor is given a refcount.  /// -class HttpHeaders : public LLCoreInt::RefCounted +class HttpHeaders: private boost::noncopyable  {  public:  	typedef std::pair<std::string, std::string> header_t; @@ -91,10 +91,11 @@ public:  	/// to the instance.  A call to @see release() will destroy  	/// the instance.  	HttpHeaders(); +    virtual ~HttpHeaders();						// Use release() -	typedef LLCoreInt::IntrusivePtr<HttpHeaders> ptr_t; +	//typedef LLCoreInt::IntrusivePtr<HttpHeaders> ptr_t; +    typedef boost::shared_ptr<HttpHeaders> ptr_t;  protected: -	virtual ~HttpHeaders();						// Use release()  	HttpHeaders(const HttpHeaders &);			// Not defined  	void operator=(const HttpHeaders &);		// Not defined diff --git a/indra/llcorehttp/httprequest.cpp b/indra/llcorehttp/httprequest.cpp index d4c60a6f14..b5ea0b44b0 100755 --- a/indra/llcorehttp/httprequest.cpp +++ b/indra/llcorehttp/httprequest.cpp @@ -198,7 +198,7 @@ HttpHandle HttpRequest::requestGet(policy_t policy_id,  								   priority_t priority,  								   const std::string & url,  								   HttpOptions * options, -								   HttpHeaders * headers, +								   HttpHeaders::ptr_t &headers,  								   HttpHandler * user_handler)  {  	HttpStatus status; @@ -232,7 +232,7 @@ HttpHandle HttpRequest::requestGetByteRange(policy_t policy_id,  											size_t offset,  											size_t len,  											HttpOptions * options, -											HttpHeaders * headers, +											HttpHeaders::ptr_t &headers,  											HttpHandler * user_handler)  {  	HttpStatus status; @@ -265,7 +265,7 @@ HttpHandle HttpRequest::requestPost(policy_t policy_id,  									const std::string & url,  									BufferArray * body,  									HttpOptions * options, -									HttpHeaders * headers, +									HttpHeaders::ptr_t &headers,  									HttpHandler * user_handler)  {  	HttpStatus status; @@ -298,7 +298,7 @@ HttpHandle HttpRequest::requestPut(policy_t policy_id,  								   const std::string & url,  								   BufferArray * body,  								   HttpOptions * options, -								   HttpHeaders * headers, +								   HttpHeaders::ptr_t &headers,  								   HttpHandler * user_handler)  {  	HttpStatus status; @@ -329,7 +329,7 @@ HttpHandle HttpRequest::requestDelete(policy_t policy_id,      priority_t priority,      const std::string & url,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * user_handler)  {      HttpStatus status; @@ -361,7 +361,7 @@ HttpHandle HttpRequest::requestPatch(policy_t policy_id,      const std::string & url,      BufferArray * body,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * user_handler)  {      HttpStatus status; @@ -392,7 +392,7 @@ HttpHandle HttpRequest::requestCopy(policy_t policy_id,      priority_t priority,      const std::string & url,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * user_handler)  {      HttpStatus status; diff --git a/indra/llcorehttp/httprequest.h b/indra/llcorehttp/httprequest.h index e87a8b691a..c0622372e1 100755 --- a/indra/llcorehttp/httprequest.h +++ b/indra/llcorehttp/httprequest.h @@ -31,6 +31,7 @@  #include "httpcommon.h"  #include "httphandler.h" +#include "httpheaders.h"  namespace LLCore  { @@ -349,7 +350,7 @@ public:  						  priority_t priority,  						  const std::string & url,  						  HttpOptions * options, -						  HttpHeaders * headers, +						  HttpHeaders::ptr_t &headers,  						  HttpHandler * handler); @@ -392,7 +393,7 @@ public:  								   size_t offset,  								   size_t len,  								   HttpOptions * options, -								   HttpHeaders * headers, +								   HttpHeaders::ptr_t &headers,  								   HttpHandler * handler); @@ -433,7 +434,7 @@ public:  						   const std::string & url,  						   BufferArray * body,  						   HttpOptions * options, -						   HttpHeaders * headers, +						   HttpHeaders::ptr_t &headers,  						   HttpHandler * handler); @@ -474,7 +475,7 @@ public:  						  const std::string & url,  						  BufferArray * body,  						  HttpOptions * options, -						  HttpHeaders * headers, +						  HttpHeaders::ptr_t &headers,  						  HttpHandler * handler); @@ -494,7 +495,7 @@ public:              priority_t priority,              const std::string & url,              HttpOptions * options, -            HttpHeaders * headers, +            HttpHeaders::ptr_t &headers,              HttpHandler * user_handler);      /// Queue a full HTTP PUT.  Query arguments and body may @@ -517,7 +518,7 @@ public:              const std::string & url,              BufferArray * body,              HttpOptions * options, -            HttpHeaders * headers, +            HttpHeaders::ptr_t &headers,              HttpHandler * user_handler);      /// Queue a full HTTP PUT.  Query arguments and body may @@ -536,7 +537,7 @@ public:              priority_t priority,              const std::string & url,              HttpOptions * options, -            HttpHeaders * headers, +            HttpHeaders::ptr_t &headers,              HttpHandler * user_handler);      /// Queue a NoOp request. diff --git a/indra/llcorehttp/httpresponse.cpp b/indra/llcorehttp/httpresponse.cpp index 7d88f02527..f5ad2ebd47 100755 --- a/indra/llcorehttp/httpresponse.cpp +++ b/indra/llcorehttp/httpresponse.cpp @@ -39,7 +39,7 @@ HttpResponse::HttpResponse()  	  mReplyLength(0U),  	  mReplyFullLength(0U),  	  mBufferArray(NULL), -	  mHeaders(NULL), +	  mHeaders(),  	  mRetries(0U),  	  m503Retries(0U),        mRequestUrl() @@ -49,7 +49,7 @@ HttpResponse::HttpResponse()  HttpResponse::~HttpResponse()  {  	setBody(NULL); -	setHeaders(NULL); +	//setHeaders();  } @@ -72,22 +72,9 @@ void HttpResponse::setBody(BufferArray * ba)  } -void HttpResponse::setHeaders(HttpHeaders * headers) +void HttpResponse::setHeaders(HttpHeaders::ptr_t &headers)  { -	if (mHeaders == headers) -		return; -	 -	if (mHeaders) -	{ -		mHeaders->release(); -	} - -	if (headers) -	{ -		headers->addRef(); -	} -	 -	mHeaders = headers; +    mHeaders = headers;  }  size_t HttpResponse::getBodySize() const diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h index 6c3b4da5e6..0bfa4585c7 100755 --- a/indra/llcorehttp/httpresponse.h +++ b/indra/llcorehttp/httpresponse.h @@ -31,7 +31,7 @@  #include <string>  #include "httpcommon.h" - +#include "httpheaders.h"  #include "_refcounted.h" @@ -120,13 +120,13 @@ public:  	///  	/// Caller can hold onto the headers by incrementing the reference  	/// count of the returned object. -	HttpHeaders * getHeaders() const -		{ +	HttpHeaders::ptr_t getHeaders() const +	{  			return mHeaders; -		} +	}  	/// Behaves like @see setResponse() but for header data. -	void setHeaders(HttpHeaders * headers); +	void setHeaders(HttpHeaders::ptr_t &headers);  	/// If a 'Range:' header was used, these methods are involved  	/// in setting and returning data about the actual response. @@ -212,7 +212,7 @@ protected:  	unsigned int		mReplyLength;  	unsigned int		mReplyFullLength;  	BufferArray *		mBufferArray; -	HttpHeaders *		mHeaders; +	HttpHeaders::ptr_t	mHeaders;  	std::string			mContentType;  	unsigned int		mRetries;  	unsigned int		m503Retries; diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index cb05c4ff03..ed585ff64e 100755 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -407,7 +407,7 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg  		updateApplication(llformat("%s, try %d...", msg.c_str(), i+1));          LLCoreHttpUtil::requestPostWithLLSD(httpRequest.get(), LLCore::HttpRequest::DEFAULT_POLICY_ID, 0, -            host, data, httpOpts.get(), NULL, new LLCrashLoggerHandler); +            host, data, httpOpts.get(), LLCore::HttpHeaders::ptr_t(), new LLCrashLoggerHandler);          while(!gBreak)  		{ diff --git a/indra/llmessage/llcorehttputil.cpp b/indra/llmessage/llcorehttputil.cpp index 4ec01aa405..e3588b74ee 100644 --- a/indra/llmessage/llcorehttputil.cpp +++ b/indra/llmessage/llcorehttputil.cpp @@ -103,7 +103,7 @@ HttpHandle requestPostWithLLSD(HttpRequest * request,      const std::string & url,      const LLSD & body,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * handler)  {      HttpHandle handle(LLCORE_HTTP_HANDLE_INVALID); @@ -130,7 +130,7 @@ HttpHandle requestPutWithLLSD(HttpRequest * request,      const std::string & url,      const LLSD & body,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * handler)  {      HttpHandle handle(LLCORE_HTTP_HANDLE_INVALID); @@ -156,7 +156,7 @@ HttpHandle requestPatchWithLLSD(HttpRequest * request,      const std::string & url,      const LLSD & body,      HttpOptions * options, -    HttpHeaders * headers, +    HttpHeaders::ptr_t &headers,      HttpHandler * handler)  {      HttpHandle handle(LLCORE_HTTP_HANDLE_INVALID); @@ -286,7 +286,7 @@ void HttpCoroHandler::buildStatusEntry(LLCore::HttpResponse *response, LLCore::H      writeStatusCodes(status, response->getRequestURL(), httpresults);      LLSD httpHeaders = LLSD::emptyMap(); -    LLCore::HttpHeaders * hdrs = response->getHeaders(); +    LLCore::HttpHeaders::ptr_t hdrs = response->getHeaders();      if (hdrs)      { @@ -689,7 +689,7 @@ LLSD HttpCoroutineAdapter::postAndYield_(LLCoros::self & self, LLCore::HttpReque      // The HTTPCoroHandler does not self delete, so retrieval of a the contained       // pointer from the smart pointer is safe in this case.      LLCore::HttpHandle hhandle = request->requestPost(mPolicyId, mPriority, url, rawbody.get(), -        options.get(), headers.get(), handler.get()); +        options.get(), headers, handler.get());      if (hhandle == LLCORE_HTTP_HANDLE_INVALID)      { @@ -782,7 +782,7 @@ LLSD HttpCoroutineAdapter::getAndYield_(LLCoros::self & self, LLCore::HttpReques      // The HTTPCoroHandler does not self delete, so retrieval of a the contained       // pointer from the smart pointer is safe in this case.      LLCore::HttpHandle hhandle = request->requestGet(mPolicyId, mPriority, -        url, options.get(), headers.get(), handler.get()); +        url, options.get(), headers, handler.get());      if (hhandle == LLCORE_HTTP_HANDLE_INVALID)      { @@ -817,7 +817,7 @@ LLSD HttpCoroutineAdapter::deleteAndYield_(LLCoros::self & self, LLCore::HttpReq      // The HTTPCoroHandler does not self delete, so retrieval of a the contained       // pointer from the smart pointer is safe in this case.      LLCore::HttpHandle hhandle = request->requestDelete(mPolicyId, mPriority, -        url, options.get(), headers.get(), handler.get()); +        url, options.get(), headers, handler.get());      if (hhandle == LLCORE_HTTP_HANDLE_INVALID)      { diff --git a/indra/llmessage/llcorehttputil.h b/indra/llmessage/llcorehttputil.h index 7dd161d1cd..a54f94e6f0 100644 --- a/indra/llmessage/llcorehttputil.h +++ b/indra/llmessage/llcorehttputil.h @@ -112,7 +112,7 @@ LLCore::HttpHandle requestPostWithLLSD(LLCore::HttpRequest * request,  									   const std::string & url,  									   const LLSD & body,  									   LLCore::HttpOptions * options, -									   LLCore::HttpHeaders * headers, +									   LLCore::HttpHeaders::ptr_t &headers,  									   LLCore::HttpHandler * handler);  inline LLCore::HttpHandle requestPostWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -125,7 +125,7 @@ inline LLCore::HttpHandle requestPostWithLLSD(LLCore::HttpRequest::ptr_t & reque  	LLCore::HttpHandler * handler)  {      return requestPostWithLLSD(request.get(), policy_id, priority, -        url, body, options.get(), headers.get(), handler); +        url, body, options.get(), headers, handler);  }  inline LLCore::HttpHandle requestPostWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -136,7 +136,7 @@ inline LLCore::HttpHandle requestPostWithLLSD(LLCore::HttpRequest::ptr_t & reque      LLCore::HttpHandler * handler)  {      return requestPostWithLLSD(request.get(), policy_id, priority, -        url, body, NULL, NULL, handler); +        url, body, NULL, LLCore::HttpHeaders::ptr_t(), handler);  } @@ -162,7 +162,7 @@ LLCore::HttpHandle requestPutWithLLSD(LLCore::HttpRequest * request,  	const std::string & url,  	const LLSD & body,  	LLCore::HttpOptions * options, -	LLCore::HttpHeaders * headers, +	LLCore::HttpHeaders::ptr_t &headers,  	LLCore::HttpHandler * handler);  inline LLCore::HttpHandle requestPutWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -175,7 +175,7 @@ inline LLCore::HttpHandle requestPutWithLLSD(LLCore::HttpRequest::ptr_t & reques  	LLCore::HttpHandler * handler)  {      return requestPutWithLLSD(request.get(), policy_id, priority, -        url, body, options.get(), headers.get(), handler); +        url, body, options.get(), headers, handler);  }  inline LLCore::HttpHandle requestPutWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -186,7 +186,7 @@ inline LLCore::HttpHandle requestPutWithLLSD(LLCore::HttpRequest::ptr_t & reques      LLCore::HttpHandler * handler)  {      return requestPutWithLLSD(request.get(), policy_id, priority, -        url, body, NULL, NULL, handler); +        url, body, NULL, LLCore::HttpHeaders::ptr_t(), handler);  }  /// Issue a standard HttpRequest::requestPatch() call but using @@ -211,7 +211,7 @@ LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest * request,      const std::string & url,      const LLSD & body,      LLCore::HttpOptions * options, -    LLCore::HttpHeaders * headers, +    LLCore::HttpHeaders::ptr_t &headers,      LLCore::HttpHandler * handler);  inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -224,7 +224,7 @@ inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & requ      LLCore::HttpHandler * handler)  {      return requestPatchWithLLSD(request.get(), policy_id, priority, -        url, body, options.get(), headers.get(), handler); +        url, body, options.get(), headers, handler);  }  inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & request, @@ -235,7 +235,7 @@ inline LLCore::HttpHandle requestPatchWithLLSD(LLCore::HttpRequest::ptr_t & requ      LLCore::HttpHandler * handler)  {      return requestPatchWithLLSD(request.get(), policy_id, priority, -        url, body, NULL, NULL, handler); +        url, body, NULL, LLCore::HttpHeaders::ptr_t(), handler);  }  //========================================================================= diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index e492b8cf5d..fe01288e23 100755 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -352,6 +352,7 @@ void LLAssetUploadResponder::uploadComplete(const LLSD& content)  {  } +#if 0  LLNewAgentInventoryResponder::LLNewAgentInventoryResponder(  	const LLSD& post_data,  	const LLUUID& vfile_id, @@ -473,6 +474,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)  	//LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE);  } +#endif  LLUpdateAgentInventoryResponder::LLUpdateAgentInventoryResponder(  	const LLSD& post_data, diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h index 18968bb1af..6828678f09 100755 --- a/indra/newview/llassetuploadresponders.h +++ b/indra/newview/llassetuploadresponders.h @@ -60,6 +60,7 @@ protected:  	std::string mFileName;  }; +#if 0  // TODO*: Remove this once deprecated  class LLNewAgentInventoryResponder : public LLAssetUploadResponder  { @@ -78,7 +79,7 @@ public:  protected:  	virtual void httpFailure();  }; - +#endif  #if 0  // A base class which goes through and performs some default  // actions for variable price uploads.  If more specific actions diff --git a/indra/newview/llhttpretrypolicy.cpp b/indra/newview/llhttpretrypolicy.cpp index 530eb685fa..e2e151eb63 100755 --- a/indra/newview/llhttpretrypolicy.cpp +++ b/indra/newview/llhttpretrypolicy.cpp @@ -56,7 +56,7 @@ bool LLAdaptiveRetryPolicy::getRetryAfter(const LLSD& headers, F32& retry_header  			&& getSecondsUntilRetryAfter(headers[HTTP_IN_HEADER_RETRY_AFTER].asStringRef(), retry_header_time));  } -bool LLAdaptiveRetryPolicy::getRetryAfter(const LLCore::HttpHeaders *headers, F32& retry_header_time) +bool LLAdaptiveRetryPolicy::getRetryAfter(const LLCore::HttpHeaders::ptr_t &headers, F32& retry_header_time)  {  	if (headers)  	{ @@ -85,7 +85,7 @@ void LLAdaptiveRetryPolicy::onFailure(S32 status, const LLSD& headers)  void LLAdaptiveRetryPolicy::onFailure(const LLCore::HttpResponse *response)  {  	F32 retry_header_time; -	const LLCore::HttpHeaders *headers = response->getHeaders(); +	const LLCore::HttpHeaders::ptr_t headers = response->getHeaders();  	bool has_retry_header_time = getRetryAfter(headers,retry_header_time);  	onFailureCommon(response->getStatus().getType(), has_retry_header_time, retry_header_time);  } diff --git a/indra/newview/llhttpretrypolicy.h b/indra/newview/llhttpretrypolicy.h index cf79e0b401..c0cc263546 100755 --- a/indra/newview/llhttpretrypolicy.h +++ b/indra/newview/llhttpretrypolicy.h @@ -79,7 +79,7 @@ public:  protected:  	void init();  	bool getRetryAfter(const LLSD& headers, F32& retry_header_time); -	bool getRetryAfter(const LLCore::HttpHeaders *headers, F32& retry_header_time); +	bool getRetryAfter(const LLCore::HttpHeaders::ptr_t &headers, F32& retry_header_time);  	void onFailureCommon(S32 status, bool has_retry_header_time, F32 retry_header_time);  private: diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 6d21dd4ba7..cf550c20c5 100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -149,7 +149,7 @@ LLInventoryModel::LLInventoryModel()  	mHttpRequestFG(NULL),  	mHttpRequestBG(NULL),  	mHttpOptions(NULL), -	mHttpHeaders(NULL), +	mHttpHeaders(),  	mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),  	mHttpPriorityFG(0),  	mHttpPriorityBG(0), @@ -178,11 +178,7 @@ void LLInventoryModel::cleanupInventory()  	mObservers.clear();  	// Run down HTTP transport -	if (mHttpHeaders) -	{ -		mHttpHeaders->release(); -		mHttpHeaders = NULL; -	} +    mHttpHeaders.reset();  	if (mHttpOptions)  	{  		mHttpOptions->release(); @@ -2422,7 +2418,7 @@ void LLInventoryModel::initHttpRequest()  		mHttpOptions->setTransferTimeout(300);  		mHttpOptions->setUseRetryAfter(true);  		// mHttpOptions->setTrace(2);		// Do tracing of requests -		mHttpHeaders = new LLCore::HttpHeaders; +        mHttpHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  		mHttpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_LLSD_XML);  		mHttpHeaders->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_LLSD_XML);  		mHttpPolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_INVENTORY); diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 26ee06535a..9711fb95f6 100755 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -572,7 +572,7 @@ private:  	LLCore::HttpRequest *				mHttpRequestFG;  	LLCore::HttpRequest *				mHttpRequestBG;  	LLCore::HttpOptions *				mHttpOptions; -	LLCore::HttpHeaders *				mHttpHeaders; +	LLCore::HttpHeaders::ptr_t			mHttpHeaders;  	LLCore::HttpRequest::policy_t		mHttpPolicyClass;  	LLCore::HttpRequest::priority_t		mHttpPriorityFG;  	LLCore::HttpRequest::priority_t		mHttpPriorityBG; diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp index aef5bcf0dd..e6f3540877 100755 --- a/indra/newview/llmaterialmgr.cpp +++ b/indra/newview/llmaterialmgr.cpp @@ -712,7 +712,7 @@ void LLMaterialMgr::processGetAllQueue()  			);  		LLCore::HttpHandle handle = mHttpRequest->requestGet(mHttpPolicy, mHttpPriority, capURL, -				mHttpOptions.get(), mHttpHeaders.get(), handler); +				mHttpOptions.get(), mHttpHeaders, handler);  		if (handle == LLCORE_HTTP_HANDLE_INVALID)  		{ diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 648056484e..7f8e357e33 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -740,7 +740,7 @@ LLMeshRepoThread::LLMeshRepoThread()    mHttpRequest(NULL),    mHttpOptions(NULL),    mHttpLargeOptions(NULL), -  mHttpHeaders(NULL), +  mHttpHeaders(),    mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),    mHttpLegacyPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),    mHttpLargePolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID), @@ -759,7 +759,7 @@ LLMeshRepoThread::LLMeshRepoThread()  	mHttpLargeOptions = new LLCore::HttpOptions;  	mHttpLargeOptions->setTransferTimeout(LARGE_MESH_XFER_TIMEOUT);  	mHttpLargeOptions->setUseRetryAfter(gSavedSettings.getBOOL("MeshUseHttpRetryAfter")); -	mHttpHeaders = new LLCore::HttpHeaders; +	mHttpHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  	mHttpHeaders->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_VND_LL_MESH);  	mHttpPolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_MESH2);  	mHttpLegacyPolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_MESH1); @@ -781,11 +781,7 @@ LLMeshRepoThread::~LLMeshRepoThread()  		delete *iter;  	}  	mHttpRequestSet.clear(); -	if (mHttpHeaders) -	{ -		mHttpHeaders->release(); -		mHttpHeaders = NULL; -	} +    mHttpHeaders.reset();  	if (mHttpOptions)  	{  		mHttpOptions->release(); @@ -1886,7 +1882,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,  	mHttpOptions->setTransferTimeout(mMeshUploadTimeOut);  	mHttpOptions->setUseRetryAfter(gSavedSettings.getBOOL("MeshUseHttpRetryAfter"));  	mHttpOptions->setRetries(UPLOAD_RETRY_LIMIT); -	mHttpHeaders = new LLCore::HttpHeaders; +	mHttpHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  	mHttpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_LLSD_XML);  	mHttpPolicyClass = LLAppViewer::instance()->getAppCoreHttp().getPolicy(LLAppCoreHttp::AP_UPLOADS);  	mHttpPriority = 0; @@ -1894,11 +1890,6 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,  LLMeshUploadThread::~LLMeshUploadThread()  { -	if (mHttpHeaders) -	{ -		mHttpHeaders->release(); -		mHttpHeaders = NULL; -	}  	if (mHttpOptions)  	{  		mHttpOptions->release(); diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 39280bea3a..dc1fa883b3 100755 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -324,7 +324,7 @@ public:  	LLCore::HttpRequest *				mHttpRequest;  	LLCore::HttpOptions *				mHttpOptions;  	LLCore::HttpOptions *				mHttpLargeOptions; -	LLCore::HttpHeaders *				mHttpHeaders; +	LLCore::HttpHeaders::ptr_t			mHttpHeaders;  	LLCore::HttpRequest::policy_t		mHttpPolicyClass;  	LLCore::HttpRequest::policy_t		mHttpLegacyPolicyClass;  	LLCore::HttpRequest::policy_t		mHttpLargePolicyClass; @@ -494,7 +494,7 @@ private:  	LLCore::HttpStatus					mHttpStatus;  	LLCore::HttpRequest *				mHttpRequest;  	LLCore::HttpOptions *				mHttpOptions; -	LLCore::HttpHeaders *				mHttpHeaders; +	LLCore::HttpHeaders::ptr_t			mHttpHeaders;  	LLCore::HttpRequest::policy_t		mHttpPolicyClass;  	LLCore::HttpRequest::priority_t		mHttpPriority;  }; diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index f4b1ff7313..1055216b65 100755 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2511,9 +2511,9 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image  	  mHttpRequest(NULL),  	  mHttpOptions(NULL),  	  mHttpOptionsWithHeaders(NULL), -	  mHttpHeaders(NULL), +	  mHttpHeaders(),  	  mHttpPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID), -	  mHttpMetricsHeaders(NULL), +	  mHttpMetricsHeaders(),  	  mHttpMetricsPolicyClass(LLCore::HttpRequest::DEFAULT_POLICY_ID),  	  mTotalCacheReadCount(0U),  	  mTotalCacheWriteCount(0U), @@ -2531,10 +2531,10 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image  	mHttpOptions = new LLCore::HttpOptions;  	mHttpOptionsWithHeaders = new LLCore::HttpOptions;  	mHttpOptionsWithHeaders->setWantHeaders(true); -	mHttpHeaders = new LLCore::HttpHeaders; +    mHttpHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  	mHttpHeaders->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_IMAGE_X_J2C);  	mHttpPolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_TEXTURE); -	mHttpMetricsHeaders = new LLCore::HttpHeaders; +    mHttpMetricsHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  	mHttpMetricsHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_LLSD_XML);  	mHttpMetricsPolicyClass = app_core_http.getPolicy(LLAppCoreHttp::AP_REPORTING);  	mHttpHighWater = HTTP_NONPIPE_REQUESTS_HIGH_WATER; @@ -2580,18 +2580,6 @@ LLTextureFetch::~LLTextureFetch()  		mHttpOptionsWithHeaders = NULL;  	} -	if (mHttpHeaders) -	{ -		mHttpHeaders->release(); -		mHttpHeaders = NULL; -	} - -	if (mHttpMetricsHeaders) -	{ -		mHttpMetricsHeaders->release(); -		mHttpMetricsHeaders = NULL; -	} -  	mHttpWaitResource.clear();  	delete mHttpRequest; @@ -4162,7 +4150,7 @@ LLTextureFetchDebugger::LLTextureFetchDebugger(LLTextureFetch* fetcher, LLTextur  	mFetcher(fetcher),  	mTextureCache(cache),  	mImageDecodeThread(imagedecodethread), -	mHttpHeaders(NULL), +	mHttpHeaders(),  	mHttpPolicyClass(fetcher->getPolicyClass()),  	mNbCurlCompleted(0),  	mTempIndex(0), @@ -4176,11 +4164,6 @@ LLTextureFetchDebugger::~LLTextureFetchDebugger()  	mFetchingHistory.clear();  	mStopDebug = TRUE;  	tryToStopDebug(); -	if (mHttpHeaders) -	{ -		mHttpHeaders->release(); -		mHttpHeaders = NULL; -	}  }  void LLTextureFetchDebugger::init() @@ -4225,7 +4208,7 @@ void LLTextureFetchDebugger::init()  	if (! mHttpHeaders)  	{ -		mHttpHeaders = new LLCore::HttpHeaders; +        mHttpHeaders = LLCore::HttpHeaders::ptr_t(new LLCore::HttpHeaders);  		mHttpHeaders->append(HTTP_OUT_HEADER_ACCEPT, HTTP_CONTENT_IMAGE_X_J2C);  	}  } diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 27779a31e0..a5d6cd63d7 100755 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -177,7 +177,7 @@ public:  	// to do that to hold a reference for any length of time.  	//  	// Threads:  T* -	LLCore::HttpHeaders * getMetricsHeaders() const	{ return mHttpMetricsHeaders; } +	LLCore::HttpHeaders::ptr_t getMetricsHeaders() const	{ return mHttpMetricsHeaders; }  	// Threads:  T*  	LLCore::HttpRequest::policy_t getMetricsPolicyClass() const { return mHttpMetricsPolicyClass; } @@ -356,9 +356,9 @@ private:  	LLCore::HttpRequest *				mHttpRequest;					// Ttf  	LLCore::HttpOptions *				mHttpOptions;					// Ttf  	LLCore::HttpOptions *				mHttpOptionsWithHeaders;		// Ttf -	LLCore::HttpHeaders *				mHttpHeaders;					// Ttf +	LLCore::HttpHeaders::ptr_t			mHttpHeaders;					// Ttf  	LLCore::HttpRequest::policy_t		mHttpPolicyClass;				// T* -	LLCore::HttpHeaders *				mHttpMetricsHeaders;			// Ttf +	LLCore::HttpHeaders::ptr_t			mHttpMetricsHeaders;			// Ttf  	LLCore::HttpRequest::policy_t		mHttpMetricsPolicyClass;		// T*  	S32									mHttpHighWater;					// Ttf  	S32									mHttpLowWater;					// Ttf @@ -510,7 +510,7 @@ private:  	LLTextureFetch* mFetcher;  	LLTextureCache* mTextureCache;  	LLImageDecodeThread* mImageDecodeThread; -	LLCore::HttpHeaders* mHttpHeaders; +	LLCore::HttpHeaders::ptr_t mHttpHeaders;  	LLCore::HttpRequest::policy_t mHttpPolicyClass;  	S32 mNumFetchedTextures; diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp index bfcdbfc109..efaf95444d 100644 --- a/indra/newview/llviewerassetupload.cpp +++ b/indra/newview/llviewerassetupload.cpp @@ -394,6 +394,9 @@ LLSD NewFileResourceUploadInfo::exportTempFile()  }  //========================================================================= + + +//=========================================================================  /*static*/  void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoros::self &self, LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter, const LLUUID &id,      std::string url, NewResourceUploadInfo::ptr_t uploadInfo) @@ -552,3 +555,4 @@ void LLViewerAssetUpload::HandleUploadError(LLCore::HttpStatus status, LLSD &res      }  } + diff --git a/indra/newview/llviewerassetupload.h b/indra/newview/llviewerassetupload.h index 771828b393..a2b250b33b 100644 --- a/indra/newview/llviewerassetupload.h +++ b/indra/newview/llviewerassetupload.h @@ -176,6 +176,19 @@ private:  }; +#if 0 +class NotecardResourceUploadInfo : public NewResourceUploadInfo +{ +public: +    NotecardResourceUploadInfo( +        ); + + +protected: + +private: +}; +#endif  class LLViewerAssetUpload  { diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index 066970614a..63ad4bd49b 100755 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -390,7 +390,7 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)  	mHandler = LLXMLRPCTransaction::Handler::ptr_t(new Handler( mHttpRequest, this ));  	mPostH = mHttpRequest->requestPost(LLCore::HttpRequest::DEFAULT_POLICY_ID, 0,  -		mURI, body.get(), httpOpts.get(), httpHeaders.get(), mHandler.get()); +		mURI, body.get(), httpOpts.get(), httpHeaders, mHandler.get());  } | 
