// Set nonblock
net_nonblock(newSocket);
+ {
+ // enable keepalive
+ int opt = 1;
+ setsockopt(newSocket, SOL_SOCKET, SO_KEEPALIVE, (void*)&opt, sizeof(opt));
+#ifdef TCP_KEEPIDLE
+ opt = 30;
+ setsockopt(newSocket, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&opt, sizeof(opt));
+#endif
+#ifdef TCP_KEEPINTVL
+ opt = 1;
+ setsockopt(newSocket, IPPROTO_TCP, TCP_KEEPINTVL, (void*)&opt, sizeof(opt));
+#endif
+#ifdef TCP_KEEPCNT
+ opt = 10;
+ setsockopt(newSocket, IPPROTO_TCP, TCP_KEEPCNT, (void*)&opt, sizeof(opt));
+#endif
+ }
+
int is_onion = 0;
int is_webirc = 0;
{