diff options
author | Darren Tucker <dtucker@cvs.openbsd.org> | 2008-02-22 20:44:03 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@cvs.openbsd.org> | 2008-02-22 20:44:03 +0000 |
commit | 5bc7e9270d02622890244ae7a772920086d8e0ec (patch) | |
tree | 618763428237fbb1e6821f0125949d93073d341f | |
parent | bc8565da3c2a85c911eb89da0ed0bb929d3e26a0 (diff) |
Allow all SSH2 packet types, including UNIMPLEMENTED to reset the
keepalive timer (bz #1307). ok markus@
-rw-r--r-- | usr.bin/ssh/clientloop.c | 7 | ||||
-rw-r--r-- | usr.bin/ssh/packet.c | 6 | ||||
-rw-r--r-- | usr.bin/ssh/packet.h | 3 | ||||
-rw-r--r-- | usr.bin/ssh/serverloop.c | 7 |
4 files changed, 13 insertions, 10 deletions
diff --git a/usr.bin/ssh/clientloop.c b/usr.bin/ssh/clientloop.c index ccb828e8b16..c21e59d9937 100644 --- a/usr.bin/ssh/clientloop.c +++ b/usr.bin/ssh/clientloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: clientloop.c,v 1.187 2008/01/23 01:56:54 dtucker Exp $ */ +/* $OpenBSD: clientloop.c,v 1.188 2008/02/22 20:44:02 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -149,7 +149,6 @@ static int connection_in; /* Connection to server (input). */ static int connection_out; /* Connection to server (output). */ static int need_rekeying; /* Set to non-zero if rekeying is requested. */ static int session_closed = 0; /* In SSH2: login session closed. */ -static int server_alive_timeouts = 0; static void client_init_dispatch(void); int session_ident = -1; @@ -459,14 +458,14 @@ client_check_window_change(void) static void client_global_request_reply(int type, u_int32_t seq, void *ctxt) { - server_alive_timeouts = 0; + keep_alive_timeouts = 0; client_global_request_reply_fwd(type, seq, ctxt); } static void server_alive_check(void) { - if (++server_alive_timeouts > options.server_alive_count_max) { + if (++keep_alive_timeouts > options.server_alive_count_max) { logit("Timeout, server not responding."); cleanup_exit(255); } diff --git a/usr.bin/ssh/packet.c b/usr.bin/ssh/packet.c index f0b00fe1b6f..ce04c827089 100644 --- a/usr.bin/ssh/packet.c +++ b/usr.bin/ssh/packet.c @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.c,v 1.150 2008/01/23 01:56:54 dtucker Exp $ */ +/* $OpenBSD: packet.c,v 1.151 2008/02/22 20:44:02 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -132,6 +132,8 @@ static int server_side = 0; /* Set to true if we are authenticated. */ static int after_authentication = 0; +int keep_alive_timeouts = 0; + /* Session key information for Encryption and MAC */ Newkeys *newkeys[MODE_MAX]; static struct packet_state { @@ -1183,10 +1185,12 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p) for (;;) { if (compat20) { type = packet_read_poll2(seqnr_p); + keep_alive_timeouts = 0; if (type) DBG(debug("received packet type %d", type)); switch (type) { case SSH2_MSG_IGNORE: + debug3("Received SSH2_MSG_IGNORE"); break; case SSH2_MSG_DEBUG: packet_get_char(); diff --git a/usr.bin/ssh/packet.h b/usr.bin/ssh/packet.h index 21ff4506739..c1b9b3bd190 100644 --- a/usr.bin/ssh/packet.h +++ b/usr.bin/ssh/packet.h @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.h,v 1.45 2006/03/25 22:22:43 djm Exp $ */ +/* $OpenBSD: packet.h,v 1.46 2008/02/22 20:44:02 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> @@ -86,6 +86,7 @@ void tty_make_modes(int, struct termios *); void tty_parse_modes(int, int *); extern u_int max_packet_size; +extern int keep_alive_timeouts; int packet_set_maxsize(u_int); #define packet_get_maxsize() max_packet_size diff --git a/usr.bin/ssh/serverloop.c b/usr.bin/ssh/serverloop.c index ac81ccbf123..d7d0b14c1e9 100644 --- a/usr.bin/ssh/serverloop.c +++ b/usr.bin/ssh/serverloop.c @@ -1,4 +1,4 @@ -/* $OpenBSD: serverloop.c,v 1.147 2008/01/23 01:56:54 dtucker Exp $ */ +/* $OpenBSD: serverloop.c,v 1.148 2008/02/22 20:44:02 dtucker Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -100,7 +100,6 @@ static int connection_in; /* Connection to client (input). */ static int connection_out; /* Connection to client (output). */ static int connection_closed = 0; /* Connection to client closed. */ static u_int buffer_high; /* "Soft" max buffer size. */ -static int client_alive_timeouts = 0; /* * This SIGCHLD kludge is used to detect when the child exits. The server @@ -242,7 +241,7 @@ client_alive_check(void) int channel_id; /* timeout, check to see how many we have had */ - if (++client_alive_timeouts > options.client_alive_count_max) { + if (++keep_alive_timeouts > options.client_alive_count_max) { logit("Timeout, client not responding."); cleanup_exit(255); } @@ -857,7 +856,7 @@ server_input_keep_alive(int type, u_int32_t seq, void *ctxt) * even if this was generated by something other than * the bogus CHANNEL_REQUEST we send for keepalives. */ - client_alive_timeouts = 0; + keep_alive_timeouts = 0; } static void |