1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "net/base/net_errors.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <errno.h> 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/logging.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace net { 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenError MapSystemError(int os_error) { 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // There are numerous posix error codes, but these are the ones we thus far 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // find interesting. 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen switch (os_error) { 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EAGAIN: 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if EWOULDBLOCK != EAGAIN 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EWOULDBLOCK: 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_IO_PENDING; 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EACCES: 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_ACCESS_DENIED; 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ENETDOWN: 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_INTERNET_DISCONNECTED; 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ETIMEDOUT: 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_TIMED_OUT; 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ECONNRESET: 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ENETRESET: // Related to keep-alive 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EPIPE: 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_CONNECTION_RESET; 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ECONNABORTED: 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_CONNECTION_ABORTED; 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ECONNREFUSED: 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_CONNECTION_REFUSED; 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EHOSTUNREACH: 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EHOSTDOWN: 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ENETUNREACH: 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_ADDRESS_UNREACHABLE; 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EADDRNOTAVAIL: 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_ADDRESS_INVALID; 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case EMSGSIZE: 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_MSG_TOO_BIG; 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case ENOTCONN: 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_SOCKET_NOT_CONNECTED; 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen case 0: 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return OK; 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen default: 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen LOG(WARNING) << "Unknown error " << os_error 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen << " mapped to net::ERR_FAILED"; 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return ERR_FAILED; 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace net 56