| 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);
|
|
|