summaryrefslogtreecommitdiffstats
path: root/net/socket_stream
diff options
context:
space:
mode:
authortoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 05:26:45 +0000
committertoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-20 05:26:45 +0000
commit467e0e55f81ccddf150a0415a3ecaf1e075eb683 (patch)
tree6bd83d96dd3abe70f7a20f7381892c5de09781af /net/socket_stream
parente74257b15f1532d4e50d59a108e8d0bb220dc3b9 (diff)
downloadchromium_src-467e0e55f81ccddf150a0415a3ecaf1e075eb683.zip
chromium_src-467e0e55f81ccddf150a0415a3ecaf1e075eb683.tar.gz
chromium_src-467e0e55f81ccddf150a0415a3ecaf1e075eb683.tar.bz2
Reset tunnel request headers after they are sent.
There headers should be reinitialized when a client is going to reconnect because of invalid cert or client cert request. BUG=133243 TEST=none Review URL: https://chromiumcodereview.appspot.com/10582016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@143147 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket_stream')
-rw-r--r--net/socket_stream/socket_stream.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/net/socket_stream/socket_stream.cc b/net/socket_stream/socket_stream.cc
index a3424da..908223c 100644
--- a/net/socket_stream/socket_stream.cc
+++ b/net/socket_stream/socket_stream.cc
@@ -778,10 +778,16 @@ int SocketStream::DoWriteTunnelHeadersComplete(int result) {
tunnel_request_headers_bytes_sent_ += result;
if (tunnel_request_headers_bytes_sent_ <
- tunnel_request_headers_->headers_.size())
+ tunnel_request_headers_->headers_.size()) {
next_state_ = STATE_WRITE_TUNNEL_HEADERS;
- else
+ } else {
+ // Handling a cert error or a client cert request requires reconnection.
+ // DoWriteTunnelHeaders() will be called again.
+ // Thus |tunnel_request_headers_bytes_sent_| should be reset to 0 for
+ // sending |tunnel_request_headers_| correctly.
+ tunnel_request_headers_bytes_sent_ = 0;
next_state_ = STATE_READ_TUNNEL_HEADERS;
+ }
return OK;
}