version 1.59, 2001/04/05 20:01:10 |
version 1.60, 2001/04/05 21:05:23 |
|
|
static int connection_in; /* Connection to server (input). */ |
static int connection_in; /* Connection to server (input). */ |
static int connection_out; /* Connection to server (output). */ |
static int connection_out; /* Connection to server (output). */ |
static int need_rekeying; /* Set to non-zero if rekeying is requested. */ |
static int need_rekeying; /* Set to non-zero if rekeying is requested. */ |
|
static int session_closed = 0; /* In SSH2: login session closed. */ |
|
|
void client_init_dispatch(void); |
void client_init_dispatch(void); |
int session_ident = -1; |
int session_ident = -1; |
|
|
return process_escapes(&c->input, &c->output, &c->extended, buf, len); |
return process_escapes(&c->input, &c->output, &c->extended, buf, len); |
} |
} |
|
|
|
void |
|
client_channel_closed(int id, void *arg) |
|
{ |
|
if (id != session_ident) |
|
error("client_channel_closed: id %d != session_ident %d", |
|
id, session_ident); |
|
session_closed = 1; |
|
} |
|
|
/* |
/* |
* Implements the interactive session with the server. This is called after |
* Implements the interactive session with the server. This is called after |
* the user has been authenticated, and a command has been started on the |
* the user has been authenticated, and a command has been started on the |
|
|
if (escape_char != -1) |
if (escape_char != -1) |
channel_register_filter(session_ident, |
channel_register_filter(session_ident, |
simple_escape_filter); |
simple_escape_filter); |
|
if (session_ident != -1) |
|
channel_register_cleanup(session_ident, |
|
client_channel_closed); |
} else { |
} else { |
/* Check if we should immediately send eof on stdin. */ |
/* Check if we should immediately send eof on stdin. */ |
client_check_initial_eof_on_stdin(); |
client_check_initial_eof_on_stdin(); |
|
|
/* Process buffered packets sent by the server. */ |
/* Process buffered packets sent by the server. */ |
client_process_buffered_input_packets(); |
client_process_buffered_input_packets(); |
|
|
rekeying = (xxx_kex != NULL && !xxx_kex->done); |
if (compat20 && session_closed && !channel_still_open()) |
|
|
if (compat20 && !channel_still_open()) { |
|
debug2("!channel_still_open."); |
|
break; |
break; |
} |
|
|
rekeying = (xxx_kex != NULL && !xxx_kex->done); |
|
|
if (rekeying) { |
if (rekeying) { |
debug("rekeying in progress"); |
debug("rekeying in progress"); |