diff options
Diffstat (limited to 'indra/newview/llstartup.cpp')
-rw-r--r-- | indra/newview/llstartup.cpp | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ca908ef822..141a81c717 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -421,7 +421,7 @@ bool idle_startup() // // Load autopilot and stats stuff - gAgentPilot.load(gSavedSettings.getString("StatsPilotFile")); + gAgentPilot.load(); //gErrorStream.setTime(gSavedSettings.getBOOL("LogTimestamps")); @@ -995,6 +995,7 @@ bool idle_startup() if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState()) { + // Generic failure message std::ostringstream emsg; emsg << LLTrans::getString("LoginFailed") << "\n"; if(LLLoginInstance::getInstance()->authFailure()) @@ -1003,25 +1004,33 @@ bool idle_startup() << LLLoginInstance::getInstance()->getResponse() << LL_ENDL; LLSD response = LLLoginInstance::getInstance()->getResponse(); // Still have error conditions that may need some - // sort of handling. + // sort of handling - dig up specific message std::string reason_response = response["reason"]; std::string message_response = response["message"]; - - if(!message_response.empty()) + std::string message_id = response["message_id"]; + std::string message; // actual string to show the user + + if(!message_id.empty() && LLTrans::findString(message, message_id, response["message_args"])) { - // XUI: fix translation for strings returned during login - // We need a generic table for translations - std::string big_reason = LLAgent::sTeleportErrorMessages[ message_response ]; - if ( big_reason.size() == 0 ) - { - emsg << message_response; - } - else - { - emsg << big_reason; - } + // message will be filled in with the template and arguments + } + else if(!message_response.empty()) + { + // *HACK: "no_inventory_host" sent as the message itself. + // Remove this clause when server is sending message_id as well. + message = LLAgent::sTeleportErrorMessages[ message_response ]; + } + + if (message.empty()) + { + // Fallback to server-supplied string; necessary since server + // may add strings that this viewer is not yet aware of + message = message_response; } + emsg << message; + + if(reason_response == "key") { // Couldn't login because user/password is wrong @@ -1959,7 +1968,7 @@ bool idle_startup() } // Start automatic replay if the flag is set. - if (gSavedSettings.getBOOL("StatsAutoRun") || LLAgentPilot::sReplaySession) + if (gSavedSettings.getBOOL("StatsAutoRun") || gAgentPilot.getReplaySession()) { LLUUID id; LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL; @@ -3070,6 +3079,11 @@ bool process_login_success_response() } // Request the map server url + // Non-agni grids have a different default location. + if (!LLGridManager::getInstance()->isInProductionGrid()) + { + gSavedSettings.setString("MapServerURL", "http://test.map.secondlife.com.s3.amazonaws.com/"); + } std::string map_server_url = response["map-server-url"]; if(!map_server_url.empty()) { |