summaryrefslogtreecommitdiff
path: root/indra/newview/llappviewer.cpp
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2010-04-07 13:08:54 +0100
committerTofu Linden <tofu.linden@lindenlab.com>2010-04-07 13:08:54 +0100
commit58d1999d47baebc9af3c566b61401a946da40073 (patch)
tree72735031bf727bff369be3e30acac69192a51fcc /indra/newview/llappviewer.cpp
parente07937ced233513bcae55b2365f9ba5a15108faa (diff)
parentadce2ecdf8f3a0efcd4907699d286012124ac496 (diff)
merge from viewer-trunk
Diffstat (limited to 'indra/newview/llappviewer.cpp')
-rw-r--r--indra/newview/llappviewer.cpp124
1 files changed, 87 insertions, 37 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1c8b2e6808..34e9497ed8 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -155,7 +155,7 @@
#include "llworld.h"
#include "llhudeffecttrail.h"
#include "llvectorperfoptions.h"
-#include "llslurl.h"
+#include "llurlsimstring.h"
#include "llwatchdog.h"
// Included so that constants/settings might be initialized
@@ -195,9 +195,6 @@
#include "llparcel.h"
#include "llavatariconctrl.h"
-// Include for security api initialization
-#include "llsecapi.h"
-
// *FIX: These extern globals should be cleaned up.
// The globals either represent state/config/resource-storage of either
// this app, or another 'component' of the viewer. App globals should be
@@ -512,6 +509,35 @@ public:
}
};
+void LLAppViewer::initGridChoice()
+{
+ // Load up the initial grid choice from:
+ // - hard coded defaults...
+ // - command line settings...
+ // - if dev build, persisted settings...
+
+ // Set the "grid choice", this is specified by command line.
+ std::string grid_choice = gSavedSettings.getString("CmdLineGridChoice");
+ LLViewerLogin::getInstance()->setGridChoice(grid_choice);
+
+ // Load last server choice by default
+ // ignored if the command line grid choice has been set
+ if(grid_choice.empty())
+ {
+ S32 server = gSavedSettings.getS32("ServerChoice");
+ server = llclamp(server, 0, (S32)GRID_INFO_COUNT - 1);
+ if(server == GRID_INFO_OTHER)
+ {
+ std::string custom_server = gSavedSettings.getString("CustomServer");
+ LLViewerLogin::getInstance()->setGridChoice(custom_server);
+ }
+ else if(server != (S32)GRID_INFO_NONE)
+ {
+ LLViewerLogin::getInstance()->setGridChoice((EGridInfo)server);
+ }
+ }
+}
+
//virtual
bool LLAppViewer::initSLURLHandler()
{
@@ -623,6 +649,7 @@ bool LLAppViewer::init()
LLCurl::initClass();
initThreads();
+
writeSystemInfo();
// Build a string representing the current version number.
@@ -752,6 +779,10 @@ bool LLAppViewer::init()
return false;
}
+ // Always fetch the Ethernet MAC address, needed both for login
+ // and password load.
+ LLUUID::getNodeID(gMACAddress);
+
// Prepare for out-of-memory situations, during which we will crash on
// purpose and save a dump.
#if LL_WINDOWS && LL_RELEASE_FOR_DOWNLOAD && LL_USE_SMARTHEAP
@@ -863,7 +894,6 @@ bool LLAppViewer::init()
}
}
-
// save the graphics card
gDebugInfo["GraphicsCard"] = LLFeatureManager::getInstance()->getGPUString();
@@ -874,17 +904,6 @@ bool LLAppViewer::init()
gSimFrames = (F32)gFrameCount;
LLViewerJoystick::getInstance()->init(false);
-
- try {
- initializeSecHandler();
- }
- catch (LLProtectedDataException ex)
- {
- LLNotificationsUtil::add("CorruptedProtectedDataStore");
- }
- LLHTTPClient::setCertVerifyCallback(secapiSSLCertVerifyCallback);
-
-
gGLActive = FALSE;
if (gSavedSettings.getBOOL("QAMode") && gSavedSettings.getS32("QAModeEventHostPort") > 0)
{
@@ -922,11 +941,13 @@ bool LLAppViewer::mainLoop()
gServicePump = new LLPumpIO(gAPRPoolp);
LLHTTPClient::setPump(*gServicePump);
LLCurl::setCAFile(gDirUtilp->getCAFile());
-
+ LLCurl::setSSLVerify(! gSavedSettings.getBOOL("NoVerifySSLCert"));
+
// Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be instantiated.
LLVoiceChannel::initClass();
- LLVoiceClient::getInstance()->init(gServicePump);
+ LLVoiceClient::init(gServicePump);
+
LLTimer frameTimer,idleTimer;
LLTimer debugTime;
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
@@ -1267,7 +1288,7 @@ bool LLAppViewer::cleanup()
// to ensure shutdown order
LLMortician::setZealous(TRUE);
- LLVoiceClient::getInstance()->terminate();
+ LLVoiceClient::terminate();
disconnectViewer();
@@ -1469,6 +1490,13 @@ bool LLAppViewer::cleanup()
llinfos << "Saving Data" << llendflush;
+ // Quitting with "Remember Password" turned off should always stomp your
+ // saved password, whether or not you successfully logged in. JC
+ if (!gSavedSettings.getBOOL("RememberPassword"))
+ {
+ LLStartUp::deletePasswordFromDisk();
+ }
+
// Store the time of our current logoff
gSavedPerAccountSettings.setU32("LastLogoff", time_corrected());
@@ -2044,6 +2072,7 @@ bool LLAppViewer::initConfiguration()
}
}
+ initGridChoice();
// If we have specified crash on startup, set the global so we'll trigger the crash at the right time
if(clp.hasOption("crashonstartup"))
@@ -2137,17 +2166,30 @@ bool LLAppViewer::initConfiguration()
// injection and steal passwords. Phoenix. SL-55321
if(clp.hasOption("url"))
{
- LLStartUp::setStartSLURL(LLSLURL(clp.getOption("url")[0]));
- if(LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION)
- {
- LLGridManager::getInstance()->setGridChoice(LLStartUp::getStartSLURL().getGrid());
-
- }
+ std::string slurl = clp.getOption("url")[0];
+ if (LLSLURL::isSLURLCommand(slurl))
+ {
+ LLStartUp::sSLURLCommand = slurl;
+ }
+ else
+ {
+ LLURLSimString::setString(slurl);
+ }
}
else if(clp.hasOption("slurl"))
{
- LLSLURL start_slurl(clp.getOption("slurl")[0]);
- LLStartUp::setStartSLURL(start_slurl);
+ std::string slurl = clp.getOption("slurl")[0];
+ if(LLSLURL::isSLURL(slurl))
+ {
+ if (LLSLURL::isSLURLCommand(slurl))
+ {
+ LLStartUp::sSLURLCommand = slurl;
+ }
+ else
+ {
+ LLURLSimString::setString(slurl);
+ }
+ }
}
const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinCurrent");
@@ -2228,10 +2270,18 @@ bool LLAppViewer::initConfiguration()
// don't call anotherInstanceRunning() when doing URL handoff, as
// it relies on checking a marker file which will not work when running
// out of different directories
-
- if (LLStartUp::getStartSLURL().isValid())
+ std::string slurl;
+ if (!LLStartUp::sSLURLCommand.empty())
+ {
+ slurl = LLStartUp::sSLURLCommand;
+ }
+ else if (LLURLSimString::parse())
+ {
+ slurl = LLURLSimString::getURL();
+ }
+ if (!slurl.empty())
{
- if (sendURLToOtherInstance(LLStartUp::getStartSLURL().getSLURLString()))
+ if (sendURLToOtherInstance(slurl))
{
// successfully handed off URL to existing instance, exit
return false;
@@ -2287,9 +2337,9 @@ bool LLAppViewer::initConfiguration()
// need to do this here - need to have initialized global settings first
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
- if ( !nextLoginLocation.empty() )
+ if ( nextLoginLocation.length() )
{
- LLStartUp::setStartSLURL(LLSLURL(nextLoginLocation));
+ LLURLSimString::setString( nextLoginLocation );
};
gLastRunVersion = gSavedSettings.getString("LastRunVersion");
@@ -2511,7 +2561,7 @@ void LLAppViewer::writeSystemInfo()
// The user is not logged on yet, but record the current grid choice login url
// which may have been the intended grid. This can b
- gDebugInfo["GridName"] = LLGridManager::getInstance()->getGridLabel();
+ gDebugInfo["GridName"] = LLViewerLogin::getInstance()->getGridLabel();
// *FIX:Mani - move this ddown in llappviewerwin32
#ifdef LL_WINDOWS
@@ -3872,7 +3922,7 @@ void LLAppViewer::sendLogoutRequest()
gLogoutMaxTime = LOGOUT_REQUEST_TIME;
mLogoutRequestSent = TRUE;
- LLVoiceClient::getInstance()->leaveChannel();
+ gVoiceClient->leaveChannel();
//Set internal status variables and marker files
gLogoutInProgress = TRUE;
@@ -4315,7 +4365,7 @@ void LLAppViewer::launchUpdater()
#endif
// *TODO change userserver to be grid on both viewer and sim, since
// userserver no longer exists.
- query_map["userserver"] = LLGridManager::getInstance()->getGridLabel();
+ query_map["userserver"] = LLViewerLogin::getInstance()->getGridLabel();
query_map["channel"] = gSavedSettings.getString("VersionChannelName");
// *TODO constantize this guy
// *NOTE: This URL is also used in win_setup/lldownloader.cpp
@@ -4328,10 +4378,10 @@ void LLAppViewer::launchUpdater()
LLAppViewer::sUpdaterInfo = new LLAppViewer::LLUpdaterInfo() ;
// if a sim name was passed in via command line parameter (typically through a SLURL)
- if ( LLStartUp::getStartSLURL().getType() == LLSLURL::LOCATION )
+ if ( LLURLSimString::sInstance.mSimString.length() )
{
// record the location to start at next time
- gSavedSettings.setString( "NextLoginLocation", LLStartUp::getStartSLURL().getSLURLString());
+ gSavedSettings.setString( "NextLoginLocation", LLURLSimString::sInstance.mSimString );
};
#if LL_WINDOWS