diff options
author | Eli Linden <eli@lindenlab.com> | 2010-04-14 18:26:42 -0700 |
---|---|---|
committer | Eli Linden <eli@lindenlab.com> | 2010-04-14 18:26:42 -0700 |
commit | 1497a375535e4a79a876af58b9a3f6f3651ba55b (patch) | |
tree | 0a9c7472c3909c4431faaef06bea6f6f6d459094 /indra/newview/llviewermedia.cpp | |
parent | c4e287c909ca3c1eb7364964f225dd2d901fdf2c (diff) | |
parent | 54ae102c5282bae1371fbd7de0cb51eae75b4040 (diff) |
Merge
Diffstat (limited to 'indra/newview/llviewermedia.cpp')
-rw-r--r-- | indra/newview/llviewermedia.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index dd4192f270..58138d9917 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1286,7 +1286,30 @@ void LLViewerMedia::setOpenIDCookie() { if(!sOpenIDCookie.empty()) { - getCookieStore()->setCookiesFromHost(sOpenIDCookie, sOpenIDURL.mAuthority); + // The LLURL can give me the 'authority', which is of the form: [username[:password]@]hostname[:port] + // We want just the hostname for the cookie code, but LLURL doesn't seem to have a way to extract that. + // We therefore do it here. + std::string authority = sOpenIDURL.mAuthority; + std::string::size_type host_start = authority.find('@'); + if(host_start == std::string::npos) + { + // no username/password + host_start = 0; + } + else + { + // Hostname starts after the @. + // (If the hostname part is empty, this may put host_start at the end of the string. In that case, it will end up passing through an empty hostname, which is correct.) + ++host_start; + } + std::string::size_type host_end = authority.rfind(':'); + if((host_end == std::string::npos) || (host_end < host_start)) + { + // no port + host_end = authority.size(); + } + + getCookieStore()->setCookiesFromHost(sOpenIDCookie, authority.substr(host_start, host_end - host_start)); } } |