summaryrefslogtreecommitdiff
path: root/evutil.c
diff options
context:
space:
mode:
authorMaciej Soltysiak <maciej@soltysiak.com>2014-10-13 17:28:14 +0200
committerMaciej Soltysiak <maciej@soltysiak.com>2014-10-13 17:28:14 +0200
commitb625361a6a2b2bc4ba1c71a1d6dc89f5e2b4d9e0 (patch)
tree0e1cc42110ac29b3169ef9bd19bf6188239aa27c /evutil.c
parentc750c704c10c9e412fa5501fce051fa45d46ec84 (diff)
downloadlibevent-b625361a6a2b2bc4ba1c71a1d6dc89f5e2b4d9e0.tar.gz
Provide support for SO_REUSEPORT through LEV_OPT_REUSABLE_PORT
Diffstat (limited to 'evutil.c')
-rw-r--r--evutil.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/evutil.c b/evutil.c
index df93e67f..3d72e403 100644
--- a/evutil.c
+++ b/evutil.c
@@ -368,6 +368,20 @@ evutil_make_listen_socket_reuseable(evutil_socket_t sock)
}
int
+evutil_make_listen_socket_reuseable_port(evutil_socket_t sock)
+{
+#if defined __linux__ && defined(SO_REUSEPORT)
+ int one = 1;
+ /* REUSEPORT on Linux 3.9+ means, "Multiple servers (processes or
+ * threads) can bind to the same port if they each set the option. */
+ return setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (void*) &one,
+ (ev_socklen_t)sizeof(one));
+#else
+ return 0;
+#endif
+}
+
+int
evutil_make_tcp_listen_socket_deferred(evutil_socket_t sock)
{
#if defined(EVENT__HAVE_NETINET_TCP_H) && defined(TCP_DEFER_ACCEPT)