Index: net/websockets/websocket_basic_handshake_stream.cc |
diff --git a/net/websockets/websocket_basic_handshake_stream.cc b/net/websockets/websocket_basic_handshake_stream.cc |
index 6d769e0d35ab9f4b43c1e58e77deffa681e84375..85dad8c9011b37dd59a8b7100ec073494efcaf34 100644 |
--- a/net/websockets/websocket_basic_handshake_stream.cc |
+++ b/net/websockets/websocket_basic_handshake_stream.cc |
@@ -565,9 +565,18 @@ int WebSocketBasicHandshakeStream::ValidateResponse(int rv) { |
// Other status codes are potentially risky (see the warnings in the |
// WHATWG WebSocket API spec) and so are dropped by default. |
default: |
- failure_message_ = base::StringPrintf( |
- "Error during WebSocket handshake: Unexpected response code: %d", |
- headers->response_code()); |
+ // A WebSocket server cannot be using HTTP/0.9, so if we see version |
+ // 0.9, it means the response was garbage. |
+ // Reporting "Unexpected response code: 200" in this case is not |
+ // helpful, so use a different error message. |
+ if (headers->GetHttpVersion() == HttpVersion(0, 9)) { |
+ failure_message_ = |
+ "Error during WebSocket handshake: Invalid status line"; |
+ } else { |
+ failure_message_ = base::StringPrintf( |
+ "Error during WebSocket handshake: Unexpected response code: %d", |
+ headers->response_code()); |
+ } |
OnFinishOpeningHandshake(); |
return ERR_INVALID_RESPONSE; |
} |