diff --git a/docs/tcp.html b/docs/tcp.html
index f15196c..a26228d 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!!
+
'tcp-fastopen': value for TCP_FASTOPEN Linux only!!
'tcp-fastopen-connect': value for TCP_FASTOPEN_CONNECT Linux only!!
diff --git a/src/options.c b/src/options.c
index 51ea351..3280c51 100644
--- a/src/options.c
+++ b/src/options.c
@@ -206,6 +206,15 @@ int opt_set_tcp_fastopen_connect(lua_State *L, p_socket ps)
}
#endif
+/*------------------------------------------------------*/
+
+#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 a4d5d75..456eeb5 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 e24cb0c..e84db84 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
#ifdef TCP_FASTOPEN
{"tcp-fastopen", opt_set_tcp_fastopen},
#endif