@@ -71,6 +71,10 @@ let addr_of_host host =
71
71
else
72
72
Eio_unix.Net.Ipaddr. of_unix addr.Unix. h_addr_list.(0 )
73
73
74
+ let try_set_nodelay socket =
75
+ try Unix. setsockopt socket Unix. TCP_NODELAY true
76
+ with Unix. Unix_error (EOPNOTSUPP, _ , _ ) -> () (* Probably a Unix-domain socket *)
77
+
74
78
let connect net ~sw ~secret_key (addr , auth ) =
75
79
let eio_addr =
76
80
match addr with
@@ -89,6 +93,7 @@ let connect net ~sw ~secret_key (addr, auth) =
89
93
let socket = Eio_unix.Resource. fd_opt socket |> Option. get in
90
94
Eio_unix.Fd. use_exn " keep-alive" socket @@ fun socket ->
91
95
Unix. setsockopt socket Unix. SO_KEEPALIVE true ;
96
+ try_set_nodelay socket;
92
97
Keepalive. try_set_idle socket 60
93
98
end;
94
99
Tls_wrapper. connect_as_client socket secret_key auth
@@ -97,6 +102,8 @@ let connect net ~sw ~secret_key (addr, auth) =
97
102
error " @[<v2>Network connection for %a failed:@,%a@]" Location. pp addr Fmt. exn ex
98
103
99
104
let accept_connection ~secret_key flow =
105
+ Eio_unix.Resource. fd_opt flow
106
+ |> Option. iter (fun fd -> Eio_unix.Fd. use_exn " TCP_NODELAY" fd try_set_nodelay);
100
107
Tls_wrapper. connect_as_server flow secret_key
101
108
102
109
let v t = (t :> [`Generic] Eio.Net.ty r )
0 commit comments