websocket_errors.cc revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/websockets/websocket_errors.h"
6
7#include "base/logging.h"
8
9namespace net {
10
11Error WebSocketErrorToNetError(WebSocketError error) {
12  switch (error) {
13    case kWebSocketNormalClosure:
14      return OK;
15
16    case kWebSocketErrorGoingAway:  // TODO(ricea): More specific code?
17    case kWebSocketErrorProtocolError:
18    case kWebSocketErrorUnsupportedData:
19    case kWebSocketErrorInvalidFramePayloadData:
20    case kWebSocketErrorPolicyViolation:
21    case kWebSocketErrorMandatoryExtension:
22    case kWebSocketErrorInternalServerError:
23      return ERR_WS_PROTOCOL_ERROR;
24
25    case kWebSocketErrorNoStatusReceived:
26    case kWebSocketErrorAbnormalClosure:
27      return ERR_CONNECTION_CLOSED;
28
29    case kWebSocketErrorTlsHandshake:
30      // This error will probably be reported with more detail at a lower layer;
31      // this is the best we can do at this layer.
32      return ERR_SSL_PROTOCOL_ERROR;
33
34    case kWebSocketErrorMessageTooBig:
35      return ERR_MSG_TOO_BIG;
36
37    default:
38      return ERR_UNEXPECTED;
39  }
40}
41
42}  // namespace net
43