From d24ff0bf0adeae1ce000551e3b9bdac528f5c162 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Mon, 5 May 2014 15:58:15 -0700 Subject: DD-22 : WIP : Implement putRaw() on LLHTTPClient --- indra/llmessage/llhttpclient.cpp | 11 +++++++++++ indra/llmessage/llhttpclient.h | 8 ++++++++ 2 files changed, 19 insertions(+) (limited to 'indra/llmessage') diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index 11648717ad..f80d8a0e43 100755 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -565,6 +565,17 @@ void LLHTTPClient::put( request(url, LLURLRequest::HTTP_PUT, new LLSDInjector(body), responder, timeout, headers); } +void LLHTTPClient::putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers, + const F32 timeout) +{ + request(url, LLURLRequest::HTTP_PUT, new RawInjector(data, size), responder, timeout, headers); +} + void LLHTTPClient::post( const std::string& url, const LLSD& body, diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h index 5de257a4f6..39da9fcce3 100755 --- a/indra/llmessage/llhttpclient.h +++ b/indra/llmessage/llhttpclient.h @@ -79,6 +79,14 @@ public: ResponderPtr, const LLSD& headers = LLSD(), const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void putRaw( + const std::string& url, + const U8* data, + S32 size, + ResponderPtr responder, + const LLSD& headers = LLSD(), + const F32 timeout=HTTP_REQUEST_EXPIRY_SECS); + static void getHeaderOnly(const std::string& url, ResponderPtr, const F32 timeout=HTTP_REQUEST_EXPIRY_SECS, bool follow_redirects = true); static void getHeaderOnly(const std::string& url, ResponderPtr, const LLSD& headers, -- cgit v1.2.3 From 8f5676202821b9b8addb19fe8b93bac56057c6af Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 30 Jul 2015 18:35:33 +0300 Subject: MAINT-5430 Crash LLAssetStorage::downloadCompleteCallback --- indra/llmessage/llassetstorage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'indra/llmessage') diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index 8ba2535531..61663e1982 100755 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -633,6 +633,10 @@ void LLAssetStorage::downloadCompleteCallback( vfile.remove(); } } + + // we will be deleting elements of mPendingDownloads which req might be part of, save id and type for reference + LLUUID callback_id = req->getUUID(); + LLAssetType::EType callback_type = req->getType(); // find and callback ALL pending requests for this UUID // SJB: We process the callbacks in reverse order, I do not know if this is important, @@ -660,7 +664,7 @@ void LLAssetStorage::downloadCompleteCallback( { add(sFailedDownloadCount, 1); } - tmp->mDownCallback(gAssetStorage->mVFS, req->getUUID(), req->getType(), tmp->mUserData, result, ext_status); + tmp->mDownCallback(gAssetStorage->mVFS, callback_id, callback_type, tmp->mUserData, result, ext_status); } delete tmp; } -- cgit v1.2.3