Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Unified Diff: net/websockets/websocket_errors.cc

Issue 14850012: Add missing status codes to WebSocketError enum. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/websockets/websocket_errors.cc
diff --git a/net/websockets/websocket_errors.cc b/net/websockets/websocket_errors.cc
index 0814dab4aeedd5ec9e60ff5397a7c7600a4738c3..b7c67e527041d9bfa03a8326454740bb8ac0738c 100644
--- a/net/websockets/websocket_errors.cc
+++ b/net/websockets/websocket_errors.cc
@@ -7,18 +7,70 @@
#include "base/logging.h"
namespace net {
+namespace {
+
+// Return true if "error" is one of the codes defined by the multiplexing
+// extension known to Chromium.
+bool IsWebSocketMuxErrorCode(WebSocketError error) {
+ switch (error) {
+ case kWebSocketErrorPhysicalConnectionFailed:
+ case kWebSocketErrorInvalidEncapsulatingMessage:
+ case kWebSocketErrorChannelIdTruncated:
+ case kWebSocketErrorEncapsulatedFrameIsTruncated:
+ case kWebSocketErrorUnknownMuxOpcode:
+ case kWebSocketErrorInvalidMuxControlBlock:
+ case kWebSocketErrorChannelAlreadyExists:
+ case kWebSocketErrorNewChannelSlotViolation:
+ case kWebSocketErrorNewChannelSlotOverFlow:
+ case kWebSocketErrorBadRequest:
+ case kWebSocketErrorUnknownRequestEncoding:
+ case kWebSocketErrorBadResponse:
+ case kWebSocketErrorUnknownResponseEncoding:
+ case kWebSocketErrorLogicalChannelFailed:
+ case kWebSocketErrorSendQuotaViolation:
+ case kWebSocketErrorSendQuotaOverflow:
+ case kWebSocketErrorIdleTimeout:
+ case kWebSocketErrorDropChannelAck:
+ case kWebSocketErrorBadFragmentation:
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+} // namespace
Error WebSocketErrorToNetError(WebSocketError error) {
switch (error) {
- case WEB_SOCKET_OK:
+ case kWebSocketNormalClosure:
return OK;
- case WEB_SOCKET_ERR_PROTOCOL_ERROR:
+
+ case kWebSocketErrorGoingAway: // TODO(ricea): More specific code?
+ case kWebSocketErrorProtocolError:
+ case kWebSocketErrorUnsupportedData:
+ case kWebSocketErrorInvalidFramePayloadData:
+ case kWebSocketErrorPolicyViolation:
+ case kWebSocketErrorMandatoryExtension:
+ case kWebSocketErrorInternalServerError:
return ERR_WS_PROTOCOL_ERROR;
- case WEB_SOCKET_ERR_MESSAGE_TOO_BIG:
+
+ case kWebSocketErrorNoStatusReceived:
+ case kWebSocketErrorAbnormalClosure:
+ return ERR_CONNECTION_CLOSED;
+
+ case kWebSocketErrorTlsHandshake:
+ // This error will probably be reported with more detail at a lower layer;
+ // this is the best we can do at this layer.
+ return ERR_SSL_PROTOCOL_ERROR;
+
+ case kWebSocketErrorMessageTooBig:
return ERR_MSG_TOO_BIG;
+
default:
- NOTREACHED();
- return ERR_UNEXPECTED;
+ // Check for extension error codes which we may be generating internally.
+ return IsWebSocketMuxErrorCode(error) ? ERR_WS_PROTOCOL_ERROR
+ : ERR_UNEXPECTED;
}
}

Powered by Google App Engine
This is Rietveld 408576698