From 9f68163179cda136a696f8e2d4d6b39fbf588bdb Mon Sep 17 00:00:00 2001 From: "Mark Palange (Mani)" Date: Wed, 9 Dec 2009 16:38:37 -0800 Subject: EXT-2896 Fixed poor handling of login error. Added more cleanup to the reset_login call. Added new settings to control UseCircuitCode message timeouts to allow testing of this failure. Reviewed by Richard --- indra/newview/app_settings/settings.xml | 23 ++++++++++++++++++++++- indra/newview/llstartup.cpp | 9 +++++---- indra/newview/llworld.cpp | 1 + 3 files changed, 28 insertions(+), 5 deletions(-) (limited to 'indra') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c43032a3cf..80a3977d02 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4974,7 +4974,6 @@ Value 1 - StartUpToastLifeTime NearbyToastFadingTime Comment @@ -9911,6 +9910,28 @@ Value 0 + UseCircuitCodeMaxRetries + + Comment + Max timeout count for the initial UseCircuitCode message + Persist + 0 + Type + S32 + Value + 3 + + UseCircuitCodeTimeout + + Comment + Timeout duration in seconds for the initial UseCircuitCode message + Persist + 0 + Type + F32 + Value + 5.0 + UseDebugLogin Comment diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index be0c92a76d..697a530d33 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -367,8 +367,6 @@ bool idle_startup() LLMemType mt1(LLMemType::MTYPE_STARTUP); const F32 PRECACHING_DELAY = gSavedSettings.getF32("PrecachingDelay"); - const F32 TIMEOUT_SECONDS = 5.f; - const S32 MAX_TIMEOUT_COUNT = 3; static LLTimer timeout; static S32 timeout_count = 0; @@ -1436,9 +1434,9 @@ bool idle_startup() msg->addUUIDFast(_PREHASH_ID, gAgent.getID()); msg->sendReliable( gFirstSim, - MAX_TIMEOUT_COUNT, + gSavedSettings.getS32("UseCircuitCodeMaxRetries"), FALSE, - TIMEOUT_SECONDS, + gSavedSettings.getF32("UseCircuitCodeTimeout"), use_circuit_callback, NULL); @@ -2734,6 +2732,9 @@ void LLStartUp::setStartupState( EStartupState state ) void reset_login() { + gAgent.cleanup(); + LLWorld::getInstance()->destroyClass(); + LLStartUp::setStartupState( STATE_LOGIN_SHOW ); if ( gViewerWindow ) diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 5c6fc2cf21..118d7f8d08 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -118,6 +118,7 @@ LLWorld::LLWorld() : void LLWorld::destroyClass() { + mHoleWaterObjects.clear(); gObjectList.destroy(); for(region_list_t::iterator region_it = mRegionList.begin(); region_it != mRegionList.end(); ) { -- cgit v1.2.3