15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/websockets/websocket_errors.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Error WebSocketErrorToNetError(WebSocketError error) { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (error) { 13b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketNormalClosure: 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return OK; 15b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 16b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorGoingAway: // TODO(ricea): More specific code? 17b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorProtocolError: 18b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorUnsupportedData: 19b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorInvalidFramePayloadData: 20b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorPolicyViolation: 21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorMandatoryExtension: 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorInternalServerError: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ERR_WS_PROTOCOL_ERROR; 24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorNoStatusReceived: 26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorAbnormalClosure: 27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return ERR_CONNECTION_CLOSED; 28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorTlsHandshake: 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // This error will probably be reported with more detail at a lower layer; 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // this is the best we can do at this layer. 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return ERR_SSL_PROTOCOL_ERROR; 33b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 34b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) case kWebSocketErrorMessageTooBig: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ERR_MSG_TOO_BIG; 36b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ERR_UNEXPECTED; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 43