mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-02 03:52:49 -05:00
Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off.
No very good reason, but I've occasionally wanted to frob it to see if it makes any difference to problems I'm having, and it was easy. Tested that it does actually cause keepalives on Windows (with tcpdump); should also work on Unix. Not implemented on Mac (does nothing), but then neither is TCP_NODELAY. Quite a big checkin, much of which is adding `keepalive' alongside `nodelay' in network function calls. [originally from svn r4309]
This commit is contained in:
11
proxy.c
11
proxy.c
@ -356,8 +356,8 @@ SockAddr name_lookup(char *host, int port, char **canonicalname,
|
||||
|
||||
Socket new_connection(SockAddr addr, char *hostname,
|
||||
int port, int privport,
|
||||
int oobinline, int nodelay, Plug plug,
|
||||
const Config *cfg)
|
||||
int oobinline, int nodelay, int keepalive,
|
||||
Plug plug, const Config *cfg)
|
||||
{
|
||||
static const struct socket_function_table socket_fn_table = {
|
||||
sk_proxy_plug,
|
||||
@ -388,7 +388,8 @@ Socket new_connection(SockAddr addr, char *hostname,
|
||||
Socket sret;
|
||||
|
||||
if ((sret = platform_new_connection(addr, hostname, port, privport,
|
||||
oobinline, nodelay, plug, cfg)) !=
|
||||
oobinline, nodelay, keepalive,
|
||||
plug, cfg)) !=
|
||||
NULL)
|
||||
return sret;
|
||||
|
||||
@ -444,7 +445,7 @@ Socket new_connection(SockAddr addr, char *hostname,
|
||||
*/
|
||||
ret->sub_socket = sk_new(proxy_addr, cfg->proxy_port,
|
||||
privport, oobinline,
|
||||
nodelay, (Plug) pplug);
|
||||
nodelay, keepalive, (Plug) pplug);
|
||||
if (sk_socket_error(ret->sub_socket) != NULL)
|
||||
return (Socket) ret;
|
||||
|
||||
@ -456,7 +457,7 @@ Socket new_connection(SockAddr addr, char *hostname,
|
||||
}
|
||||
|
||||
/* no proxy, so just return the direct socket */
|
||||
return sk_new(addr, port, privport, oobinline, nodelay, plug);
|
||||
return sk_new(addr, port, privport, oobinline, nodelay, keepalive, plug);
|
||||
}
|
||||
|
||||
Socket new_listener(char *srcaddr, int port, Plug plug, int local_host_only,
|
||||
|
Reference in New Issue
Block a user