Index: net/udp/udp_socket_libevent.cc |
diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc |
index 7db3f96dd128fb1f6d8c61e951b37455f0349fe4..12dc7275db1f4a4575e1bdd072cd5ae769bd8ed7 100644 |
--- a/net/udp/udp_socket_libevent.cc |
+++ b/net/udp/udp_socket_libevent.cc |
@@ -27,7 +27,6 @@ |
#include "net/socket/socket_descriptor.h" |
#include "net/udp/udp_net_log_parameters.h" |
- |
namespace net { |
namespace { |
@@ -39,7 +38,7 @@ const int kPortEnd = 65535; |
#if defined(OS_MACOSX) |
// Returns IPv4 address in network order. |
-int GetIPv4AddressFromIndex(int socket, uint32 index, uint32* address){ |
+int GetIPv4AddressFromIndex(int socket, uint32 index, uint32* address) { |
if (!index) { |
*address = htonl(INADDR_ANY); |
return OK; |
@@ -59,24 +58,23 @@ int GetIPv4AddressFromIndex(int socket, uint32 index, uint32* address){ |
} // namespace |
-UDPSocketLibevent::UDPSocketLibevent( |
- DatagramSocket::BindType bind_type, |
- const RandIntCallback& rand_int_cb, |
- net::NetLog* net_log, |
- const net::NetLog::Source& source) |
- : socket_(kInvalidSocket), |
- addr_family_(0), |
- socket_options_(SOCKET_OPTION_MULTICAST_LOOP), |
- multicast_interface_(0), |
- multicast_time_to_live_(1), |
- bind_type_(bind_type), |
- rand_int_cb_(rand_int_cb), |
- read_watcher_(this), |
- write_watcher_(this), |
- read_buf_len_(0), |
- recv_from_address_(NULL), |
- write_buf_len_(0), |
- net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_UDP_SOCKET)) { |
+UDPSocketLibevent::UDPSocketLibevent(DatagramSocket::BindType bind_type, |
+ const RandIntCallback& rand_int_cb, |
+ net::NetLog* net_log, |
+ const net::NetLog::Source& source) |
+ : socket_(kInvalidSocket), |
+ addr_family_(0), |
+ socket_options_(SOCKET_OPTION_MULTICAST_LOOP), |
+ multicast_interface_(0), |
+ multicast_time_to_live_(1), |
+ bind_type_(bind_type), |
+ rand_int_cb_(rand_int_cb), |
+ read_watcher_(this), |
+ write_watcher_(this), |
+ read_buf_len_(0), |
+ recv_from_address_(NULL), |
+ write_buf_len_(0), |
+ net_log_(BoundNetLog::Make(net_log, NetLog::SOURCE_UDP_SOCKET)) { |
net_log_.BeginEvent(NetLog::TYPE_SOCKET_ALIVE, |
source.ToEventParametersCallback()); |
if (bind_type == DatagramSocket::RANDOM_BIND) |
@@ -180,8 +178,11 @@ int UDPSocketLibevent::RecvFrom(IOBuffer* buf, |
return nread; |
if (!base::MessageLoopForIO::current()->WatchFileDescriptor( |
- socket_, true, base::MessageLoopForIO::WATCH_READ, |
- &read_socket_watcher_, &read_watcher_)) { |
+ socket_, |
+ true, |
+ base::MessageLoopForIO::WATCH_READ, |
+ &read_socket_watcher_, |
+ &read_watcher_)) { |
PLOG(ERROR) << "WatchFileDescriptor failed on read"; |
int result = MapSystemError(errno); |
LogRead(result, NULL, 0, NULL); |
@@ -223,8 +224,11 @@ int UDPSocketLibevent::SendToOrWrite(IOBuffer* buf, |
return result; |
if (!base::MessageLoopForIO::current()->WatchFileDescriptor( |
- socket_, true, base::MessageLoopForIO::WATCH_WRITE, |
- &write_socket_watcher_, &write_watcher_)) { |
+ socket_, |
+ true, |
+ base::MessageLoopForIO::WATCH_WRITE, |
+ &write_socket_watcher_, |
+ &write_watcher_)) { |
DVLOG(1) << "WatchFileDescriptor failed on write, errno " << errno; |
int result = MapSystemError(errno); |
LogWrite(result, NULL, NULL); |
@@ -317,8 +321,11 @@ int UDPSocketLibevent::Bind(const IPEndPoint& address) { |
int UDPSocketLibevent::SetReceiveBufferSize(int32 size) { |
DCHECK(CalledOnValidThread()); |
- int rv = setsockopt(socket_, SOL_SOCKET, SO_RCVBUF, |
- reinterpret_cast<const char*>(&size), sizeof(size)); |
+ int rv = setsockopt(socket_, |
+ SOL_SOCKET, |
+ SO_RCVBUF, |
+ reinterpret_cast<const char*>(&size), |
+ sizeof(size)); |
int last_error = errno; |
DCHECK(!rv) << "Could not set socket receive buffer size: " << last_error; |
return rv == 0 ? OK : MapSystemError(last_error); |
@@ -326,8 +333,11 @@ int UDPSocketLibevent::SetReceiveBufferSize(int32 size) { |
int UDPSocketLibevent::SetSendBufferSize(int32 size) { |
DCHECK(CalledOnValidThread()); |
- int rv = setsockopt(socket_, SOL_SOCKET, SO_SNDBUF, |
- reinterpret_cast<const char*>(&size), sizeof(size)); |
+ int rv = setsockopt(socket_, |
+ SOL_SOCKET, |
+ SO_SNDBUF, |
+ reinterpret_cast<const char*>(&size), |
+ sizeof(size)); |
int last_error = errno; |
DCHECK(!rv) << "Could not set socket send buffer size: " << last_error; |
return rv == 0 ? OK : MapSystemError(last_error); |
@@ -405,11 +415,9 @@ void UDPSocketLibevent::LogRead(int result, |
IPEndPoint address; |
bool is_address_valid = address.FromSockAddr(addr, addr_len); |
- net_log_.AddEvent( |
- NetLog::TYPE_UDP_BYTES_RECEIVED, |
- CreateNetLogUDPDataTranferCallback( |
- result, bytes, |
- is_address_valid ? &address : NULL)); |
+ net_log_.AddEvent(NetLog::TYPE_UDP_BYTES_RECEIVED, |
+ CreateNetLogUDPDataTranferCallback( |
+ result, bytes, is_address_valid ? &address : NULL)); |
} |
base::StatsCounter read_bytes("udp.read_bytes"); |
@@ -460,20 +468,16 @@ void UDPSocketLibevent::LogWrite(int result, |
write_bytes.Add(result); |
} |
-int UDPSocketLibevent::InternalRecvFrom(IOBuffer* buf, int buf_len, |
+int UDPSocketLibevent::InternalRecvFrom(IOBuffer* buf, |
+ int buf_len, |
IPEndPoint* address) { |
int bytes_transferred; |
int flags = 0; |
SockaddrStorage storage; |
- bytes_transferred = |
- HANDLE_EINTR(recvfrom(socket_, |
- buf->data(), |
- buf_len, |
- flags, |
- storage.addr, |
- &storage.addr_len)); |
+ bytes_transferred = HANDLE_EINTR(recvfrom( |
+ socket_, buf->data(), buf_len, flags, storage.addr, &storage.addr_len)); |
int result; |
if (bytes_transferred >= 0) { |
result = bytes_transferred; |
@@ -487,7 +491,8 @@ int UDPSocketLibevent::InternalRecvFrom(IOBuffer* buf, int buf_len, |
return result; |
} |
-int UDPSocketLibevent::InternalSendTo(IOBuffer* buf, int buf_len, |
+int UDPSocketLibevent::InternalSendTo(IOBuffer* buf, |
+ int buf_len, |
const IPEndPoint* address) { |
SockaddrStorage storage; |
struct sockaddr* addr = storage.addr; |
@@ -502,12 +507,8 @@ int UDPSocketLibevent::InternalSendTo(IOBuffer* buf, int buf_len, |
} |
} |
- int result = HANDLE_EINTR(sendto(socket_, |
- buf->data(), |
- buf_len, |
- 0, |
- addr, |
- storage.addr_len)); |
+ int result = HANDLE_EINTR( |
+ sendto(socket_, buf->data(), buf_len, 0, addr, storage.addr_len)); |
if (result < 0) |
result = MapSystemError(errno); |
if (result != ERR_IO_PENDING) |
@@ -518,8 +519,8 @@ int UDPSocketLibevent::InternalSendTo(IOBuffer* buf, int buf_len, |
int UDPSocketLibevent::SetSocketOptions() { |
int true_value = 1; |
if (socket_options_ & SOCKET_OPTION_REUSE_ADDRESS) { |
- int rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &true_value, |
- sizeof(true_value)); |
+ int rv = setsockopt( |
+ socket_, SOL_SOCKET, SO_REUSEADDR, &true_value, sizeof(true_value)); |
if (rv < 0) |
return MapSystemError(errno); |
} |
@@ -529,11 +530,11 @@ int UDPSocketLibevent::SetSocketOptions() { |
// SO_REUSEPORT on OSX permits multiple processes to each receive |
// UDP multicast or broadcast datagrams destined for the bound |
// port. |
- rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &true_value, |
- sizeof(true_value)); |
+ rv = setsockopt( |
+ socket_, SOL_SOCKET, SO_REUSEPORT, &true_value, sizeof(true_value)); |
#else |
- rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &true_value, |
- sizeof(true_value)); |
+ rv = setsockopt( |
+ socket_, SOL_SOCKET, SO_BROADCAST, &true_value, sizeof(true_value)); |
#endif // defined(OS_MACOSX) |
if (rv < 0) |
return MapSystemError(errno); |
@@ -543,12 +544,12 @@ int UDPSocketLibevent::SetSocketOptions() { |
int rv; |
if (addr_family_ == AF_INET) { |
u_char loop = 0; |
- rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_LOOP, |
- &loop, sizeof(loop)); |
+ rv = setsockopt( |
+ socket_, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop)); |
} else { |
u_int loop = 0; |
- rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, |
- &loop, sizeof(loop)); |
+ rv = setsockopt( |
+ socket_, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &loop, sizeof(loop)); |
} |
if (rv < 0) |
return MapSystemError(errno); |
@@ -557,13 +558,12 @@ int UDPSocketLibevent::SetSocketOptions() { |
int rv; |
if (addr_family_ == AF_INET) { |
u_char ttl = multicast_time_to_live_; |
- rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_TTL, |
- &ttl, sizeof(ttl)); |
+ rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)); |
} else { |
// Signed integer. -1 to use route default. |
int ttl = multicast_time_to_live_; |
- rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, |
- &ttl, sizeof(ttl)); |
+ rv = setsockopt( |
+ socket_, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &ttl, sizeof(ttl)); |
} |
if (rv < 0) |
return MapSystemError(errno); |
@@ -577,20 +577,25 @@ int UDPSocketLibevent::SetSocketOptions() { |
mreq.imr_address.s_addr = htonl(INADDR_ANY); |
#else |
ip_mreq mreq; |
- int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, |
- &mreq.imr_interface.s_addr); |
+ int error = GetIPv4AddressFromIndex( |
+ socket_, multicast_interface_, &mreq.imr_interface.s_addr); |
if (error != OK) |
return error; |
#endif |
- int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF, |
- reinterpret_cast<const char*>(&mreq), sizeof(mreq)); |
+ int rv = setsockopt(socket_, |
+ IPPROTO_IP, |
+ IP_MULTICAST_IF, |
+ reinterpret_cast<const char*>(&mreq), |
+ sizeof(mreq)); |
if (rv) |
return MapSystemError(errno); |
break; |
} |
case AF_INET6: { |
uint32 interface_index = multicast_interface_; |
- int rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_MULTICAST_IF, |
+ int rv = setsockopt(socket_, |
+ IPPROTO_IPV6, |
+ IPV6_MULTICAST_IF, |
reinterpret_cast<const char*>(&interface_index), |
sizeof(interface_index)); |
if (rv) |
@@ -628,8 +633,8 @@ int UDPSocketLibevent::RandomBind(const IPAddressNumber& address) { |
DCHECK(bind_type_ == DatagramSocket::RANDOM_BIND && !rand_int_cb_.is_null()); |
for (int i = 0; i < kBindRetries; ++i) { |
- int rv = DoBind(IPEndPoint(address, |
- rand_int_cb_.Run(kPortStart, kPortEnd))); |
+ int rv = |
+ DoBind(IPEndPoint(address, rand_int_cb_.Run(kPortStart, kPortEnd))); |
if (rv == OK || rv != ERR_ADDRESS_IN_USE) |
return rv; |
} |
@@ -652,14 +657,14 @@ int UDPSocketLibevent::JoinGroup(const IPAddressNumber& group_address) const { |
mreq.imr_address.s_addr = htonl(INADDR_ANY); |
#else |
ip_mreq mreq; |
- int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, |
- &mreq.imr_interface.s_addr); |
+ int error = GetIPv4AddressFromIndex( |
+ socket_, multicast_interface_, &mreq.imr_interface.s_addr); |
if (error != OK) |
return error; |
#endif |
memcpy(&mreq.imr_multiaddr, &group_address[0], kIPv4AddressSize); |
- int rv = setsockopt(socket_, IPPROTO_IP, IP_ADD_MEMBERSHIP, |
- &mreq, sizeof(mreq)); |
+ int rv = setsockopt( |
+ socket_, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); |
if (rv < 0) |
return MapSystemError(errno); |
return OK; |
@@ -670,8 +675,8 @@ int UDPSocketLibevent::JoinGroup(const IPAddressNumber& group_address) const { |
ipv6_mreq mreq; |
mreq.ipv6mr_interface = multicast_interface_; |
memcpy(&mreq.ipv6mr_multiaddr, &group_address[0], kIPv6AddressSize); |
- int rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_JOIN_GROUP, |
- &mreq, sizeof(mreq)); |
+ int rv = setsockopt( |
+ socket_, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)); |
if (rv < 0) |
return MapSystemError(errno); |
return OK; |
@@ -695,8 +700,8 @@ int UDPSocketLibevent::LeaveGroup(const IPAddressNumber& group_address) const { |
ip_mreq mreq; |
mreq.imr_interface.s_addr = INADDR_ANY; |
memcpy(&mreq.imr_multiaddr, &group_address[0], kIPv4AddressSize); |
- int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP, |
- &mreq, sizeof(mreq)); |
+ int rv = setsockopt( |
+ socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq)); |
if (rv < 0) |
return MapSystemError(errno); |
return OK; |
@@ -707,8 +712,8 @@ int UDPSocketLibevent::LeaveGroup(const IPAddressNumber& group_address) const { |
ipv6_mreq mreq; |
mreq.ipv6mr_interface = 0; // 0 indicates default multicast interface. |
memcpy(&mreq.ipv6mr_multiaddr, &group_address[0], kIPv6AddressSize); |
- int rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_LEAVE_GROUP, |
- &mreq, sizeof(mreq)); |
+ int rv = setsockopt( |
+ socket_, IPPROTO_IPV6, IPV6_LEAVE_GROUP, &mreq, sizeof(mreq)); |
if (rv < 0) |
return MapSystemError(errno); |
return OK; |
@@ -757,11 +762,14 @@ int UDPSocketLibevent::SetDiffServCodePoint(DiffServCodePoint dscp) { |
int rv; |
int dscp_and_ecn = dscp << 2; |
if (addr_family_ == AF_INET) { |
- rv = setsockopt(socket_, IPPROTO_IP, IP_TOS, |
- &dscp_and_ecn, sizeof(dscp_and_ecn)); |
+ rv = setsockopt( |
+ socket_, IPPROTO_IP, IP_TOS, &dscp_and_ecn, sizeof(dscp_and_ecn)); |
} else { |
- rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_TCLASS, |
- &dscp_and_ecn, sizeof(dscp_and_ecn)); |
+ rv = setsockopt(socket_, |
+ IPPROTO_IPV6, |
+ IPV6_TCLASS, |
+ &dscp_and_ecn, |
+ sizeof(dscp_and_ecn)); |
} |
if (rv < 0) |
return MapSystemError(errno); |