// 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 <errno.h> #include "base/logging.h" namespace net { Error MapSystemError(int os_error) { // There are numerous posix error codes, but these are the ones we thus far // find interesting. switch (os_error) { case EAGAIN: #if EWOULDBLOCK != EAGAIN case EWOULDBLOCK: #endif return ERR_IO_PENDING; case EACCES: return ERR_ACCESS_DENIED; case ENETDOWN: return ERR_INTERNET_DISCONNECTED; case ETIMEDOUT: return ERR_TIMED_OUT; case ECONNRESET: case ENETRESET: // Related to keep-alive case EPIPE: return ERR_CONNECTION_RESET; case ECONNABORTED: return ERR_CONNECTION_ABORTED; case ECONNREFUSED: return ERR_CONNECTION_REFUSED; case EHOSTUNREACH: case EHOSTDOWN: case ENETUNREACH: return ERR_ADDRESS_UNREACHABLE; case EADDRNOTAVAIL: return ERR_ADDRESS_INVALID; case EMSGSIZE: return ERR_MSG_TOO_BIG; case ENOTCONN: return ERR_SOCKET_NOT_CONNECTED; case 0: return OK; default: LOG(WARNING) << "Unknown error " << os_error << " mapped to net::ERR_FAILED"; return ERR_FAILED; } } } // namespace net