summaryrefslogtreecommitdiffstats
path: root/net/socket_stream
diff options
context:
space:
mode:
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;
}