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