Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off.
[u/mdw/putty] / winnet.c
index 21a2f29..bcb22bf 100644 (file)
--- a/winnet.c
+++ b/winnet.c
@@ -658,7 +658,7 @@ Socket sk_register(void *sock, Plug plug)
 }
 
 Socket sk_new(SockAddr addr, int port, int privport, int oobinline,
-             int nodelay, Plug plug)
+             int nodelay, int keepalive, Plug plug)
 {
     static const struct socket_function_table fn_table = {
        sk_tcp_plug,
@@ -722,6 +722,11 @@ Socket sk_new(SockAddr addr, int port, int privport, int oobinline,
        p_setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *) &b, sizeof(b));
     }
 
+    if (keepalive) {
+       BOOL b = TRUE;
+       p_setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void *) &b, sizeof(b));
+    }
+
     /*
      * Bind to local address.
      */