diff options
Diffstat (limited to 'debian/patches/ssh1-keepalive.patch')
-rw-r--r-- | debian/patches/ssh1-keepalive.patch | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/debian/patches/ssh1-keepalive.patch b/debian/patches/ssh1-keepalive.patch new file mode 100644 index 000000000..60537323a --- /dev/null +++ b/debian/patches/ssh1-keepalive.patch | |||
@@ -0,0 +1,74 @@ | |||
1 | From 789d58ed3df120c7b80d07fb2d259c216194a29c Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:09:51 +0000 | ||
4 | Subject: Partial server keep-alive implementation for SSH1 | ||
5 | |||
6 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1712 | ||
7 | Last-Update: 2013-09-14 | ||
8 | |||
9 | Patch-Name: ssh1-keepalive.patch | ||
10 | --- | ||
11 | clientloop.c | 25 +++++++++++++++---------- | ||
12 | ssh_config.5 | 5 ++++- | ||
13 | 2 files changed, 19 insertions(+), 11 deletions(-) | ||
14 | |||
15 | diff --git a/clientloop.c b/clientloop.c | ||
16 | index 6d8cd7d..73a800c 100644 | ||
17 | --- a/clientloop.c | ||
18 | +++ b/clientloop.c | ||
19 | @@ -563,16 +563,21 @@ client_global_request_reply(int type, u_int32_t seq, void *ctxt) | ||
20 | static void | ||
21 | server_alive_check(void) | ||
22 | { | ||
23 | - if (packet_inc_alive_timeouts() > options.server_alive_count_max) { | ||
24 | - logit("Timeout, server %s not responding.", host); | ||
25 | - cleanup_exit(255); | ||
26 | + if (compat20) { | ||
27 | + if (packet_inc_alive_timeouts() > options.server_alive_count_max) { | ||
28 | + logit("Timeout, server %s not responding.", host); | ||
29 | + cleanup_exit(255); | ||
30 | + } | ||
31 | + packet_start(SSH2_MSG_GLOBAL_REQUEST); | ||
32 | + packet_put_cstring("keepalive@openssh.com"); | ||
33 | + packet_put_char(1); /* boolean: want reply */ | ||
34 | + packet_send(); | ||
35 | + /* Insert an empty placeholder to maintain ordering */ | ||
36 | + client_register_global_confirm(NULL, NULL); | ||
37 | + } else { | ||
38 | + packet_send_ignore(0); | ||
39 | + packet_send(); | ||
40 | } | ||
41 | - packet_start(SSH2_MSG_GLOBAL_REQUEST); | ||
42 | - packet_put_cstring("keepalive@openssh.com"); | ||
43 | - packet_put_char(1); /* boolean: want reply */ | ||
44 | - packet_send(); | ||
45 | - /* Insert an empty placeholder to maintain ordering */ | ||
46 | - client_register_global_confirm(NULL, NULL); | ||
47 | } | ||
48 | |||
49 | /* | ||
50 | @@ -634,7 +639,7 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | ||
51 | */ | ||
52 | |||
53 | timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */ | ||
54 | - if (options.server_alive_interval > 0 && compat20) { | ||
55 | + if (options.server_alive_interval > 0) { | ||
56 | timeout_secs = options.server_alive_interval; | ||
57 | server_alive_time = now + options.server_alive_interval; | ||
58 | } | ||
59 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
60 | index e7accd6..473971e 100644 | ||
61 | --- a/ssh_config.5 | ||
62 | +++ b/ssh_config.5 | ||
63 | @@ -1294,7 +1294,10 @@ If, for example, | ||
64 | .Cm ServerAliveCountMax | ||
65 | is left at the default, if the server becomes unresponsive, | ||
66 | ssh will disconnect after approximately 45 seconds. | ||
67 | -This option applies to protocol version 2 only. | ||
68 | +This option applies to protocol version 2 only; in protocol version | ||
69 | +1 there is no mechanism to request a response from the server to the | ||
70 | +server alive messages, so disconnection is the responsibility of the TCP | ||
71 | +stack. | ||
72 | .It Cm ServerAliveInterval | ||
73 | Sets a timeout interval in seconds after which if no data has been received | ||
74 | from the server, | ||