- markus@cvs.openbsd.org 2001/10/04 15:12:37
[serverloop.c] client_alive_check cleanup
This commit is contained in:
parent
af5f2e641c
commit
8c3902afde
|
@ -6,6 +6,9 @@
|
||||||
- markus@cvs.openbsd.org 2001/10/04 15:05:40
|
- markus@cvs.openbsd.org 2001/10/04 15:05:40
|
||||||
[channels.c serverloop.c]
|
[channels.c serverloop.c]
|
||||||
comment out bogus conditions for selecting on connection_in
|
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
|
20011007
|
||||||
- (bal) ssh-copy-id corrected permissions for .ssh/ and authorized_keys.
|
- (bal) ssh-copy-id corrected permissions for .ssh/ and authorized_keys.
|
||||||
|
@ -6651,4 +6654,4 @@
|
||||||
- Wrote replacements for strlcpy and mkdtemp
|
- Wrote replacements for strlcpy and mkdtemp
|
||||||
- Released 1.0pre1
|
- 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 $
|
||||||
|
|
51
serverloop.c
51
serverloop.c
|
@ -35,7 +35,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#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 "xmalloc.h"
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
|
@ -80,6 +80,7 @@ static int connection_in; /* Connection to client (input). */
|
||||||
static int connection_out; /* Connection to client (output). */
|
static int connection_out; /* Connection to client (output). */
|
||||||
static int connection_closed = 0; /* Connection to client closed. */
|
static int connection_closed = 0; /* Connection to client closed. */
|
||||||
static u_int buffer_high; /* "Soft" max buffer size. */
|
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
|
* This SIGCHLD kludge is used to detect when the child exits. The server
|
||||||
|
@ -91,8 +92,6 @@ static volatile int child_terminated; /* The child has terminated. */
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static void server_init_dispatch(void);
|
static void server_init_dispatch(void);
|
||||||
|
|
||||||
int client_alive_timeouts = 0;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sigchld_handler(int sig)
|
sigchld_handler(int sig)
|
||||||
{
|
{
|
||||||
|
@ -161,6 +160,26 @@ make_packets_from_stdout_data(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
* Sleep in select() until we can do something. This will initialize the
|
||||||
* select masks. Upon return, the masks will indicate which descriptors
|
* select masks. Upon return, the masks will indicate which descriptors
|
||||||
|
@ -261,30 +280,8 @@ retry_select:
|
||||||
else
|
else
|
||||||
goto retry_select;
|
goto retry_select;
|
||||||
}
|
}
|
||||||
if (ret == 0 && client_alive_scheduled) {
|
if (ret == 0 && client_alive_scheduled)
|
||||||
/* timeout, check to see how many we have had */
|
client_alive_check();
|
||||||
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!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue