| 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;
|
| }
|
| }
|
|
|
|
|