- markus@cvs.openbsd.org 2001/10/04 15:12:37
[serverloop.c]
client_alive_check cleanup
diff --git a/ChangeLog b/ChangeLog
index 8970ba1e..afb752b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@
- markus@cvs.openbsd.org 2001/10/04 15:05:40
[channels.c serverloop.c]
comment out bogus conditions for selecting on connection_in
+ - markus@cvs.openbsd.org 2001/10/04 15:12:37
+ [serverloop.c]
+ client_alive_check cleanup
20011007
- (bal) ssh-copy-id corrected permissions for .ssh/ and authorized_keys.
@@ -6651,4 +6654,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1586 2001/10/10 05:01:16 djm Exp $
+$Id: ChangeLog,v 1.1587 2001/10/10 05:01:40 djm Exp $
diff --git a/serverloop.c b/serverloop.c
index 049ea4e..4577cc8 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -35,7 +35,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: serverloop.c,v 1.78 2001/10/04 15:05:40 markus Exp $");
+RCSID("$OpenBSD: serverloop.c,v 1.79 2001/10/04 15:12:37 markus Exp $");
#include "xmalloc.h"
#include "packet.h"
@@ -80,6 +80,7 @@
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
@@ -91,8 +92,6 @@
/* prototypes */
static void server_init_dispatch(void);
-int client_alive_timeouts = 0;
-
static void
sigchld_handler(int sig)
{
@@ -161,6 +160,26 @@
}
}
+static void
+client_alive_check(void)
+{
+ int id;
+
+ /* timeout, check to see how many we have had */
+ if (++client_alive_timeouts > options.client_alive_count_max)
+ packet_disconnect("Timeout, your session not responding.");
+
+ id = channel_find_open();
+ if (id == -1)
+ packet_disconnect("No open channels after timeout!");
+ /*
+ * send a bogus channel request with "wantreply",
+ * we should get back a failure
+ */
+ channel_request_start(id, "keepalive@openssh.com", 1);
+ packet_send();
+}
+
/*
* Sleep in select() until we can do something. This will initialize the
* select masks. Upon return, the masks will indicate which descriptors
@@ -261,30 +280,8 @@
else
goto retry_select;
}
- if (ret == 0 && client_alive_scheduled) {
- /* timeout, check to see how many we have had */
- client_alive_timeouts++;
-
- if (client_alive_timeouts > options.client_alive_count_max ) {
- packet_disconnect(
- "Timeout, your session not responding.");
- } else {
- /*
- * send a bogus channel request with "wantreply"
- * we should get back a failure
- */
- int id;
-
- id = channel_find_open();
- if (id != -1) {
- channel_request_start(id,
- "keepalive@openssh.com", 1);
- packet_send();
- } else
- packet_disconnect(
- "No open channels after timeout!");
- }
- }
+ if (ret == 0 && client_alive_scheduled)
+ client_alive_check();
}
/*