summaryrefslogtreecommitdiff
path: root/indra/llcorehttp
diff options
context:
space:
mode:
authorAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-21 20:17:31 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-24 20:09:45 +0300
commit0da385368a875bfc204adb14b970b818a642e854 (patch)
tree96aee157705e6cc2264d6cb6894e3bdcf6dc9475 /indra/llcorehttp
parent1dce7c190ffffe4d935bea84ebd2daa28963b36c (diff)
#6172 Crash on recordResultCode
mResutCodes gets modified from different threads, mutex it.
Diffstat (limited to 'indra/llcorehttp')
-rw-r--r--indra/llcorehttp/httpstats.cpp3
-rw-r--r--indra/llcorehttp/httpstats.h12
2 files changed, 13 insertions, 2 deletions
diff --git a/indra/llcorehttp/httpstats.cpp b/indra/llcorehttp/httpstats.cpp
index dc2ac35c71..f64752e91e 100644
--- a/indra/llcorehttp/httpstats.cpp
+++ b/indra/llcorehttp/httpstats.cpp
@@ -41,6 +41,7 @@ HTTPStats::~HTTPStats()
void HTTPStats::resetStats()
{
+ std::lock_guard<std::mutex> lock(mStatsMutex);
mResutCodes.clear();
mDataDown.reset();
mDataUp.reset();
@@ -50,6 +51,7 @@ void HTTPStats::resetStats()
void HTTPStats::recordResultCode(S32 code)
{
+ std::lock_guard<std::mutex> lock(mStatsMutex);
std::map<S32, S32>::iterator it;
it = mResutCodes.find(code);
@@ -86,6 +88,7 @@ namespace
void HTTPStats::dumpStats()
{
+ std::lock_guard<std::mutex> lock(mStatsMutex);
std::stringstream out;
out << "HTTP DATA SUMMARY" << std::endl;
diff --git a/indra/llcorehttp/httpstats.h b/indra/llcorehttp/httpstats.h
index 5c0f26d34e..08a537cda7 100644
--- a/indra/llcorehttp/httpstats.h
+++ b/indra/llcorehttp/httpstats.h
@@ -47,17 +47,23 @@ namespace LLCore
void recordDataDown(size_t bytes)
{
+ std::lock_guard<std::mutex> lock(mStatsMutex);
mDataDown.push((F32)bytes);
}
void recordDataUp(size_t bytes)
{
+ std::lock_guard<std::mutex> lock(mStatsMutex);
mDataUp.push((F32)bytes);
}
- void recordHTTPRequest() { ++mRequests; }
+ void recordHTTPRequest()
+ {
+ std::lock_guard<std::mutex> lock(mStatsMutex);
+ ++mRequests;
+ }
- void recordResultCode(S32 code);
+ void recordResultCode(S32 code); // http thread
void dumpStats();
private:
@@ -67,6 +73,8 @@ namespace LLCore
S32 mRequests;
std::map<S32, S32> mResutCodes;
+
+ std::mutex mStatsMutex;
};