diff --git a/src/net/socket/tcp_socket_posix.cc b/src/net/socket/tcp_socket_posix.cc index 5942686fda..cb12a1569f 100644 --- a/src/net/socket/tcp_socket_posix.cc +++ b/src/net/socket/tcp_socket_posix.cc @@ -386,6 +386,17 @@ int TCPSocketPosix::GetPeerAddress(IPEndPoint* address) const { int TCPSocketPosix::SetDefaultOptionsForServer() { DCHECK(socket_); + +#ifdef SO_REUSEPORT + int reuseport = 1; + int rv = + setsockopt(socket_->socket_fd(), SOL_SOCKET, SO_REUSEPORT, + reinterpret_cast(&reuseport), sizeof(reuseport)); + // Ignore errors that the option does not exist. + if (rv != 0 && errno != ENOPROTOOPT) + return MapSystemError(errno); +#endif // SO_REUSEPORT + return AllowAddressReuse(); }