// Copyright (c) 2011 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. #include "net/base/net_errors.h" #include <winsock2.h> #include "base/logging.h" namespace net { // Map winsock error to Chromium error. Error MapSystemError(int os_error) { // There are numerous Winsock error codes, but these are the ones we thus far // find interesting. switch (os_error) { case WSAEWOULDBLOCK: return ERR_IO_PENDING; case WSAEACCES: return ERR_ACCESS_DENIED; case WSAENETDOWN: return ERR_INTERNET_DISCONNECTED; case WSAETIMEDOUT: return ERR_TIMED_OUT; case WSAECONNRESET: case WSAENETRESET: // Related to keep-alive return ERR_CONNECTION_RESET; case WSAECONNABORTED: return ERR_CONNECTION_ABORTED; case WSAECONNREFUSED: return ERR_CONNECTION_REFUSED; case WSA_IO_INCOMPLETE: case WSAEDISCON: return ERR_CONNECTION_CLOSED; case WSAEHOSTUNREACH: case WSAENETUNREACH: return ERR_ADDRESS_UNREACHABLE; case WSAEADDRNOTAVAIL: return ERR_ADDRESS_INVALID; case WSAENOTCONN: return ERR_SOCKET_NOT_CONNECTED; case WSAEAFNOSUPPORT: return ERR_ADDRESS_UNREACHABLE; case ERROR_SUCCESS: return OK; default: LOG(WARNING) << "Unknown error " << os_error << " mapped to net::ERR_FAILED"; return ERR_FAILED; } } } // namespace net