summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-08-09 21:21:37 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-08-09 21:21:37 +0300
commitbd3eb02e30fef733efdd96baf6bd5c2f6e05ccac (patch)
tree8806151e2da44911e3c1a271b6e3dc7f1e5f660a /indra/newview
parentb111138d64ef8c1ca93081270a711fcc88809719 (diff)
SL-15759 Crash in requestBaseCapabilitiesCoro
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llviewerregion.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 7628a6c7ef..1bc6ab076b 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -187,7 +187,7 @@ public:
mLandp(NULL)
{}
- void buildCapabilityNames(LLSD& capabilityNames);
+ static void buildCapabilityNames(LLSD& capabilityNames);
// The surfaces and other layers
LLSurface* mLandp;
@@ -260,6 +260,12 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
// This loop is used for retrying a capabilities request.
do
{
+ if (STATE_WORLD_INIT > LLStartUp::getStartupState())
+ {
+ LL_INFOS("AppInit", "Capabilities") << "Aborting capabilities request, reason: returned to login screen" << LL_ENDL;
+ return;
+ }
+
regionp = LLWorld::getInstance()->getRegionFromHandle(regionHandle);
if (!regionp) //region was removed
{
@@ -310,6 +316,12 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
++mSeedCapAttempts;
+ if (STATE_WORLD_INIT > LLStartUp::getStartupState())
+ {
+ LL_INFOS("AppInit", "Capabilities") << "Aborting capabilities request, reason: returned to login screen" << LL_ENDL;
+ return;
+ }
+
if (LLApp::isExiting())
{
return;
@@ -2925,6 +2937,7 @@ void LLViewerRegion::unpackRegionHandshake()
mRegionTimer.reset(); //reset region timer.
}
+// static
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
{
capabilityNames.append("AbuseCategories");