Chromium Code Reviews
DescriptionDon't rely on SSL cipher fallback in proxy auth.
When doing HTTP proxy auth, we may need to continue or retry auth on a
fresh connection. This may happen if the server did not allow keep-alive
or if the server timed out while we were prompting the user.
In response to this, we may choose to continue the existing
HttpAuthHandler state on a new connection (which would require the
server not bind auth state to the connection) or to restart it (if the
server did do so).
The existing logic in HttpProxyClientSocketWrapper distinguished these
cases with the ERR_UNABLE_TO_REUSE_CONNECTION_FOR_PROXY_AUTH error code;
if we had not send anything out of the HttpAuthController yet, we assume
that it's okay to continue without a reset. (We can't simply reset it
every time because a server which does not support connection reuse at
all would never make progress.)
If we had extracted a token from the HttpAuthController and hit an error
reading the response, HttpProxyClientSocketWrapper would forward the
error up to be retried at a higher level. However, there was no higher
level logic to retry it. The usual socket reuse race condition retry
acts on a different set of signals. Instead, we were relying on the SSL
cipher fallback (which triggers on a similar set of errors) to restart
everything from the top.
Instead, if we see an error code indicative of such a race, retry at the
HttpProxyClientSocketWrapper level, after telling the HttpAuthController
to drop all state from the current HttpAuthHandler. This unblocks
removing the now otherwise unused SSL cipher fallback.
BUG=684730
Review-Url: https://codereview.chromium.org/2688173002
Cr-Commit-Position: refs/heads/master@{#465009}
Committed: https://chromium.googlesource.com/chromium/src/+/8c7089a4184074fb5edcc9865906147e185f0514
Patch Set 1 #
Total comments: 3
Patch Set 2 : rebase #Patch Set 3 : unnecessary virtual #
Messages
Total messages: 16 (10 generated)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||