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
meow-7.2.2
Mark Palange (Mani) 2009-12-09 16:38:37 -08:00
parent 423b943b41
commit 9f68163179
3 changed files with 28 additions and 5 deletions

View File

@ -4974,7 +4974,6 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>StartUpToastLifeTime</key>
<key>NearbyToastFadingTime</key>
<map>
<key>Comment</key>
@ -9911,6 +9910,28 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>UseCircuitCodeMaxRetries</key>
<map>
<key>Comment</key>
<string>Max timeout count for the initial UseCircuitCode message</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<real>3</real>
</map>
<key>UseCircuitCodeTimeout</key>
<map>
<key>Comment</key>
<string>Timeout duration in seconds for the initial UseCircuitCode message</string>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>5.0</real>
</map>
<key>UseDebugLogin</key>
<map>
<key>Comment</key>

View File

@ -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 )

View File

@ -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(); )
{