diff options
-rw-r--r-- | net/base/net_error_list.h | 3 | ||||
-rw-r--r-- | net/base/net_errors_posix.cc | 2 | ||||
-rw-r--r-- | net/base/net_errors_win.cc | 2 | ||||
-rw-r--r-- | net/udp/udp_socket_libevent.cc | 6 | ||||
-rw-r--r-- | net/udp/udp_socket_win.cc | 6 |
5 files changed, 13 insertions, 6 deletions
diff --git a/net/base/net_error_list.h b/net/base/net_error_list.h index ff6e347..5afb522 100644 --- a/net/base/net_error_list.h +++ b/net/base/net_error_list.h @@ -91,6 +91,9 @@ NET_ERROR(NETWORK_CHANGED, -21) // administrator. NET_ERROR(BLOCKED_BY_ADMINISTRATOR, -22) +// The socket is already connected. +NET_ERROR(SOCKET_IS_CONNECTED, -23) + // A connection was closed (corresponding to a TCP FIN). NET_ERROR(CONNECTION_CLOSED, -100) diff --git a/net/base/net_errors_posix.cc b/net/base/net_errors_posix.cc index 8e9c7d5..3491b11 100644 --- a/net/base/net_errors_posix.cc +++ b/net/base/net_errors_posix.cc @@ -51,6 +51,8 @@ Error MapSystemError(int os_error) { return ERR_MSG_TOO_BIG; case ENOTCONN: return ERR_SOCKET_NOT_CONNECTED; + case EISCONN: + return ERR_SOCKET_IS_CONNECTED; case EINVAL: return ERR_INVALID_ARGUMENT; case EADDRINUSE: diff --git a/net/base/net_errors_win.cc b/net/base/net_errors_win.cc index c56225f..2cde82f4d 100644 --- a/net/base/net_errors_win.cc +++ b/net/base/net_errors_win.cc @@ -37,6 +37,8 @@ Error MapSystemError(int os_error) { case WSA_IO_INCOMPLETE: case WSAEDISCON: return ERR_CONNECTION_CLOSED; + case WSAEISCONN: + return ERR_SOCKET_IS_CONNECTED; case WSAEHOSTUNREACH: case WSAENETUNREACH: return ERR_ADDRESS_UNREACHABLE; diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc index f713786..4520c47 100644 --- a/net/udp/udp_socket_libevent.cc +++ b/net/udp/udp_socket_libevent.cc @@ -522,7 +522,7 @@ int UDPSocketLibevent::SetSocketOptions() { int UDPSocketLibevent::DoBind(const IPEndPoint& address) { SockaddrStorage storage; if (!address.ToSockAddr(storage.addr, &storage.addr_len)) - return ERR_UNEXPECTED; + return ERR_ADDRESS_INVALID; int rv = bind(socket_, storage.addr, storage.addr_len); return rv < 0 ? MapSystemError(errno) : rv; } @@ -617,7 +617,7 @@ int UDPSocketLibevent::LeaveGroup(const IPAddressNumber& group_address) const { int UDPSocketLibevent::SetMulticastTimeToLive(int time_to_live) { DCHECK(CalledOnValidThread()); if (is_connected()) - return ERR_UNEXPECTED; + return ERR_SOCKET_IS_CONNECTED; if (time_to_live < 0 || time_to_live > 255) return ERR_INVALID_ARGUMENT; @@ -628,7 +628,7 @@ int UDPSocketLibevent::SetMulticastTimeToLive(int time_to_live) { int UDPSocketLibevent::SetMulticastLoopbackMode(bool loopback) { DCHECK(CalledOnValidThread()); if (is_connected()) - return ERR_UNEXPECTED; + return ERR_SOCKET_IS_CONNECTED; if (loopback) socket_options_ |= SOCKET_OPTION_MULTICAST_LOOP; diff --git a/net/udp/udp_socket_win.cc b/net/udp/udp_socket_win.cc index b1c5846..c3fd561 100644 --- a/net/udp/udp_socket_win.cc +++ b/net/udp/udp_socket_win.cc @@ -615,7 +615,7 @@ int UDPSocketWin::SetSocketOptions() { int UDPSocketWin::DoBind(const IPEndPoint& address) { SockaddrStorage storage; if (!address.ToSockAddr(storage.addr, &storage.addr_len)) - return ERR_UNEXPECTED; + return ERR_ADDRESS_INVALID; int rv = bind(socket_, storage.addr, storage.addr_len); return rv < 0 ? MapSystemError(WSAGetLastError()) : rv; } @@ -720,7 +720,7 @@ int UDPSocketWin::LeaveGroup( int UDPSocketWin::SetMulticastTimeToLive(int time_to_live) { DCHECK(CalledOnValidThread()); if (is_connected()) - return ERR_UNEXPECTED; + return ERR_SOCKET_IS_CONNECTED; if (time_to_live < 0 || time_to_live > 255) return ERR_INVALID_ARGUMENT; @@ -731,7 +731,7 @@ int UDPSocketWin::SetMulticastTimeToLive(int time_to_live) { int UDPSocketWin::SetMulticastLoopbackMode(bool loopback) { DCHECK(CalledOnValidThread()); if (is_connected()) - return ERR_UNEXPECTED; + return ERR_SOCKET_IS_CONNECTED; if (loopback) socket_options_ |= SOCKET_OPTION_MULTICAST_LOOP; |