diff options
| author | Merov Linden <merov@lindenlab.com> | 2013-11-18 16:07:55 -0800 |
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2013-11-18 16:07:55 -0800 |
| commit | ce5baf14ac62ecd3bf471e1b49a4e166310ebe1a (patch) | |
| tree | 110869149fbc439487bb7ae0c49c24b938570b09 /indra/llplugin | |
| parent | 125f3f071a30f4c47feb664b21f3e380ee4e7e49 (diff) | |
| parent | ebc9bcbf69f7a519677a6522979a6bf6cbb04bb8 (diff) | |
Pull merge from lindenlab/viewer-release
Diffstat (limited to 'indra/llplugin')
| -rwxr-xr-x | indra/llplugin/llplugincookiestore.cpp | 28 | ||||
| -rwxr-xr-x | indra/llplugin/llplugincookiestore.h | 3 |
2 files changed, 31 insertions, 0 deletions
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp index 82017ab3fa..9f4d65e723 100755 --- a/indra/llplugin/llplugincookiestore.cpp +++ b/indra/llplugin/llplugincookiestore.cpp @@ -87,6 +87,16 @@ std::string LLPluginCookieStore::Cookie::getKey() const return result; } +std::string LLPluginCookieStore::Cookie::getDomain() const +{ + std::string result; + if(mDomainEnd > mDomainStart) + { + result += mCookie.substr(mDomainStart, mDomainEnd - mDomainStart); + } + return result; +} + bool LLPluginCookieStore::Cookie::parse(const std::string &host) { bool first_field = true; @@ -662,3 +672,21 @@ void LLPluginCookieStore::removeCookie(const std::string &key) } } +void LLPluginCookieStore::removeCookiesByDomain(const std::string &domain) +{ + cookie_map_t::iterator iter = mCookies.begin(); + while(iter != mCookies.end()) + { + if(iter->second->getDomain() == domain) + { + cookie_map_t::iterator doErase = iter; + iter++; + delete doErase->second; + mCookies.erase(doErase); + } + else + { + iter++; + } + } +} diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h index 91289d38a5..a2fdeab647 100755 --- a/indra/llplugin/llplugincookiestore.h +++ b/indra/llplugin/llplugincookiestore.h @@ -67,6 +67,8 @@ public: // quote or unquote a string as per the definition of 'quoted-string' in rfc2616 static std::string quoteString(const std::string &s); static std::string unquoteString(const std::string &s); + + void removeCookiesByDomain(const std::string &domain); private: @@ -79,6 +81,7 @@ private: // Construct a string from the cookie that uniquely represents it, to be used as a key in a std::map. std::string getKey() const; + std::string getDomain() const; const std::string &getCookie() const { return mCookie; }; bool isSessionCookie() const { return mDate.isNull(); }; |
