Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Unified Diff: net/http/http_auth.cc

Issue 6525035: Invalidate credentials if the server rejects them. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simplify auth handlers for basic and digest Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/http/http_auth.cc
diff --git a/net/http/http_auth.cc b/net/http/http_auth.cc
index d5d6e0c430f40b424c15099a2654e0d2593cb2da..78e21e9c1b49859b7b9e2a1df9cb7383ff813da4 100644
--- a/net/http/http_auth.cc
+++ b/net/http/http_auth.cc
@@ -126,6 +126,26 @@ void HttpAuth::ChallengeTokenizer::Init(std::string::const_iterator begin,
}
// static
+bool HttpAuth::ShouldInvalidateRejectedAuth(
+ const HttpResponseHeaders* headers,
+ Target target,
+ HttpAuthHandler* handler) {
+ const std::string header_name = GetChallengeHeaderName(target);
+ std::string cur_challenge;
+ std::string cur_scheme_name = SchemeToString(handler->auth_scheme());
+ void* iter = NULL;
+
+ while (headers->EnumerateHeader(&iter, header_name, &cur_challenge)) {
+ ChallengeTokenizer props(cur_challenge.begin(), cur_challenge.end());
+
+ if (LowerCaseEqualsASCII(props.scheme(), cur_scheme_name.c_str()) &&
+ handler->ShouldInvalidateRejectedAuth(&props))
+ return true;
+ }
+ return false;
+}
+
+// static
std::string HttpAuth::GetChallengeHeaderName(Target target) {
switch (target) {
case AUTH_PROXY:

Powered by Google App Engine
This is Rietveld 408576698