version 1.142, 2001/09/03 20:58:33 |
version 1.143, 2001/09/20 13:50:40 |
|
|
len, buffer_ptr(&command), id); |
len, buffer_ptr(&command), id); |
} |
} |
|
|
|
/* request pty/x11/agent/tcpfwd/shell for channel */ |
static void |
static void |
ssh_session2_callback(int id, void *arg) |
ssh_session2_setup(int id, void *arg) |
{ |
{ |
int len; |
int len; |
int interactive = 0; |
int interactive = 0; |
struct termios tio; |
struct termios tio; |
|
|
debug("client_init id %d arg %ld", id, (long)arg); |
debug("ssh_session2_setup: id %d", id); |
|
|
if (tty_flag) { |
if (tty_flag) { |
struct winsize ws; |
struct winsize ws; |
|
|
packet_set_interactive(interactive); |
packet_set_interactive(interactive); |
} |
} |
|
|
|
/* open new channel for a session */ |
static int |
static int |
ssh_session2_command(void) |
ssh_session2_open(void) |
{ |
{ |
Channel *c; |
Channel *c; |
int window, packetmax, in, out, err; |
int window, packetmax, in, out, err; |
|
|
window, packetmax, CHAN_EXTENDED_WRITE, |
window, packetmax, CHAN_EXTENDED_WRITE, |
xstrdup("client-session"), /*nonblock*/0); |
xstrdup("client-session"), /*nonblock*/0); |
if (c == NULL) |
if (c == NULL) |
fatal("ssh_session2_command: channel_new failed"); |
fatal("ssh_session2_open: channel_new failed"); |
|
|
debug3("ssh_session2_command: channel_new: %d", c->self); |
debug3("ssh_session2_open: channel_new: %d", c->self); |
|
|
channel_send_open(c->self); |
channel_send_open(c->self); |
channel_register_callback(c->self, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, |
if (!no_shell_flag) |
ssh_session2_callback, (void *)0); |
channel_register_callback(c->self, |
|
SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, |
|
ssh_session2_setup, (void *)0); |
|
|
return c->self; |
return c->self; |
} |
} |
|
|
static int |
static int |
ssh_session2(void) |
ssh_session2(void) |
{ |
{ |
int id; |
int id = -1; |
|
|
/* XXX should be pre-session */ |
/* XXX should be pre-session */ |
ssh_init_forwarding(); |
ssh_init_forwarding(); |
|
|
id = no_shell_flag ? -1 : ssh_session2_command(); |
if (!no_shell_flag || (datafellows & SSH_BUG_DUMMYCHAN)) |
|
id = ssh_session2_open(); |
|
|
/* If requested, let ssh continue in the background. */ |
/* If requested, let ssh continue in the background. */ |
if (fork_after_authentication_flag) |
if (fork_after_authentication_flag) |