diff --git a/ssh.c b/ssh.c index 0e01b690..48af9e78 100644 --- a/ssh.c +++ b/ssh.c @@ -69,7 +69,7 @@ struct ssh_tag { int term_width, term_height; bufchain in_raw, out_raw, user_input; - int send_outgoing_eof; + int pending_close; IdempotentCallback ic_out_raw; PacketLogSettings pls; @@ -313,8 +313,10 @@ static void ssh_bpp_output_raw_data_callback(void *vctx) } } - if (ssh->send_outgoing_eof) - sk_write_eof(ssh->s); + if (ssh->pending_close) { + sk_close(ssh->s); + ssh->s = NULL; + } } static void ssh_shutdown_internal(Ssh ssh) @@ -368,9 +370,9 @@ static void ssh_initiate_connection_close(Ssh ssh) ssh_shutdown_internal(ssh); /* Force any remaining queued SSH packets through the BPP, and - * schedule sending of EOF on the network socket after them. */ + * schedule closing the network socket after they go out. */ ssh_bpp_handle_output(ssh->bpp); - ssh->send_outgoing_eof = TRUE; + ssh->pending_close = TRUE; /* Now we expect the other end to close the connection too in * response, so arrange that we'll receive notification of that