Index: net/udp/udp_socket_libevent.cc |
diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc |
index a36c59b4d64c37a459857c55be34803f04ecbcb0..7951155c0e6799697991590e15fc9436d286ba4c 100644 |
--- a/net/udp/udp_socket_libevent.cc |
+++ b/net/udp/udp_socket_libevent.cc |
@@ -105,11 +105,11 @@ int UDPSocketLibevent::Open(AddressFamily address_family) { |
return OK; |
} |
-void UDPSocketLibevent::Close() { |
+int UDPSocketLibevent::Close() { |
DCHECK(CalledOnValidThread()); |
if (socket_ == kInvalidSocket) |
- return; |
+ return OK; |
// Zero out any pending read/write callback state. |
read_buf_ = NULL; |
@@ -126,12 +126,17 @@ void UDPSocketLibevent::Close() { |
ok = write_socket_watcher_.StopWatchingFileDescriptor(); |
DCHECK(ok); |
- if (IGNORE_EINTR(close(socket_)) < 0) |
+ int result = OK; |
+ if (IGNORE_EINTR(close(socket_)) < 0) { |
PLOG(ERROR) << "close"; |
+ result = MapSystemError(errno); |
+ } |
socket_ = kInvalidSocket; |
addr_family_ = 0; |
is_connected_ = false; |
+ |
+ return result; |
} |
int UDPSocketLibevent::GetPeerAddress(IPEndPoint* address) const { |