X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/53d73c8cfdab8f6826c831fe44ac2a800b33f10d..HEAD:/portfwd.c diff --git a/portfwd.c b/portfwd.c index 264198fb..00cff5ee 100644 --- a/portfwd.c +++ b/portfwd.c @@ -87,7 +87,17 @@ static int pfd_closing(Plug plug, const char *error_msg, int error_code, /* * Socket error. Slam the connection instantly shut. */ - sshfwd_unclean_close(pr->c); + if (pr->c) { + sshfwd_unclean_close(pr->c); + } else { + /* + * We might not have an SSH channel, if a socket error + * occurred during SOCKS negotiation. If not, we must + * clean ourself up without sshfwd_unclean_close's call + * back to pfd_close. + */ + pfd_close(pr->s); + } } else { /* * Ordinary EOF received on socket. Send an EOF on the SSH