diff options
Diffstat (limited to 'indra/llcorehttp/tests')
| -rwxr-xr-x | indra/llcorehttp/tests/llcorehttp_test.cpp | 2 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httpheaders.hpp | 27 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httpoperation.hpp | 20 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httprequest.hpp | 497 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httprequestqueue.hpp | 32 | ||||
| -rwxr-xr-x | indra/llcorehttp/tests/test_httpstatus.hpp | 126 | 
6 files changed, 292 insertions, 412 deletions
diff --git a/indra/llcorehttp/tests/llcorehttp_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp index e863ddd13f..bef762f5ce 100755 --- a/indra/llcorehttp/tests/llcorehttp_test.cpp +++ b/indra/llcorehttp/tests/llcorehttp_test.cpp @@ -160,7 +160,7 @@ void stop_thread(LLCore::HttpRequest * req)  {  	if (req)  	{ -		req->requestStopThread(NULL); +		req->requestStopThread(LLCore::HttpHandler::ptr_t());  		int count = 0;  		int limit = 10; diff --git a/indra/llcorehttp/tests/test_httpheaders.hpp b/indra/llcorehttp/tests/test_httpheaders.hpp index 668c36dc66..c05f1d9429 100755 --- a/indra/llcorehttp/tests/test_httpheaders.hpp +++ b/indra/llcorehttp/tests/test_httpheaders.hpp @@ -59,13 +59,12 @@ void HttpHeadersTestObjectType::test<1>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); -	ensure("One ref on construction of HttpHeaders", headers->getRefCount() == 1); +	HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders());  	ensure("Memory being used", mMemTotal < GetMemTotal());  	ensure("Nothing in headers", 0 == headers->size());  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); @@ -80,7 +79,7 @@ void HttpHeadersTestObjectType::test<2>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); +	HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders());  	{  		// Append a few strings @@ -101,7 +100,7 @@ void HttpHeadersTestObjectType::test<2>()  	}  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); @@ -116,7 +115,7 @@ void HttpHeadersTestObjectType::test<3>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); +	HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders());  	{  		// Append a few strings @@ -151,7 +150,7 @@ void HttpHeadersTestObjectType::test<3>()  	}  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); @@ -166,8 +165,8 @@ void HttpHeadersTestObjectType::test<4>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); -	 +    HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders()); +  	{  		static char line1[] = " AcCePT : image/yourfacehere";  		static char line1v[] = "image/yourfacehere"; @@ -251,7 +250,7 @@ void HttpHeadersTestObjectType::test<4>()  	}  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); @@ -267,7 +266,7 @@ void HttpHeadersTestObjectType::test<5>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); +    HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders());  	HttpHeaders::iterator end(headers->end()), begin(headers->begin());  	ensure("Empty container has equal begin/end const iterators", end == begin); @@ -337,7 +336,7 @@ void HttpHeadersTestObjectType::test<5>()  	}  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); @@ -353,7 +352,7 @@ void HttpHeadersTestObjectType::test<6>()  	mMemTotal = GetMemTotal();  	// create a new ref counted object with an implicit reference -	HttpHeaders * headers = new HttpHeaders(); +    HttpHeaders::ptr_t headers = HttpHeaders::ptr_t(new HttpHeaders());  	HttpHeaders::reverse_iterator rend(headers->rend()), rbegin(headers->rbegin());  	ensure("Empty container has equal rbegin/rend const iterators", rend == rbegin); @@ -421,7 +420,7 @@ void HttpHeadersTestObjectType::test<6>()  	}  	// release the implicit reference, causing the object to be released -	headers->release(); +    headers.reset();  	// make sure we didn't leak any memory  	ensure(mMemTotal == GetMemTotal()); diff --git a/indra/llcorehttp/tests/test_httpoperation.hpp b/indra/llcorehttp/tests/test_httpoperation.hpp index 17b1a96878..e7df2337de 100755 --- a/indra/llcorehttp/tests/test_httpoperation.hpp +++ b/indra/llcorehttp/tests/test_httpoperation.hpp @@ -76,12 +76,12 @@ namespace tut  		mMemTotal = GetMemTotal();  		// create a new ref counted object with an implicit reference -		HttpOpNull * op = new HttpOpNull(); -		ensure(op->getRefCount() == 1); +		HttpOperation::ptr_t op (new HttpOpNull()); +		ensure(op.use_count() == 1);  		ensure(mMemTotal < GetMemTotal());  		// release the implicit reference, causing the object to be released -		op->release(); +        op.reset();  		// make sure we didn't leak any memory  		ensure(mMemTotal == GetMemTotal()); @@ -96,26 +96,24 @@ namespace tut  		mMemTotal = GetMemTotal();  		// Get some handlers -		TestHandler * h1 = new TestHandler(); +		LLCore::HttpHandler::ptr_t h1 (new TestHandler());  		// create a new ref counted object with an implicit reference -		HttpOpNull * op = new HttpOpNull(); +		HttpOperation::ptr_t op (new HttpOpNull());  		// Add the handlers -		op->setReplyPath(NULL, h1); +		op->setReplyPath(LLCore::HttpOperation::HttpReplyQueuePtr_t(), h1);  		// Check ref count -		ensure(op->getRefCount() == 1); +		ensure(op.unique() == 1);  		// release the reference, releasing the operation but  		// not the handlers. -		op->release(); -		op = NULL; +        op.reset();  		ensure(mMemTotal != GetMemTotal());  		// release the handlers -		delete h1; -		h1 = NULL; +        h1.reset();  		ensure(mMemTotal == GetMemTotal());  	} diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp index 43f7e36da5..463e55dd7e 100755 --- a/indra/llcorehttp/tests/test_httprequest.hpp +++ b/indra/llcorehttp/tests/test_httprequest.hpp @@ -112,7 +112,7 @@ public:  			if (! mHeadersRequired.empty() || ! mHeadersDisallowed.empty())  			{  				ensure("Response required with header check", response != NULL); -				HttpHeaders * header(response->getHeaders());	// Will not hold onto this +				HttpHeaders::ptr_t header(response->getHeaders());	// Will not hold onto this  				ensure("Some quantity of headers returned", header != NULL);  				if (! mHeadersRequired.empty()) @@ -247,7 +247,7 @@ void HttpRequestTestObjectType::test<2>()  		ensure("Memory being used", mMemTotal < GetMemTotal());  		// Issue a NoOp -		HttpHandle handle = req->requestNoOp(NULL); +		HttpHandle handle = req->requestNoOp(LLCore::HttpHandler::ptr_t());  		ensure("Request issued", handle != LLCORE_HTTP_HANDLE_INVALID);  		// release the request object @@ -275,6 +275,10 @@ void HttpRequestTestObjectType::test<2>()  	}  } +namespace +{ +    void NoOpDeletor(LLCore::HttpHandler *) { } +}  template <> template <>  void HttpRequestTestObjectType::test<3>() @@ -287,7 +291,8 @@ void HttpRequestTestObjectType::test<3>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -296,9 +301,8 @@ void HttpRequestTestObjectType::test<3>()  	try  	{ -		  		// Get singletons created -		HttpRequest::createService(); +        HttpRequest::createService();  		// Start threading early so that thread memory is invariant  		// over the test. @@ -309,7 +313,7 @@ void HttpRequestTestObjectType::test<3>()  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal());  		// Issue a NoOp -		HttpHandle handle = req->requestNoOp(&handler); +		HttpHandle handle = req->requestNoOp(handlerp);  		ensure("Valid handle returned for first request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -324,7 +328,7 @@ void HttpRequestTestObjectType::test<3>()  		ensure("One handler invocation for request", mHandlerCalls == 1);  		// Okay, request a shutdown of the servicing thread -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -378,7 +382,10 @@ void HttpRequestTestObjectType::test<4>()  	// references to it after completion of this method.  	TestHandler2 handler1(this, "handler1");  	TestHandler2 handler2(this, "handler2"); -		 + +    LLCore::HttpHandler::ptr_t handler1p(&handler1, NoOpDeletor); +    LLCore::HttpHandler::ptr_t handler2p(&handler2, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -388,7 +395,7 @@ void HttpRequestTestObjectType::test<4>()  	try  	{ -		 +  		// Get singletons created  		HttpRequest::createService(); @@ -402,11 +409,11 @@ void HttpRequestTestObjectType::test<4>()  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal());  		// Issue some NoOps -		HttpHandle handle = req1->requestNoOp(&handler1); +		HttpHandle handle = req1->requestNoOp(handler1p);  		ensure("Valid handle returned for first request", handle != LLCORE_HTTP_HANDLE_INVALID);  		handler1.mExpectHandle = handle; -		handle = req2->requestNoOp(&handler2); +		handle = req2->requestNoOp(handler2p);  		ensure("Valid handle returned for first request", handle != LLCORE_HTTP_HANDLE_INVALID);  		handler2.mExpectHandle = handle; @@ -423,7 +430,7 @@ void HttpRequestTestObjectType::test<4>()  		ensure("One handler invocation for request", mHandlerCalls == 2);  		// Okay, request a shutdown of the servicing thread -		handle = req2->requestStopThread(&handler2); +		handle = req2->requestStopThread(handler2p);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		handler2.mExpectHandle = handle; @@ -482,7 +489,8 @@ void HttpRequestTestObjectType::test<5>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -491,7 +499,6 @@ void HttpRequestTestObjectType::test<5>()  	try  	{ -		  		// Get singletons created  		HttpRequest::createService(); @@ -508,7 +515,7 @@ void HttpRequestTestObjectType::test<5>()  		ensure("Valid handle returned for spin request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Issue a NoOp -		handle = req->requestNoOp(&handler); +		handle = req->requestNoOp(handlerp);  		ensure("Valid handle returned for no-op request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -567,7 +574,8 @@ void HttpRequestTestObjectType::test<6>()  	try  	{ -		 +        LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  		// Get singletons created  		HttpRequest::createService(); @@ -584,7 +592,7 @@ void HttpRequestTestObjectType::test<6>()  		ensure("Valid handle returned for spin request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Issue a NoOp -		handle = req->requestNoOp(&handler); +		handle = req->requestNoOp(handlerp);  		ensure("Valid handle returned for no-op request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -632,17 +640,19 @@ void HttpRequestTestObjectType::test<7>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 + +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * opts = NULL; +	HttpOptions::ptr_t opts;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -653,7 +663,7 @@ void HttpRequestTestObjectType::test<7>()  		req = new HttpRequest();  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal()); -		opts = new HttpOptions(); +        opts = HttpOptions::ptr_t(new HttpOptions());  		opts->setRetries(1);			// Don't try for too long - default retries take about 18S  		// Issue a GET that can't connect @@ -664,8 +674,8 @@ void HttpRequestTestObjectType::test<7>()  													 0,  													 0,  													 opts, -													 NULL, -													 &handler); +													 HttpHeaders::ptr_t(), +													 handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -681,7 +691,7 @@ void HttpRequestTestObjectType::test<7>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -705,8 +715,7 @@ void HttpRequestTestObjectType::test<7>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options -		opts->release(); -		opts = NULL; +        opts.reset();  		// release the request object  		delete req; @@ -728,11 +737,7 @@ void HttpRequestTestObjectType::test<7>()  	catch (...)  	{  		stop_thread(req); -		if (opts) -		{ -			opts->release(); -			opts = NULL; -		} +        opts.reset();  		delete req;  		HttpRequest::destroyService();  		throw; @@ -754,7 +759,8 @@ void HttpRequestTestObjectType::test<8>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -763,7 +769,7 @@ void HttpRequestTestObjectType::test<8>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -779,9 +785,9 @@ void HttpRequestTestObjectType::test<8>()  		HttpHandle handle = req->requestGet(HttpRequest::DEFAULT_POLICY_ID,  											0U,  											url_base, -											NULL, -											NULL, -											&handler); +											HttpOptions::ptr_t(), +                                            HttpHeaders::ptr_t(), +											handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -797,7 +803,7 @@ void HttpRequestTestObjectType::test<8>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -862,7 +868,8 @@ void HttpRequestTestObjectType::test<9>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -871,7 +878,7 @@ void HttpRequestTestObjectType::test<9>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -889,9 +896,9 @@ void HttpRequestTestObjectType::test<9>()  													 url_base,  													 0,  													 0, -													 NULL, -													 NULL, -													 &handler); +													 HttpOptions::ptr_t(), +                                                     HttpHeaders::ptr_t(), +													 handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -907,7 +914,7 @@ void HttpRequestTestObjectType::test<9>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -972,7 +979,8 @@ void HttpRequestTestObjectType::test<10>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -982,7 +990,7 @@ void HttpRequestTestObjectType::test<10>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1001,9 +1009,9 @@ void HttpRequestTestObjectType::test<10>()  											0U,  											url_base,  											body, -											NULL, -											NULL, -											&handler); +                                            HttpOptions::ptr_t(), +                                            HttpHeaders::ptr_t(), +                                            handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1019,7 +1027,7 @@ void HttpRequestTestObjectType::test<10>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1090,7 +1098,8 @@ void HttpRequestTestObjectType::test<11>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -1100,7 +1109,7 @@ void HttpRequestTestObjectType::test<11>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1119,9 +1128,9 @@ void HttpRequestTestObjectType::test<11>()  											 0U,  											 url_base,  											 body, -											 NULL, -											 NULL, -											 &handler); +                                             HttpOptions::ptr_t(), +                                             HttpHeaders::ptr_t(), +                                             handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1137,7 +1146,7 @@ void HttpRequestTestObjectType::test<11>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1209,7 +1218,8 @@ void HttpRequestTestObjectType::test<12>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; @@ -1218,7 +1228,7 @@ void HttpRequestTestObjectType::test<12>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Enable tracing @@ -1239,9 +1249,9 @@ void HttpRequestTestObjectType::test<12>()  													 url_base,  													 0,  													 0, -													 NULL, -													 NULL, -													 &handler); +                                                     HttpOptions::ptr_t(), +                                                     HttpHeaders::ptr_t(), +                                                     handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1257,7 +1267,7 @@ void HttpRequestTestObjectType::test<12>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1326,17 +1336,18 @@ void HttpRequestTestObjectType::test<13>()  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler");  	handler.mHeadersRequired.reserve(20);				// Avoid memory leak test failure -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * opts = NULL; +	HttpOptions::ptr_t opts;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Enable tracing @@ -1350,7 +1361,7 @@ void HttpRequestTestObjectType::test<13>()  		req = new HttpRequest();  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal()); -		opts = new HttpOptions(); +        opts = HttpOptions::ptr_t(new HttpOptions());  		opts->setWantHeaders(true);  		// Issue a GET that succeeds @@ -1364,13 +1375,12 @@ void HttpRequestTestObjectType::test<13>()  													 0,	  												 0,  													 opts, -													 NULL, -													 &handler); +                                                     HttpHeaders::ptr_t(), +                                                     handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// release options -		opts->release(); -		opts = NULL; +        opts.reset();  		// Run the notification pump.  		int count(0); @@ -1386,7 +1396,7 @@ void HttpRequestTestObjectType::test<13>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1430,11 +1440,7 @@ void HttpRequestTestObjectType::test<13>()  	catch (...)  	{  		stop_thread(req); -		if (opts) -		{ -			opts->release(); -			opts = NULL; -		} +        opts.reset();  		delete req;  		HttpRequest::destroyService();  		throw; @@ -1453,18 +1459,19 @@ void HttpRequestTestObjectType::test<14>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -	std::string url_base(get_base_url() + "/sleep/");	// path to a 30-second sleep +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +    std::string url_base(get_base_url() + "/sleep/");	// path to a 30-second sleep  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * opts = NULL; +	HttpOptions::ptr_t opts;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1475,7 +1482,7 @@ void HttpRequestTestObjectType::test<14>()  		req = new HttpRequest();  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal()); -		opts = new HttpOptions(); +        opts = HttpOptions::ptr_t(new HttpOptions);  		opts->setRetries(0);			// Don't retry  		opts->setTimeout(2); @@ -1487,8 +1494,8 @@ void HttpRequestTestObjectType::test<14>()  													 0,  													 0,  													 opts, -													 NULL, -													 &handler); +                                                     HttpHeaders::ptr_t(), +                                                     handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1504,7 +1511,7 @@ void HttpRequestTestObjectType::test<14>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1528,8 +1535,7 @@ void HttpRequestTestObjectType::test<14>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options -		opts->release(); -		opts = NULL; +        opts.reset();  		// release the request object  		delete req; @@ -1552,11 +1558,7 @@ void HttpRequestTestObjectType::test<14>()  	catch (...)  	{  		stop_thread(req); -		if (opts) -		{ -			opts->release(); -			opts = NULL; -		} +        opts.reset();  		delete req;  		HttpRequest::destroyService();  		throw; @@ -1578,6 +1580,7 @@ void HttpRequestTestObjectType::test<15>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// Load and clear the string setting to preload std::string object  	// for memory return tests. @@ -1592,7 +1595,7 @@ void HttpRequestTestObjectType::test<15>()  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1609,9 +1612,9 @@ void HttpRequestTestObjectType::test<15>()  		HttpHandle handle = req->requestGet(HttpRequest::DEFAULT_POLICY_ID,  											0U,  											url_base, -											NULL, -											NULL, -											&handler); +                                            HttpOptions::ptr_t(), +                                            HttpHeaders::ptr_t(), +                                            handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1628,7 +1631,7 @@ void HttpRequestTestObjectType::test<15>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus();  		handler.mCheckContentType.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1697,18 +1700,19 @@ void HttpRequestTestObjectType::test<16>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1719,7 +1723,7 @@ void HttpRequestTestObjectType::test<16>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// Issue a GET that *can* connect @@ -1776,8 +1780,8 @@ void HttpRequestTestObjectType::test<16>()  											0U,  											url_base + "reflect/",  											options, -											NULL, -											&handler); +											HttpHeaders::ptr_t(), +											handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1792,7 +1796,7 @@ void HttpRequestTestObjectType::test<16>()  		ensure("One handler invocation for request", mHandlerCalls == 1);  		// Do a texture-style fetch -		headers = new HttpHeaders; +		headers = HttpHeaders::ptr_t(new HttpHeaders);  		headers->append("Accept", "image/x-j2c");  		mStatus = HttpStatus(200); @@ -1854,7 +1858,7 @@ void HttpRequestTestObjectType::test<16>()  										  47,  										  options,  										  headers, -										  &handler); +										  handlerp);  		ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -1873,7 +1877,7 @@ void HttpRequestTestObjectType::test<16>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -1897,17 +1901,8 @@ void HttpRequestTestObjectType::test<16>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -1919,16 +1914,9 @@ void HttpRequestTestObjectType::test<16>()  	catch (...)  	{  		stop_thread(req); -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} +        options.reset(); +        headers.reset(); +  		delete req;  		HttpRequest::destroyService();  		throw; @@ -1954,19 +1942,20 @@ void HttpRequestTestObjectType::test<17>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	BufferArray * ba = NULL;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -1977,7 +1966,7 @@ void HttpRequestTestObjectType::test<17>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// And a buffer array @@ -2049,8 +2038,8 @@ void HttpRequestTestObjectType::test<17>()  											 url_base + "reflect/",  											 ba,  											 options, -											 NULL, -											 &handler); +											 HttpHeaders::ptr_t(), +											 handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		ba->release();  		ba = NULL; @@ -2071,7 +2060,7 @@ void HttpRequestTestObjectType::test<17>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -2095,17 +2084,8 @@ void HttpRequestTestObjectType::test<17>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -2122,17 +2102,10 @@ void HttpRequestTestObjectType::test<17>()  			ba->release();  			ba = NULL;  		} -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} -		delete req; +        options.reset(); +        headers.reset(); + +        delete req;  		HttpRequest::destroyService();  		throw;  	} @@ -2157,19 +2130,20 @@ void HttpRequestTestObjectType::test<18>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	BufferArray * ba = NULL;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -2180,7 +2154,7 @@ void HttpRequestTestObjectType::test<18>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +		options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// And a buffer array @@ -2253,8 +2227,8 @@ void HttpRequestTestObjectType::test<18>()  											url_base + "reflect/",  											ba,  											options, -											NULL, -											&handler); +											HttpHeaders::ptr_t(), +											handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		ba->release();  		ba = NULL; @@ -2275,7 +2249,7 @@ void HttpRequestTestObjectType::test<18>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -2299,17 +2273,8 @@ void HttpRequestTestObjectType::test<18>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -2326,17 +2291,10 @@ void HttpRequestTestObjectType::test<18>()  			ba->release();  			ba = NULL;  		} -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} -		delete req; +        options.reset(); +        headers.reset(); + +        delete req;  		HttpRequest::destroyService();  		throw;  	} @@ -2361,18 +2319,19 @@ void HttpRequestTestObjectType::test<19>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -2383,11 +2342,11 @@ void HttpRequestTestObjectType::test<19>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// headers -		headers = new HttpHeaders; +		headers = HttpHeaders::ptr_t(new HttpHeaders);  		headers->append("Keep-Alive", "120");  		headers->append("Accept-encoding", "deflate");  		headers->append("Accept", "text/plain"); @@ -2460,7 +2419,7 @@ void HttpRequestTestObjectType::test<19>()  											url_base + "reflect/",  											options,  											headers, -											&handler); +											handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump. @@ -2478,7 +2437,7 @@ void HttpRequestTestObjectType::test<19>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -2502,17 +2461,8 @@ void HttpRequestTestObjectType::test<19>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -2524,16 +2474,9 @@ void HttpRequestTestObjectType::test<19>()  	catch (...)  	{  		stop_thread(req); -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} +        options.reset(); +        headers.reset(); +  		delete req;  		HttpRequest::destroyService();  		throw; @@ -2559,19 +2502,21 @@ void HttpRequestTestObjectType::test<20>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	BufferArray * ba = NULL;  	try  	{ -		// Get singletons created + +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -2582,11 +2527,11 @@ void HttpRequestTestObjectType::test<20>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// headers -		headers = new HttpHeaders(); +		headers = HttpHeaders::ptr_t(new HttpHeaders());  		headers->append("keep-Alive", "120");  		headers->append("Accept", "text/html");  		headers->append("content-type", "application/llsd+xml"); @@ -2675,7 +2620,7 @@ void HttpRequestTestObjectType::test<20>()  											 ba,  											 options,  											 headers, -											 &handler); +											 handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		ba->release();  		ba = NULL; @@ -2696,7 +2641,7 @@ void HttpRequestTestObjectType::test<20>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -2720,17 +2665,8 @@ void HttpRequestTestObjectType::test<20>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -2747,16 +2683,8 @@ void HttpRequestTestObjectType::test<20>()  			ba->release();  			ba = NULL;  		} -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} +        options.reset(); +        headers.reset();  		delete req;  		HttpRequest::destroyService();  		throw; @@ -2782,19 +2710,20 @@ void HttpRequestTestObjectType::test<21>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor);  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * options = NULL; -	HttpHeaders * headers = NULL; +	HttpOptions::ptr_t options; +	HttpHeaders::ptr_t headers;  	BufferArray * ba = NULL;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -2805,11 +2734,11 @@ void HttpRequestTestObjectType::test<21>()  		req = new HttpRequest();  		// options set -		options = new HttpOptions(); +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setWantHeaders(true);  		// headers -		headers = new HttpHeaders; +		headers = HttpHeaders::ptr_t(new HttpHeaders);  		headers->append("content-type", "text/plain");  		headers->append("content-type", "text/html");  		headers->append("content-type", "application/llsd+xml"); @@ -2892,7 +2821,7 @@ void HttpRequestTestObjectType::test<21>()  											ba,  											options,  											headers, -											&handler); +											handlerp);  		ensure("Valid handle returned for get request", handle != LLCORE_HTTP_HANDLE_INVALID);  		ba->release();  		ba = NULL; @@ -2913,7 +2842,7 @@ void HttpRequestTestObjectType::test<21>()  		mStatus = HttpStatus();  		handler.mHeadersRequired.clear();  		handler.mHeadersDisallowed.clear(); -		handle = req->requestStopThread(&handler); +		handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -2937,17 +2866,8 @@ void HttpRequestTestObjectType::test<21>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options & headers -		if (options) -		{ -			options->release(); -		} -		options = NULL; - -		if (headers) -		{ -			headers->release(); -		} -		headers = NULL; +        options.reset(); +        headers.reset();  		// release the request object  		delete req; @@ -2964,16 +2884,8 @@ void HttpRequestTestObjectType::test<21>()  			ba->release();  			ba = NULL;  		} -		if (options) -		{ -			options->release(); -			options = NULL; -		} -		if (headers) -		{ -			headers->release(); -			headers = NULL; -		} +        options.reset(); +        headers.reset();  		delete req;  		HttpRequest::destroyService();  		throw; @@ -2995,18 +2907,19 @@ void HttpRequestTestObjectType::test<22>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -		 +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0; -	HttpOptions * options = NULL; +	HttpOptions::ptr_t options;  	HttpRequest * req = NULL;  	try  	{ -		// options set -		options = new HttpOptions(); +        // options set +        options = HttpOptions::ptr_t(new HttpOptions());  		options->setRetries(1);			// Partial_File is retryable and can timeout in here  		// Get singletons created @@ -3035,8 +2948,8 @@ void HttpRequestTestObjectType::test<22>()  														 0,  														 25,  														 options, -														 NULL, -														 &handler); +                                                         HttpHeaders::ptr_t(), +                                                         handlerp);  			ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		} @@ -3067,8 +2980,8 @@ void HttpRequestTestObjectType::test<22>()  														 0,  														 25,  														 options, -														 NULL, -														 &handler); +														 HttpHeaders::ptr_t(), +														 handlerp);  			ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		} @@ -3099,8 +3012,8 @@ void HttpRequestTestObjectType::test<22>()  														 0,  														 25,  														 options, -														 NULL, -														 &handler); +                                                         HttpHeaders::ptr_t(), +                                                         handlerp);  			ensure("Valid handle returned for ranged request", handle != LLCORE_HTTP_HANDLE_INVALID);  		} @@ -3120,7 +3033,7 @@ void HttpRequestTestObjectType::test<22>()  		// ======================================  		mStatus = HttpStatus();  		mHandlerCalls = 0; -		HttpHandle handle = req->requestStopThread(&handler); +		HttpHandle handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -3144,11 +3057,7 @@ void HttpRequestTestObjectType::test<22>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options -		if (options) -		{ -			options->release(); -			options = NULL; -		} +        options.reset();  		// release the request object  		delete req; @@ -3191,18 +3100,19 @@ void HttpRequestTestObjectType::test<23>()  	// references to it after completion of this method.  	// Create before memory record as the string copy will bump numbers.  	TestHandler2 handler(this, "handler"); -	std::string url_base(get_base_url() + "/503/");	// path to 503 generators +    LLCore::HttpHandler::ptr_t handlerp(&handler, NoOpDeletor); +    std::string url_base(get_base_url() + "/503/");	// path to 503 generators  	// record the total amount of dynamically allocated memory  	mMemTotal = GetMemTotal();  	mHandlerCalls = 0;  	HttpRequest * req = NULL; -	HttpOptions * opts = NULL; +	HttpOptions::ptr_t opts;  	try  	{ -		// Get singletons created +        // Get singletons created  		HttpRequest::createService();  		// Start threading early so that thread memory is invariant @@ -3213,7 +3123,7 @@ void HttpRequestTestObjectType::test<23>()  		req = new HttpRequest();  		ensure("Memory allocated on construction", mMemTotal < GetMemTotal()); -		opts = new HttpOptions(); +        opts = HttpOptions::ptr_t(new HttpOptions());  		opts->setRetries(1);			// Retry once only  		opts->setUseRetryAfter(true);	// Try to parse the retry-after header @@ -3230,8 +3140,8 @@ void HttpRequestTestObjectType::test<23>()  														 0,  														 0,  														 opts, -														 NULL, -														 &handler); +                                                         HttpHeaders::ptr_t(), +                                                         handlerp);  			std::ostringstream testtag;  			testtag << "Valid handle returned for 503 request #" << i; @@ -3253,7 +3163,7 @@ void HttpRequestTestObjectType::test<23>()  		// Okay, request a shutdown of the servicing thread  		mStatus = HttpStatus();  		mHandlerCalls = 0; -		HttpHandle handle = req->requestStopThread(&handler); +		HttpHandle handle = req->requestStopThread(handlerp);  		ensure("Valid handle returned for second request", handle != LLCORE_HTTP_HANDLE_INVALID);  		// Run the notification pump again @@ -3277,8 +3187,7 @@ void HttpRequestTestObjectType::test<23>()  		ensure("Thread actually stopped running", HttpService::isStopped());  		// release options -		opts->release(); -		opts = NULL; +        opts.reset();  		// release the request object  		delete req; @@ -3299,11 +3208,7 @@ void HttpRequestTestObjectType::test<23>()  	catch (...)  	{  		stop_thread(req); -		if (opts) -		{ -			opts->release(); -			opts = NULL; -		} +        opts.reset();  		delete req;  		HttpRequest::destroyService();  		throw; diff --git a/indra/llcorehttp/tests/test_httprequestqueue.hpp b/indra/llcorehttp/tests/test_httprequestqueue.hpp index 1de2d8f9ab..ef4ce0479b 100755 --- a/indra/llcorehttp/tests/test_httprequestqueue.hpp +++ b/indra/llcorehttp/tests/test_httprequestqueue.hpp @@ -113,16 +113,16 @@ void HttpRequestqueueTestObjectType::test<3>()  	HttpRequestQueue * rq = HttpRequestQueue::instanceOf(); -	HttpOperation * op = new HttpOpNull(); +	HttpOperation::ptr_t op(new HttpOpNull());  	rq->addOp(op);		// transfer my refcount  	op = rq->fetchOp(true);		// Potentially hangs the test on failure -	ensure("One goes in, one comes out", NULL != op); -	op->release(); +	ensure("One goes in, one comes out", static_cast<bool>(op)); +    op.reset();  	op = rq->fetchOp(false); -	ensure("Better not be two of them", NULL == op); +	ensure("Better not be two of them", !op);  	// release the singleton, hold on to the object  	HttpRequestQueue::term(); @@ -144,13 +144,13 @@ void HttpRequestqueueTestObjectType::test<4>()  	HttpRequestQueue * rq = HttpRequestQueue::instanceOf(); -	HttpOperation * op = new HttpOpNull(); +	HttpOperation::ptr_t op (new HttpOpNull());  	rq->addOp(op);		// transfer my refcount -	op = new HttpOpNull(); +	op.reset(new HttpOpNull());  	rq->addOp(op);		// transfer my refcount -	op = new HttpOpNull(); +	op.reset(new HttpOpNull());  	rq->addOp(op);		// transfer my refcount  	{ @@ -159,8 +159,9 @@ void HttpRequestqueueTestObjectType::test<4>()  		ensure("Three go in, three come out", 3 == ops.size());  		op = rq->fetchOp(false); -		ensure("Better not be any more of them", NULL == op); -	 +		ensure("Better not be any more of them", !op); +        op.reset(); +  		// release the singleton, hold on to the object  		HttpRequestQueue::term(); @@ -168,12 +169,13 @@ void HttpRequestqueueTestObjectType::test<4>()  		ensure(mMemTotal < GetMemTotal());  		// Release them -		while (! ops.empty()) -		{ -			HttpOperation * op = ops.front(); -			ops.erase(ops.begin()); -			op->release(); -		} +        ops.clear(); +// 		while (! ops.empty()) +// 		{ +// 			HttpOperation * op = ops.front(); +// 			ops.erase(ops.begin()); +// 			op->release(); +// 		}  	}  	// Should be clean diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp index 0b379836c9..4502d32fe1 100755 --- a/indra/llcorehttp/tests/test_httpstatus.hpp +++ b/indra/llcorehttp/tests/test_httpstatus.hpp @@ -55,77 +55,68 @@ void HttpStatusTestObjectType::test<1>()  	// auto allocation fine for this  	HttpStatus status; -	status.mType = HttpStatus::EXT_CURL_EASY; -	status.mStatus = 0; + +	status = HttpStatus(HttpStatus::EXT_CURL_EASY, 0);  	ensure(bool(status));  	ensure(false == !(status)); -	status.mType = HttpStatus::EXT_CURL_MULTI; -	status.mStatus = 0; +	status = HttpStatus(HttpStatus::EXT_CURL_MULTI, 0);  	ensure(bool(status));  	ensure(false == !(status)); -	 -	status.mType = HttpStatus::LLCORE; -	status.mStatus = HE_SUCCESS; + +	status = HttpStatus(HttpStatus::LLCORE, HE_SUCCESS);  	ensure(bool(status));  	ensure(false == !(status)); -	status.mType = HttpStatus::EXT_CURL_MULTI; -	status.mStatus = -1; +	status = HttpStatus(HttpStatus::EXT_CURL_MULTI, -1);  	ensure(false == bool(status));  	ensure(!(status)); -	status.mType = HttpStatus::EXT_CURL_EASY; -	status.mStatus = CURLE_BAD_DOWNLOAD_RESUME; +	status = HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_BAD_DOWNLOAD_RESUME);  	ensure(false == bool(status));  	ensure(!(status));  } -template <> template <> -void HttpStatusTestObjectType::test<2>() -{ -	set_test_name("HttpStatus memory structure"); - -	// Require that an HttpStatus object can be trivially -	// returned as a function return value in registers. -	// One should fit in an int on all platforms. - -	ensure(sizeof(HttpStatus) <= sizeof(int)); -} +// template <> template <> +// void HttpStatusTestObjectType::test<2>() +// { +// 	set_test_name("HttpStatus memory structure"); +//  +// 	// Require that an HttpStatus object can be trivially +// 	// returned as a function return value in registers. +// 	// One should fit in an int on all platforms. +//  +// 	//ensure(sizeof(HttpStatus) <= sizeof(int)); +// }  template <> template <> -void HttpStatusTestObjectType::test<3>() +void HttpStatusTestObjectType::test<2>()  {  	set_test_name("HttpStatus valid status string conversion"); -	HttpStatus status; -	status.mType = HttpStatus::EXT_CURL_EASY; -	status.mStatus = 0; +	HttpStatus status = HttpStatus(HttpStatus::EXT_CURL_EASY, 0);  	std::string msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(msg.empty()); -	 -	status.mType = HttpStatus::EXT_CURL_EASY; -	status.mStatus = CURLE_BAD_FUNCTION_ARGUMENT; + +	status = HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_BAD_FUNCTION_ARGUMENT);  	msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty()); -	status.mType = HttpStatus::EXT_CURL_MULTI; -	status.mStatus = CURLM_OUT_OF_MEMORY; +	status = HttpStatus(HttpStatus::EXT_CURL_MULTI, CURLM_OUT_OF_MEMORY);  	msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty()); -	status.mType = HttpStatus::LLCORE; -	status.mStatus = HE_SHUTTING_DOWN; +	status = HttpStatus(HttpStatus::LLCORE, HE_SHUTTING_DOWN);  	msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty()); @@ -133,32 +124,28 @@ void HttpStatusTestObjectType::test<3>()  template <> template <> -void HttpStatusTestObjectType::test<4>() +void HttpStatusTestObjectType::test<3>()  {  	set_test_name("HttpStatus invalid status string conversion"); -	HttpStatus status; -	status.mType = HttpStatus::EXT_CURL_EASY; -	status.mStatus = 32726; +	HttpStatus status = HttpStatus(HttpStatus::EXT_CURL_EASY, 32726);  	std::string msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty()); -	 -	status.mType = HttpStatus::EXT_CURL_MULTI; -	status.mStatus = -470; + +	status = HttpStatus(HttpStatus::EXT_CURL_MULTI, -470);  	msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty()); -	status.mType = HttpStatus::LLCORE; -	status.mStatus = 923; +	status = HttpStatus(HttpStatus::LLCORE, 923);  	msg = status.toString();  	// std::cout << "Result:  " << msg << std::endl;  	ensure(! msg.empty());  }  template <> template <> -void HttpStatusTestObjectType::test<5>() +void HttpStatusTestObjectType::test<4>()  {  	set_test_name("HttpStatus equality/inequality testing"); @@ -170,62 +157,55 @@ void HttpStatusTestObjectType::test<5>()  	HttpStatus status2(HttpStatus::EXT_CURL_EASY, HE_SUCCESS);  	ensure(status1 != status2); -	status1.mType = HttpStatus::LLCORE; -	status1.mStatus = HE_REPLY_ERROR; -	status2.mType = HttpStatus::LLCORE; -	status2.mStatus= HE_SHUTTING_DOWN; +	status1 = HttpStatus(HttpStatus::LLCORE, HE_REPLY_ERROR); +	status1 = HttpStatus(HttpStatus::LLCORE, HE_SHUTTING_DOWN); +  	ensure(status1 != status2);  }  template <> template <> -void HttpStatusTestObjectType::test<6>() +void HttpStatusTestObjectType::test<5>()  {  	set_test_name("HttpStatus basic HTTP status encoding");  	HttpStatus status; -	status.mType = 200; -	status.mStatus = HE_SUCCESS; + +	status = HttpStatus(200, HE_SUCCESS);  	std::string msg = status.toString();  	ensure(msg.empty());  	ensure(bool(status));  	// Normally a success but application says error -	status.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(200, HE_REPLY_ERROR);  	msg = status.toString();  	ensure(! msg.empty());  	ensure(! bool(status));  	ensure(status.toULong() > 1UL);				// Biggish number, not a bool-to-ulong  	// Same statuses with distinct success/fail are distinct -	status.mType = 200; -	status.mStatus = HE_SUCCESS; +	status = HttpStatus(200, HE_SUCCESS);  	HttpStatus status2(200, HE_REPLY_ERROR);  	ensure(status != status2);  	// Normally an error but application says okay -	status.mType = 406; -	status.mStatus = HE_SUCCESS; +	status = HttpStatus(406, HE_SUCCESS);  	msg = status.toString();  	ensure(msg.empty());  	ensure(bool(status));  	// Different statuses but both successful are distinct -	status.mType = 200; -	status.mStatus = HE_SUCCESS; -	status2.mType = 201; -	status2.mStatus = HE_SUCCESS; +	status = HttpStatus(200, HE_SUCCESS); +	status2 = HttpStatus(201, HE_SUCCESS);  	ensure(status != status2);  	// Different statuses but both failed are distinct -	status.mType = 200; -	status.mStatus = HE_REPLY_ERROR; -	status2.mType = 201; -	status2.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(200, HE_REPLY_ERROR); +	status2 = HttpStatus(201, HE_REPLY_ERROR);  	ensure(status != status2);  }  template <> template <> -void HttpStatusTestObjectType::test<7>() +void HttpStatusTestObjectType::test<6>()  {  	set_test_name("HttpStatus HTTP status text strings"); @@ -234,34 +214,30 @@ void HttpStatusTestObjectType::test<7>()  	ensure(! msg.empty());				// Should be something  	ensure(msg == "Continue"); -	status.mStatus = HE_SUCCESS; +	status = HttpStatus(200, HE_SUCCESS);  	msg = status.toString();  	ensure(msg.empty());				// Success is empty -	status.mType = 199; -	status.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(199, HE_REPLY_ERROR);  	msg = status.toString();  	ensure(msg == "Unknown error"); -	status.mType = 505;					// Last defined string -	status.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(505, HE_REPLY_ERROR);  	msg = status.toString();  	ensure(msg == "HTTP Version not supported"); -	status.mType = 506;					// One beyond -	status.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(506, HE_REPLY_ERROR);  	msg = status.toString();  	ensure(msg == "Unknown error"); -	status.mType = 999;					// Last HTTP status -	status.mStatus = HE_REPLY_ERROR; +	status = HttpStatus(999, HE_REPLY_ERROR);  	msg = status.toString();  	ensure(msg == "Unknown error");  }  template <> template <> -void HttpStatusTestObjectType::test<8>() +void HttpStatusTestObjectType::test<7>()  {  	set_test_name("HttpStatus toHex() nominal function"); @@ -273,7 +249,7 @@ void HttpStatusTestObjectType::test<8>()  template <> template <> -void HttpStatusTestObjectType::test<9>() +void HttpStatusTestObjectType::test<8>()  {  	set_test_name("HttpStatus toTerseString() nominal function");  | 
