• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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/base/net_errors.h"
6 
7 #include <errno.h>
8 
9 #include "base/logging.h"
10 
11 namespace net {
12 
MapSystemError(int os_error)13 Error MapSystemError(int os_error) {
14   // There are numerous posix error codes, but these are the ones we thus far
15   // find interesting.
16   switch (os_error) {
17     case EAGAIN:
18 #if EWOULDBLOCK != EAGAIN
19     case EWOULDBLOCK:
20 #endif
21       return ERR_IO_PENDING;
22     case EACCES:
23       return ERR_ACCESS_DENIED;
24     case ENETDOWN:
25       return ERR_INTERNET_DISCONNECTED;
26     case ETIMEDOUT:
27       return ERR_TIMED_OUT;
28     case ECONNRESET:
29     case ENETRESET:  // Related to keep-alive
30     case EPIPE:
31       return ERR_CONNECTION_RESET;
32     case ECONNABORTED:
33       return ERR_CONNECTION_ABORTED;
34     case ECONNREFUSED:
35       return ERR_CONNECTION_REFUSED;
36     case EHOSTUNREACH:
37     case EHOSTDOWN:
38     case ENETUNREACH:
39       return ERR_ADDRESS_UNREACHABLE;
40     case EADDRNOTAVAIL:
41       return ERR_ADDRESS_INVALID;
42     case EMSGSIZE:
43       return ERR_MSG_TOO_BIG;
44     case ENOTCONN:
45       return ERR_SOCKET_NOT_CONNECTED;
46     case 0:
47       return OK;
48     default:
49       LOG(WARNING) << "Unknown error " << os_error
50                    << " mapped to net::ERR_FAILED";
51       return ERR_FAILED;
52   }
53 }
54 
55 }  // namespace net
56