Pass an error message through to sshfwd_unclean_close.

We have access to one at every call site, so there's really no reason
not to send it through to ssh.c to be logged.

[originally from svn r10038]
This commit is contained in:
Simon Tatham 2013-09-08 07:14:56 +00:00
Родитель 1472aa2a26
Коммит 8e7b0d0e4b
4 изменённых файлов: 7 добавлений и 6 удалений

Просмотреть файл

@ -88,7 +88,7 @@ static int pfd_closing(Plug plug, const char *error_msg, int error_code,
* Socket error. Slam the connection instantly shut. * Socket error. Slam the connection instantly shut.
*/ */
if (pr->c) { if (pr->c) {
sshfwd_unclean_close(pr->c); sshfwd_unclean_close(pr->c, error_msg);
} else { } else {
/* /*
* We might not have an SSH channel, if a socket error * We might not have an SSH channel, if a socket error

7
ssh.c
Просмотреть файл

@ -4302,7 +4302,7 @@ void sshfwd_write_eof(struct ssh_channel *c)
ssh_channel_try_eof(c); ssh_channel_try_eof(c);
} }
void sshfwd_unclean_close(struct ssh_channel *c) void sshfwd_unclean_close(struct ssh_channel *c, const char *err)
{ {
Ssh ssh = c->ssh; Ssh ssh = c->ssh;
@ -4312,12 +4312,13 @@ void sshfwd_unclean_close(struct ssh_channel *c)
switch (c->type) { switch (c->type) {
case CHAN_X11: case CHAN_X11:
x11_close(c->u.x11.s); x11_close(c->u.x11.s);
logevent("Forwarded X11 connection terminated due to local error"); logeventf(ssh, "Forwarded X11 connection terminated due to local "
"error: %s", err);
break; break;
case CHAN_SOCKDATA: case CHAN_SOCKDATA:
case CHAN_SOCKDATA_DORMANT: case CHAN_SOCKDATA_DORMANT:
pfd_close(c->u.pfd.s); pfd_close(c->u.pfd.s);
logevent("Forwarded port closed due to local error"); logeventf(ssh, "Forwarded port closed due to local error: %s", err);
break; break;
} }
c->type = CHAN_ZOMBIE; c->type = CHAN_ZOMBIE;

2
ssh.h
Просмотреть файл

@ -11,7 +11,7 @@ struct ssh_channel;
extern int sshfwd_write(struct ssh_channel *c, char *, int); extern int sshfwd_write(struct ssh_channel *c, char *, int);
extern void sshfwd_write_eof(struct ssh_channel *c); extern void sshfwd_write_eof(struct ssh_channel *c);
extern void sshfwd_unclean_close(struct ssh_channel *c); extern void sshfwd_unclean_close(struct ssh_channel *c, const char *err);
extern void sshfwd_unthrottle(struct ssh_channel *c, int bufsize); extern void sshfwd_unthrottle(struct ssh_channel *c, int bufsize);
/* /*

Просмотреть файл

@ -510,7 +510,7 @@ static int x11_closing(Plug plug, const char *error_msg, int error_code,
/* /*
* Socket error. Slam the connection instantly shut. * Socket error. Slam the connection instantly shut.
*/ */
sshfwd_unclean_close(pr->c); sshfwd_unclean_close(pr->c, error_msg);
} else { } else {
/* /*
* Ordinary EOF received on socket. Send an EOF on the SSH * Ordinary EOF received on socket. Send an EOF on the SSH