diff --git a/docs/tcp.html b/docs/tcp.html index 9cc173e..714a327 100644 --- a/docs/tcp.html +++ b/docs/tcp.html @@ -485,6 +485,8 @@ disables the Nagle's algorithm for the connection;
  • 'tcp-keepintvl': value for TCP_KEEPINTVL Linux only!!
  • +
  • 'tcp-defer-accept': value for TCP_DEFER_ACCEPT Linux only!!
  • +
  • 'ipv6-v6only': Setting this option to true restricts an inet6 socket to sending and receiving only IPv6 packets.
  • diff --git a/src/options.c b/src/options.c index 2b53c67..6f3aa4a 100644 --- a/src/options.c +++ b/src/options.c @@ -190,6 +190,15 @@ int opt_set_send_buf_size(lua_State *L, p_socket ps) return opt_setint(L, ps, SOL_SOCKET, SO_SNDBUF); } +/*------------------------------------------------------*/ + +#ifdef TCP_DEFER_ACCEPT +int opt_set_tcp_defer_accept(lua_State *L, p_socket ps) +{ + return opt_setint(L, ps, IPPROTO_TCP, TCP_DEFER_ACCEPT); +} +#endif + /*------------------------------------------------------*/ int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps) { diff --git a/src/options.h b/src/options.h index 41f7337..00d36bc 100644 --- a/src/options.h +++ b/src/options.h @@ -49,6 +49,10 @@ int opt_set_tcp_keepintvl(lua_State *L, p_socket ps); int opt_get_tcp_keepintvl(lua_State *L, p_socket ps); #endif +#ifdef TCP_DEFER_ACCEPT +int opt_set_tcp_defer_accept(lua_State *L, p_socket ps); +#endif + int opt_set_keepalive(lua_State *L, p_socket ps); int opt_get_keepalive(lua_State *L, p_socket ps); diff --git a/src/tcp.c b/src/tcp.c index 5876bfb..7906d47 100644 --- a/src/tcp.c +++ b/src/tcp.c @@ -109,6 +109,9 @@ static t_opt optset[] = { {"linger", opt_set_linger}, {"recv-buffer-size", opt_set_recv_buf_size}, {"send-buffer-size", opt_set_send_buf_size}, +#ifdef TCP_DEFER_ACCEPT + {"tcp-defer-accept", opt_set_tcp_defer_accept}, +#endif {NULL, NULL} };