| Index: net/socket/ssl_client_socket_pool.cc | 
| =================================================================== | 
| --- net/socket/ssl_client_socket_pool.cc	(revision 65819) | 
| +++ net/socket/ssl_client_socket_pool.cc	(working copy) | 
| @@ -25,6 +25,7 @@ | 
| const scoped_refptr<HttpProxySocketParams>& http_proxy_params, | 
| ProxyServer::Scheme proxy, | 
| const std::string& hostname, | 
| +    uint16 port, | 
| const SSLConfig& ssl_config, | 
| int load_flags, | 
| bool force_spdy_over_ssl, | 
| @@ -34,6 +35,7 @@ | 
| socks_params_(socks_params), | 
| proxy_(proxy), | 
| hostname_(hostname), | 
| +      port_(port), | 
| ssl_config_(ssl_config), | 
| load_flags_(load_flags), | 
| force_spdy_over_ssl_(force_spdy_over_ssl), | 
| @@ -248,16 +250,17 @@ | 
| } | 
|  | 
| int SSLConnectJob::DoTunnelConnectComplete(int result) { | 
| -  ClientSocket* socket = transport_socket_handle_->socket(); | 
| -  HttpProxyClientSocket* tunnel_socket = | 
| -      static_cast<HttpProxyClientSocket*>(socket); | 
| - | 
| -  // Extract the information needed to prompt for the proxy authentication. | 
| -  // so that when ClientSocketPoolBaseHelper calls |GetAdditionalErrorState|, | 
| -  // we can easily set the state. | 
| -  if (result == ERR_PROXY_AUTH_REQUESTED) | 
| +  // Extract the information needed to prompt for appropriate proxy | 
| +  // authentication so that when ClientSocketPoolBaseHelper calls | 
| +  // |GetAdditionalErrorState|, we can easily set the state. | 
| +  if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { | 
| +    error_response_info_ = transport_socket_handle_->ssl_error_response_info(); | 
| +  } else if (result == ERR_PROXY_AUTH_REQUESTED) { | 
| +    ClientSocket* socket = transport_socket_handle_->socket(); | 
| +    HttpProxyClientSocket* tunnel_socket = | 
| +        static_cast<HttpProxyClientSocket*>(socket); | 
| error_response_info_ = *tunnel_socket->GetResponseInfo(); | 
| - | 
| +  } | 
| if (result < 0) | 
| return result; | 
|  | 
| @@ -284,9 +287,9 @@ | 
| ssl_connect_start_time_ = base::TimeTicks::Now(); | 
|  | 
| ssl_socket_.reset(client_socket_factory_->CreateSSLClientSocket( | 
| -        transport_socket_handle_.release(), params_->hostname(), | 
| -        params_->ssl_config(), ssl_host_info_.release(), | 
| -        dnsrr_resolver_)); | 
| +      transport_socket_handle_.release(), params_->hostname(), | 
| +      params_->port(), params_->ssl_config(), ssl_host_info_.release(), | 
| +      dnsrr_resolver_)); | 
| return ssl_socket_->Connect(&callback_); | 
| } | 
|  | 
|  |