From 7067b31a6114089217e482bfecc58fd56bed4272 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 26 Jun 2009 09:39:58 +0200 Subject: BROKEN logoff/relog crashing inconsistently on various startup states. --- linden/indra/newview/llviewernetwork.cpp | 201 +++++-------------------------- 1 file changed, 28 insertions(+), 173 deletions(-) (limited to 'linden/indra/newview/llviewernetwork.cpp') diff --git a/linden/indra/newview/llviewernetwork.cpp b/linden/indra/newview/llviewernetwork.cpp index f4e3bb7..de9addf 100644 --- a/linden/indra/newview/llviewernetwork.cpp +++ b/linden/indra/newview/llviewernetwork.cpp @@ -5,7 +5,7 @@ * * $LicenseInfo:firstyear=2006&license=viewergpl$ * - * Copyright (c) 2006-2009, Linden Research, Inc. + * Copyright (c) 2006-2008, Linden Research, Inc. * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab @@ -34,158 +34,19 @@ #include "llviewernetwork.h" #include "llviewercontrol.h" +#include "llstartup.h" -struct LLGridData -{ - const char* mLabel; - const char* mCodeName; - const char* mName; - const char* mLoginURI; - const char* mHelperURI; -}; - -static LLGridData gGridInfo[GRID_INFO_COUNT] = -{ - { "None", "", "", "", "" }, - { "SL Main Grid", - "Agni", - "util.agni.lindenlab.com", - "https://login.agni.lindenlab.com/cgi-bin/login.cgi", - "https://secondlife.com/helpers/" }, - { "SL Beta Grid", - "Aditi", - "util.aditi.lindenlab.com", - "https://login.aditi.lindenlab.com/cgi-bin/login.cgi", - "http://aditi-secondlife.webdev.lindenlab.com/helpers/" }, - { "Local OpenSim", - "", - "localhost", - "http://127.0.0.1:9000", - "" }, - { "Other", "", "", "", "" } -}; - -const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_AGNI; + #include "hippoGridManager.h" unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */ -LLViewerLogin::LLViewerLogin() : - mGridChoice(DEFAULT_GRID_CHOICE) -{ -} - -void LLViewerLogin::setGridChoice(EGridInfo grid) -{ - if(grid < 0 || grid >= GRID_INFO_COUNT) - { - llerrs << "Invalid grid index specified." << llendl; - } - - if(mGridChoice != grid || gSavedSettings.getS32("ServerChoice") != grid) - { - mGridChoice = grid; - if(GRID_INFO_LOCAL == mGridChoice) - { - mGridName = LOOPBACK_ADDRESS_STRING; - } - else if(GRID_INFO_OTHER == mGridChoice) - { - // *FIX:Mani - could this possibly be valid? - mGridName = "other"; - } - else - { - mGridName = gGridInfo[mGridChoice].mLabel; - } - - gSavedSettings.setS32("ServerChoice", mGridChoice); - gSavedSettings.setString("CustomServer", ""); - } -} - -void LLViewerLogin::setGridChoice(const std::string& grid_name) -{ - // Set the grid choice based on a string. - // The string can be: - // - a grid label from the gGridInfo table - // - an ip address - if(!grid_name.empty()) - { - // find the grid choice from the user setting. - int grid_index = GRID_INFO_NONE; - for(;grid_index < GRID_INFO_OTHER; ++grid_index) - { - if(0 == LLStringUtil::compareInsensitive(gGridInfo[grid_index].mLabel, grid_name)) - { - // Founding a matching label in the list... - setGridChoice((EGridInfo)grid_index); - break; - } - } - - if(GRID_INFO_OTHER == grid_index) - { - // *FIX:MEP Can and should we validate that this is an IP address? - mGridChoice = GRID_INFO_OTHER; - mGridName = grid_name; - gSavedSettings.setS32("ServerChoice", mGridChoice); - gSavedSettings.setString("CustomServer", mGridName); - } - } -} - -void LLViewerLogin::resetURIs() -{ - // Clear URIs when picking a new server - gSavedSettings.setValue("CmdLineLoginURI", LLSD::emptyArray()); - gSavedSettings.setString("CmdLineHelperURI", ""); -} - -EGridInfo LLViewerLogin::getGridChoice() const -{ - return mGridChoice; -} - -std::string LLViewerLogin::getGridLabel() const -{ - if(mGridChoice == GRID_INFO_NONE) - { - return "None"; - } - else if(mGridChoice < GRID_INFO_OTHER) - { - return gGridInfo[mGridChoice].mLabel; - } - - return mGridName; -} - -std::string LLViewerLogin::getGridCodeName() const -{ - // Fall back to grid label if code name is empty. - if( strcmp(gGridInfo[mGridChoice].mCodeName, "") == 0 ) - { - return getGridLabel(); - } - - return gGridInfo[mGridChoice].mCodeName; -} - -std::string LLViewerLogin::getKnownGridLabel(EGridInfo grid_index) const -{ - if(grid_index > GRID_INFO_NONE && grid_index < GRID_INFO_OTHER) - { - return gGridInfo[grid_index].mLabel; - } - return gGridInfo[GRID_INFO_NONE].mLabel; -} void LLViewerLogin::getLoginURIs(std::vector& uris) const { // return the login uri set on the command line. LLControlVariable* c = gSavedSettings.getControl("CmdLineLoginURI"); - if(c) + if(c && !LLStartUp::shouldAutoLogin()) { LLSD v = c->getValue(); if(v.isArray()) @@ -209,10 +70,12 @@ void LLViewerLogin::getLoginURIs(std::vector& uris) const } } } - + // If there was no command line uri... if(uris.empty()) { + uris.push_back(gHippoGridManager->getConnectedGrid()->getLoginUri()); + /* // If its a known grid choice, get the uri from the table, // else try the grid name. if(mGridChoice > GRID_INFO_NONE && mGridChoice < GRID_INFO_OTHER) @@ -222,44 +85,36 @@ void LLViewerLogin::getLoginURIs(std::vector& uris) const else { uris.push_back(mGridName); - } + } */ } } -std::string LLViewerLogin::getHelperURI() const +const std::string &LLViewerLogin::getGridLabel() const { - std::string helper_uri = gSavedSettings.getString("CmdLineHelperURI"); - if (helper_uri.empty()) - { - // grab URI from selected grid - if(mGridChoice > GRID_INFO_NONE && mGridChoice < GRID_INFO_OTHER) - { - helper_uri = gGridInfo[mGridChoice].mHelperURI; - } + return gHippoGridManager->getConnectedGrid()->getGridNick(); +} - if (helper_uri.empty()) - { - // what do we do with unnamed/miscellaneous grids? - // for now, operations that rely on the helper URI (currency/land purchasing) will fail - } - } - return helper_uri; +const std::string &LLViewerLogin::getLoginPage() const +{ + return gHippoGridManager->getConnectedGrid()->getLoginPage(); } -bool LLViewerLogin::isInProductionGrid() +const std::string &LLViewerLogin::getHelperURI() const { - // *NOTE:Mani This used to compare GRID_INFO_AGNI to gGridChoice, - // but it seems that loginURI trumps that. - std::vector uris; - getLoginURIs(uris); - LLStringUtil::toLower(uris[0]); + return gHippoGridManager->getConnectedGrid()->getHelperUri(); +} + +bool LLViewerLogin::isOpenSimulator() +{ + return gHippoGridManager->getConnectedGrid()->isOpenSimulator(); +} - // Returns true for every grid but Aditi now, - // because opensim grids have feelings too! -- McCabe - if((uris[0].find("aditi") != std::string::npos)) - { - return false; - } +bool LLViewerLogin::isSecondLife() +{ + return gHippoGridManager->getConnectedGrid()->isSecondLife(); +} +bool LLViewerLogin::isInProductionGrid() +{ return true; } -- cgit v1.1