| Index: net/base/ssl_client_socket_nss.cc
|
| diff --git a/net/base/ssl_client_socket_nss.cc b/net/base/ssl_client_socket_nss.cc
|
| index d64d791d909d06f880674c4c06f85484e01dbc1f..c48f0b06e2d2fd57500c725f2f08d75bb89e980a 100644
|
| --- a/net/base/ssl_client_socket_nss.cc
|
| +++ b/net/base/ssl_client_socket_nss.cc
|
| @@ -691,7 +691,14 @@ int SSLClientSocketNSS::DoHandshakeRead() {
|
| // Done!
|
| } else {
|
| PRErrorCode prerr = PR_GetError();
|
| - net_error = NetErrorFromNSPRError(prerr);
|
| +
|
| + // If the server closed on us, it is a protocol error.
|
| + // Some TLS-intolerant servers do this when we request TLS.
|
| + if (prerr == PR_END_OF_FILE_ERROR) {
|
| + net_error = ERR_SSL_PROTOCOL_ERROR;
|
| + } else {
|
| + net_error = NetErrorFromNSPRError(prerr);
|
| + }
|
|
|
| // If not done, stay in this state
|
| if (net_error == ERR_IO_PENDING) {
|
|
|