diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index 0f21401ce21818f4344c7a29d1b5bbc31392accb..46a16968c95f0babac6c057a1f8100c535bb8d3c 100644 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -46,7 +46,6 @@ #include "llhttpconstants.h" #include "llproxy.h" -#include "llmessagelog.h" #include "httpstats.h" // *DEBUG: "[curl:bugs] #1420" problem and testing. @@ -125,6 +124,7 @@ static const char * const LOG_CORE("CoreHttp"); namespace LLCore { +std::function<void(LLCore::HttpResponse* response)> HttpOpRequest::sMessageLogFunc = nullptr; HttpOpRequest::HttpOpRequest() : HttpOperation(), @@ -280,7 +280,7 @@ void HttpOpRequest::visitNotifier(HttpRequest * request) response->setTransferStats(stats); mUserHandler->onCompleted(this->getHandle(), response); - if (LLMessageLog::haveLogger()) LLMessageLog::log(response); + if (sMessageLogFunc != nullptr) sMessageLogFunc(response); response->release(); } } diff --git a/indra/llcorehttp/_httpoprequest.h b/indra/llcorehttp/_httpoprequest.h index 5d7205ccfa4267078ba2667870234a1d45546bff..fc35c25b4e25ce2826e950b702500d54345cbc0f 100644 --- a/indra/llcorehttp/_httpoprequest.h +++ b/indra/llcorehttp/_httpoprequest.h @@ -236,6 +236,9 @@ class HttpOpRequest final : public HttpOperation HttpTime mPolicyMinRetryBackoff; // initial delay between retries (mcs) HttpTime mPolicyMaxRetryBackoff; U64 mRequestId; + + static void setMessageLogFunc(std::function<void(LLCore::HttpResponse* response)> func) { sMessageLogFunc = func;} + static std::function<void(LLCore::HttpResponse* response)> sMessageLogFunc; }; // end class HttpOpRequest diff --git a/indra/llcorehttp/_httprequestqueue.cpp b/indra/llcorehttp/_httprequestqueue.cpp index 86670befae6a313e59c2df332f26e0f8be28a95d..71e49ff0e7a9b7c2afcf082da4f71a5c497cc01b 100644 --- a/indra/llcorehttp/_httprequestqueue.cpp +++ b/indra/llcorehttp/_httprequestqueue.cpp @@ -28,7 +28,6 @@ #include "_httpoperation.h" #include "_mutex.h" -#include "llmessagelog.h" using namespace LLCoreInt; @@ -37,6 +36,7 @@ namespace LLCore { HttpRequestQueue * HttpRequestQueue::sInstance(NULL); +std::function<void(const HttpRequestQueue::opPtr_t &)> HttpRequestQueue::sMessageLogFunc = nullptr; HttpRequestQueue::HttpRequestQueue() @@ -80,7 +80,7 @@ HttpStatus HttpRequestQueue::addOp(const HttpRequestQueue::opPtr_t &op, bool log // Return op and error to caller return HttpStatus(HttpStatus::LLCORE, HE_SHUTTING_DOWN); } - if (loggable && LLMessageLog::haveLogger()) { LLMessageLog::log(op); } + if (loggable && sMessageLogFunc != nullptr ) { sMessageLogFunc(op); } wake = mQueue.empty(); mQueue.push_back(op); } diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h index 99baba9e30f8ba99cb3e58839bb6c1a913606abb..e8e506e4c1725323ada6e5add6480576e06e13fd 100644 --- a/indra/llcorehttp/_httprequestqueue.h +++ b/indra/llcorehttp/_httprequestqueue.h @@ -126,8 +126,11 @@ class HttpRequestQueue final : public LLCoreInt::RefCounted /// Threading: callable by any thread. bool stopQueue(); + static void setMessageLogFunc(std::function<void(const HttpRequestQueue::opPtr_t &)> func) { sMessageLogFunc = func;} + protected: static HttpRequestQueue * sInstance; + static std::function<void(const HttpRequestQueue::opPtr_t &)> sMessageLogFunc; protected: OpContainer mQueue; diff --git a/indra/llmessage/llmessagelog.cpp b/indra/llmessage/llmessagelog.cpp index 196232c78a6430695d07f557a3fde680308d0a8a..0e155215b83a0104eedf98cf520955c3cec95cbd 100644 --- a/indra/llmessage/llmessagelog.cpp +++ b/indra/llmessage/llmessagelog.cpp @@ -25,6 +25,7 @@ #include <boost/circular_buffer.hpp> #include <utility> #include "_httpoprequest.h" +#include "_httprequestqueue.h" static boost::circular_buffer<LogPayload> sRingBuffer = boost::circular_buffer<LogPayload>(2048); @@ -102,7 +103,15 @@ void LLMessageLog::setCallback(LogCallback callback) { callback(m); } + LLCore::HttpRequestQueue::setMessageLogFunc([](const LLCore::HttpRequestQueue::opPtr_t& op) { LLMessageLog::log(op); }); + LLCore::HttpOpRequest::setMessageLogFunc([](LLCore::HttpResponse* response) { LLMessageLog::log(response); }); } + else + { + LLCore::HttpOpRequest::setMessageLogFunc(nullptr); + LLCore::HttpRequestQueue::setMessageLogFunc(nullptr); + } + sCallback = callback; }