| 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:
|
|
|