@@ -53,6 +53,8 @@ type socket_int_option =
53
53
| EIO_TCP_KEEPCNT
54
54
| EIO_TCP_KEEPIDLE
55
55
| EIO_TCP_KEEPINTVL
56
+ | EIO_TCP_DEFER_ACCEPT
57
+ | EIO_TCP_NODELAY
56
58
57
59
external setsockopt_int : Unix .file_descr -> socket_int_option -> int -> unit =
58
60
" eio_unix_setsockopt_int"
@@ -64,10 +66,12 @@ module Sockopt = struct
64
66
| SO_KEEPALIVE : bool Eio.Net.Sockopt .t
65
67
| SO_REUSEADDR : bool Eio.Net.Sockopt .t
66
68
| SO_REUSEPORT : bool Eio.Net.Sockopt .t
69
+ | TCP_NODELAY : bool Eio.Net.Sockopt .t
67
70
| TCP_CORK : int Eio.Net.Sockopt .t
68
71
| TCP_KEEPCNT : int Eio.Net.Sockopt .t
69
72
| TCP_KEEPIDLE : int Eio.Net.Sockopt .t
70
73
| TCP_KEEPINTVL : int Eio.Net.Sockopt .t
74
+ | TCP_DEFER_ACCEPT : int Eio.Net.Sockopt .t
71
75
72
76
let set : type a . Fd.t -> a Eio.Net.Sockopt.t -> a -> unit = fun sock k v ->
73
77
Fd. use_exn " Sockopt.set" sock @@ fun fd ->
@@ -76,6 +80,8 @@ module Sockopt = struct
76
80
| TCP_KEEPCNT -> setsockopt_int fd EIO_TCP_KEEPCNT v
77
81
| TCP_KEEPIDLE -> setsockopt_int fd EIO_TCP_KEEPIDLE v
78
82
| TCP_KEEPINTVL -> setsockopt_int fd EIO_TCP_KEEPINTVL v
83
+ | TCP_DEFER_ACCEPT -> setsockopt_int fd EIO_TCP_DEFER_ACCEPT v
84
+ | TCP_NODELAY -> setsockopt_int fd EIO_TCP_DEFER_ACCEPT (if v then 1 else 0 )
79
85
| SO_KEEPALIVE -> Unix. (setsockopt fd SO_KEEPALIVE v)
80
86
| SO_REUSEADDR -> Unix. (setsockopt fd SO_REUSEADDR v)
81
87
| SO_REUSEPORT -> Unix. (setsockopt fd SO_REUSEPORT v)
@@ -87,6 +93,8 @@ module Sockopt = struct
87
93
| TCP_KEEPCNT -> getsockopt_int fd EIO_TCP_KEEPCNT
88
94
| TCP_KEEPIDLE -> getsockopt_int fd EIO_TCP_KEEPIDLE
89
95
| TCP_KEEPINTVL -> getsockopt_int fd EIO_TCP_KEEPINTVL
96
+ | TCP_DEFER_ACCEPT -> getsockopt_int fd EIO_TCP_DEFER_ACCEPT
97
+ | TCP_NODELAY -> getsockopt_int fd EIO_TCP_NODELAY = 1
90
98
| SO_KEEPALIVE -> Unix. (getsockopt fd SO_KEEPALIVE )
91
99
| SO_REUSEADDR -> Unix. (getsockopt fd SO_REUSEADDR )
92
100
| SO_REUSEPORT -> Unix. (getsockopt fd SO_REUSEPORT )
0 commit comments