| Index: net/socket/ssl_client_socket_nss.cc
|
| diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
|
| index 3a8b39e678c2785ea4d6fd7c60fea762fb599883..cedb3d1842a2311b0895803d6c56e4b4286bbe2c 100644
|
| --- a/net/socket/ssl_client_socket_nss.cc
|
| +++ b/net/socket/ssl_client_socket_nss.cc
|
| @@ -474,18 +474,6 @@ int MapNSSClientError(PRErrorCode err) {
|
| }
|
| }
|
|
|
| -// Map NSS error code from the first SSL handshake to network error code.
|
| -int MapNSSClientHandshakeError(PRErrorCode err) {
|
| - switch (err) {
|
| - // If the server closed on us, it is a protocol error.
|
| - // Some TLS-intolerant servers do this when we request TLS.
|
| - case PR_END_OF_FILE_ERROR:
|
| - return ERR_SSL_PROTOCOL_ERROR;
|
| - default:
|
| - return MapNSSClientError(err);
|
| - }
|
| -}
|
| -
|
| } // namespace
|
|
|
| // SSLClientSocketNSS::Core provides a thread-safe, ref-counted core that is
|
| @@ -720,7 +708,7 @@ class SSLClientSocketNSS::Core : public base::RefCountedThreadSafe<Core> {
|
|
|
| // Handles an NSS error generated while handshaking or performing IO.
|
| // Returns a network error code mapped from the original NSS error.
|
| - int HandleNSSError(PRErrorCode error, bool handshake_error);
|
| + int HandleNSSError(PRErrorCode error);
|
|
|
| int DoHandshakeLoop(int last_io_result);
|
| int DoReadLoop(int result);
|
| @@ -1682,12 +1670,10 @@ void SSLClientSocketNSS::Core::HandshakeSucceeded() {
|
| nss_handshake_state_));
|
| }
|
|
|
| -int SSLClientSocketNSS::Core::HandleNSSError(PRErrorCode nss_error,
|
| - bool handshake_error) {
|
| +int SSLClientSocketNSS::Core::HandleNSSError(PRErrorCode nss_error) {
|
| DCHECK(OnNSSTaskRunner());
|
|
|
| - int net_error = handshake_error ? MapNSSClientHandshakeError(nss_error) :
|
| - MapNSSClientError(nss_error);
|
| + int net_error = MapNSSClientError(nss_error);
|
|
|
| #if defined(OS_WIN)
|
| // On Windows, a handle to the HCRYPTPROV is cached in the X509Certificate
|
| @@ -1845,24 +1831,7 @@ int SSLClientSocketNSS::Core::DoHandshake() {
|
| }
|
| } else {
|
| PRErrorCode prerr = PR_GetError();
|
| - net_error = HandleNSSError(prerr, true);
|
| -
|
| - // Some network devices that inspect application-layer packets seem to
|
| - // inject TCP reset packets to break the connections when they see
|
| - // TLS 1.1 in ClientHello or ServerHello. See http://crbug.com/130293.
|
| - //
|
| - // Only allow ERR_CONNECTION_RESET to trigger a fallback from TLS 1.1 or
|
| - // 1.2. We don't lose much in this fallback because the explicit IV for CBC
|
| - // mode in TLS 1.1 is approximated by record splitting in TLS 1.0. The
|
| - // fallback will be more painful for TLS 1.2 when we have GCM support.
|
| - //
|
| - // ERR_CONNECTION_RESET is a common network error, so we don't want it
|
| - // to trigger a version fallback in general, especially the TLS 1.0 ->
|
| - // SSL 3.0 fallback, which would drop TLS extensions.
|
| - if (prerr == PR_CONNECT_RESET_ERROR &&
|
| - ssl_config_.version_max >= SSL_PROTOCOL_VERSION_TLS1_1) {
|
| - net_error = ERR_SSL_PROTOCOL_ERROR;
|
| - }
|
| + net_error = HandleNSSError(prerr);
|
|
|
| // If not done, stay in this state
|
| if (net_error == ERR_IO_PENDING) {
|
| @@ -1989,7 +1958,7 @@ int SSLClientSocketNSS::Core::DoPayloadRead() {
|
| // If *next_result == 0, then that indicates EOF, and no special error
|
| // handling is needed.
|
| pending_read_nss_error_ = PR_GetError();
|
| - *next_result = HandleNSSError(pending_read_nss_error_, false);
|
| + *next_result = HandleNSSError(pending_read_nss_error_);
|
| if (rv > 0 && *next_result == ERR_IO_PENDING) {
|
| // If at least some data was read from PR_Read(), do not treat
|
| // insufficient data as an error to return in the next call to
|
| @@ -2051,7 +2020,7 @@ int SSLClientSocketNSS::Core::DoPayloadWrite() {
|
| if (prerr == PR_WOULD_BLOCK_ERROR)
|
| return ERR_IO_PENDING;
|
|
|
| - rv = HandleNSSError(prerr, false);
|
| + rv = HandleNSSError(prerr);
|
| PostOrRunCallback(
|
| FROM_HERE,
|
| base::Bind(&AddLogEventWithCallback, weak_net_log_,
|
|
|