version 1.556, 2021/05/17 11:43:16 |
version 1.557, 2021/05/19 01:24:05 |
|
|
|
|
if ((in = dup(STDIN_FILENO)) == -1 || |
if ((in = dup(STDIN_FILENO)) == -1 || |
(out = dup(STDOUT_FILENO)) == -1) |
(out = dup(STDOUT_FILENO)) == -1) |
fatal("channel_connect_stdio_fwd: dup() in/out failed"); |
fatal_f("dup() in/out failed"); |
if ((c = channel_connect_stdio_fwd(ssh, options.stdio_forward_host, |
if ((c = channel_connect_stdio_fwd(ssh, options.stdio_forward_host, |
options.stdio_forward_port, in, out)) == NULL) |
options.stdio_forward_port, in, out, |
|
CHANNEL_NONBLOCK_STDIO)) == NULL) |
fatal_f("channel_connect_stdio_fwd failed"); |
fatal_f("channel_connect_stdio_fwd failed"); |
channel_register_cleanup(ssh, c->self, client_cleanup_stdio_fwd, 0); |
channel_register_cleanup(ssh, c->self, client_cleanup_stdio_fwd, 0); |
channel_register_open_confirm(ssh, c->self, ssh_stdio_confirm, NULL); |
channel_register_open_confirm(ssh, c->self, ssh_stdio_confirm, NULL); |
|
|
if (in == -1 || out == -1 || err == -1) |
if (in == -1 || out == -1 || err == -1) |
fatal("dup() in/out/err failed"); |
fatal("dup() in/out/err failed"); |
|
|
/* enable nonblocking unless tty */ |
|
if (!isatty(in)) |
|
set_nonblock(in); |
|
if (!isatty(out)) |
|
set_nonblock(out); |
|
if (!isatty(err)) |
|
set_nonblock(err); |
|
|
|
window = CHAN_SES_WINDOW_DEFAULT; |
window = CHAN_SES_WINDOW_DEFAULT; |
packetmax = CHAN_SES_PACKET_DEFAULT; |
packetmax = CHAN_SES_PACKET_DEFAULT; |
if (tty_flag) { |
if (tty_flag) { |
|
|
c = channel_new(ssh, |
c = channel_new(ssh, |
"session", SSH_CHANNEL_OPENING, in, out, err, |
"session", SSH_CHANNEL_OPENING, in, out, err, |
window, packetmax, CHAN_EXTENDED_WRITE, |
window, packetmax, CHAN_EXTENDED_WRITE, |
"client-session", /*nonblock*/0); |
"client-session", CHANNEL_NONBLOCK_STDIO); |
|
|
debug3_f("channel_new: %d", c->self); |
debug3_f("channel_new: %d", c->self); |
|
|