blob: 616f57ac04fe44f2f92e99132478241274d42949 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_WEBSOCKETS_WEBSOCKET_ERRORS_H_
#define NET_WEBSOCKETS_WEBSOCKET_ERRORS_H_
#include "net/base/net_errors.h"
namespace net {
// Reason codes used with close messages. NoStatusReceived,
// AbnormalClosure and TlsHandshake are special in that they
// should never be sent on the wire; they are only used within the
// implementation.
enum WebSocketError {
// Status codes in the range 0 to 999 are not used.
// The following are defined by RFC6455.
kWebSocketNormalClosure = 1000,
kWebSocketErrorGoingAway = 1001,
kWebSocketErrorProtocolError = 1002,
kWebSocketErrorUnsupportedData = 1003,
kWebSocketErrorNoStatusReceived = 1005,
kWebSocketErrorAbnormalClosure = 1006,
kWebSocketErrorInvalidFramePayloadData = 1007,
kWebSocketErrorPolicyViolation = 1008,
kWebSocketErrorMessageTooBig = 1009,
kWebSocketErrorMandatoryExtension = 1010,
kWebSocketErrorInternalServerError = 1011,
kWebSocketErrorTlsHandshake = 1015,
// The range 1000-2999 is reserved by RFC6455 for use by the WebSocket
// protocol and public extensions.
kWebSocketErrorProtocolReservedMax = 2999,
// The range 3000-3999 is reserved by RFC6455 for registered use by libraries,
// frameworks and applications.
kWebSocketErrorRegisteredReservedMin = 3000,
kWebSocketErrorRegisteredReservedMax = 3999,
// The range 4000-4999 is reserved by RFC6455 for private use by prior
// agreement of the endpoints.
kWebSocketErrorPrivateReservedMin = 4000,
kWebSocketErrorPrivateReservedMax = 4999,
};
// Convert WebSocketError to net::Error defined in net/base/net_errors.h.
Error WebSocketErrorToNetError(WebSocketError error);
// Check a close status code for strict compliance with RFC6455.
// That this function was adapted from Chromium's IsStrictlyValidCloseStatusCode
// They differ in that codes 1004, 1005, and 1006 are reserved codes and must
// not be set in a Close message. Chromium's check is different since they
// check for reserved codes separately.
bool IsValidCloseStatusCode(int code);
} // namespace net
#endif // NET_WEBSOCKETS_WEBSOCKET_ERRORS_H_