diff options
author | Roxie Linden <roxie@lindenlab.com> | 2010-04-02 02:03:21 -0700 |
---|---|---|
committer | Roxie Linden <roxie@lindenlab.com> | 2010-04-02 02:03:21 -0700 |
commit | 9523c70f9dd3b2db21f6578bbb2b1da6873004ea (patch) | |
tree | fe3f862878af5793aeec797d63c1d7c114d3c68d /indra/viewer_components | |
parent | 18d9efff12ef8b59c648a801fe2c5c7e0bc8fde4 (diff) | |
parent | aa0a129b6798f8be554d1d9d41cbd217a0040daf (diff) |
DEV-45809 - Merge Second Life Enterprise changes into viewer 2.x trunk
Includes: DEV-45800, DEV-45803 - Grid Manager
DEV-45804 - SLURL refactor
DEV-45801 - Single username field (for Identity Evolution and SLE Ldap)
Also,
Includes Certificate Management code allowing the viewer to connect to
grids not signed by a well know key (just like any web browser). Also
contains secure storage for things like passwords.
The security/certificate code is modular with the intention of adding modules
to directly use the operating system facilities for crypto if available.
(that's much more secure than we'll ever be)
Also, refactor of voice to modularize it, and add a diamondware voice module.
CR: Aimee, James, Lynx, Mani, Karina and a list of thousands
Diffstat (limited to 'indra/viewer_components')
-rw-r--r-- | indra/viewer_components/login/lllogin.cpp | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index b9f61ca7e1..e1922367bf 100644 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp @@ -122,29 +122,35 @@ private: LLSD mAuthResponse, mValidAuthResponse; }; -void LLLogin::Impl::connect(const std::string& uri, const LLSD& credentials) +void LLLogin::Impl::connect(const std::string& uri, const LLSD& login_params) { + LL_DEBUGS("LLLogin") << " connect with uri '" << uri << "', login_params " << login_params << LL_ENDL; + // Launch a coroutine with our login_() method. Run the coroutine until // its first wait; at that point, return here. std::string coroname = LLCoros::instance().launch("LLLogin::Impl::login_", - boost::bind(&Impl::login_, this, _1, uri, credentials)); + boost::bind(&Impl::login_, this, _1, uri, login_params)); + LL_DEBUGS("LLLogin") << " connected with uri '" << uri << "', login_params " << login_params << LL_ENDL; } -void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credentials) +void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD login_params) { - LLSD printable_credentials = credentials; - if(printable_credentials.has("params") - && printable_credentials["params"].has("passwd")) + try { - printable_credentials["params"]["passwd"] = "*******"; - } + LLSD printable_params = login_params; + //if(printable_params.has("params") + // && printable_params["params"].has("passwd")) + //{ + // printable_params["params"]["passwd"] = "*******"; + //} LL_DEBUGS("LLLogin") << "Entering coroutine " << LLCoros::instance().getName(self) - << " with uri '" << uri << "', credentials " << printable_credentials << LL_ENDL; + << " with uri '" << uri << "', parameters " << printable_params << LL_ENDL; // Arriving in SRVRequest state LLEventStream replyPump("SRVreply", true); // Should be an array of one or more uri strings. + LLSD rewrittenURIs; { LLEventTimeout filter(replyPump); @@ -155,9 +161,9 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential // *NOTE:Mani - Completely arbitrary default timeout value for SRV request. F32 seconds_to_timeout = 5.0f; - if(credentials.has("cfg_srv_timeout")) + if(login_params.has("cfg_srv_timeout")) { - seconds_to_timeout = credentials["cfg_srv_timeout"].asReal(); + seconds_to_timeout = login_params["cfg_srv_timeout"].asReal(); } // If the SRV request times out (e.g. EXT-3934), simulate response: an @@ -167,9 +173,9 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential filter.eventAfter(seconds_to_timeout, fakeResponse); std::string srv_pump_name = "LLAres"; - if(credentials.has("cfg_srv_pump")) + if(login_params.has("cfg_srv_pump")) { - srv_pump_name = credentials["cfg_srv_pump"].asString(); + srv_pump_name = login_params["cfg_srv_pump"].asString(); } // Make request @@ -194,7 +200,7 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential urend(rewrittenURIs.endArray()); urit != urend; ++urit) { - LLSD request(credentials); + LLSD request(login_params); request["reply"] = loginReplyPump.getName(); request["uri"] = *urit; std::string status; @@ -291,8 +297,17 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential // to success, add a data/message and data/reason fields. LLSD error_response; error_response["reason"] = mAuthResponse["status"]; + error_response["errorcode"] = mAuthResponse["errorcode"]; error_response["message"] = mAuthResponse["error"]; + if(mAuthResponse.has("certificate")) + { + error_response["certificate"] = mAuthResponse["certificate"]; + } sendProgressEvent("offline", "fail.login", error_response); + } + catch (...) { + llerrs << "login exception caught" << llendl; + } } void LLLogin::Impl::disconnect() |