mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-12 18:13:50 -05:00
Attempt to ensure that everything passed to connection_fatal() is
also logged to the Event Log, so that it's easy to cut-and-paste the error message afterwards. [originally from svn r1599]
This commit is contained in:
parent
eabd704d1e
commit
36d125e1d7
3
raw.c
3
raw.c
@ -33,7 +33,8 @@ static int raw_closing(Plug plug, char *error_msg, int error_code,
|
||||
}
|
||||
if (error_msg) {
|
||||
/* A socket error has occurred. */
|
||||
connection_fatal(error_msg);
|
||||
logevent(error_msg);
|
||||
connection_fatal("%s", error_msg);
|
||||
} /* Otherwise, the remote side closed the connection normally. */
|
||||
return 0;
|
||||
}
|
||||
|
3
rlogin.c
3
rlogin.c
@ -34,7 +34,8 @@ static int rlogin_closing(Plug plug, char *error_msg, int error_code,
|
||||
}
|
||||
if (error_msg) {
|
||||
/* A socket error has occurred. */
|
||||
connection_fatal(error_msg);
|
||||
logevent(error_msg);
|
||||
connection_fatal("%s", error_msg);
|
||||
} /* Otherwise, the remote side closed the connection normally. */
|
||||
return 0;
|
||||
}
|
||||
|
21
ssh.c
21
ssh.c
@ -19,9 +19,21 @@
|
||||
if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) \
|
||||
{ fprintf(stderr, "%s\n", s); fflush(stderr); } }
|
||||
|
||||
/* logevent, only printf-formatted. */
|
||||
void logeventf(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char stuff[200];
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsprintf(stuff, fmt, ap);
|
||||
va_end(ap);
|
||||
logevent(stuff);
|
||||
}
|
||||
|
||||
#define bombout(msg) ( ssh_state = SSH_STATE_CLOSED, \
|
||||
(s ? sk_close(s), s = NULL : 0), \
|
||||
connection_fatal msg )
|
||||
logeventf msg, connection_fatal msg )
|
||||
|
||||
#define SSH1_MSG_DISCONNECT 1 /* 0x1 */
|
||||
#define SSH1_SMSG_PUBLIC_KEY 2 /* 0x2 */
|
||||
@ -817,7 +829,7 @@ static int ssh1_rdpkt(unsigned char **data, int *datalen)
|
||||
msglen = sizeof(buf) - nowlen - 1;
|
||||
memcpy(buf + nowlen, pktin.body + 4, msglen);
|
||||
buf[nowlen + msglen] = '\0';
|
||||
logevent(buf);
|
||||
/* logevent(buf); (this is now done within the bombout macro) */
|
||||
bombout(("Server sent disconnect message:\n\"%s\"", buf+nowlen));
|
||||
crReturn(0);
|
||||
}
|
||||
@ -1779,6 +1791,7 @@ static int ssh_closing(Plug plug, char *error_msg, int error_code,
|
||||
}
|
||||
if (error_msg) {
|
||||
/* A socket error has occurred. */
|
||||
logevent(error_msg);
|
||||
connection_fatal(error_msg);
|
||||
} else {
|
||||
/* Otherwise, the remote side closed the connection normally. */
|
||||
@ -2443,6 +2456,7 @@ static int do_ssh1_login(unsigned char *in, int inlen, int ispkt)
|
||||
send_packet(SSH1_MSG_DISCONNECT,
|
||||
PKT_STR, "No more passwords available to try",
|
||||
PKT_END);
|
||||
logevent("Unable to authenticate");
|
||||
connection_fatal("Unable to authenticate");
|
||||
ssh_state = SSH_STATE_CLOSED;
|
||||
crReturn(1);
|
||||
@ -4420,6 +4434,7 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt)
|
||||
("No more passwords available to try");
|
||||
ssh2_pkt_addstring("en"); /* language tag */
|
||||
ssh2_pkt_send();
|
||||
logevent("Unable to authenticate");
|
||||
connection_fatal("Unable to authenticate");
|
||||
ssh_state = SSH_STATE_CLOSED;
|
||||
crReturnV;
|
||||
@ -5200,7 +5215,7 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt)
|
||||
ssh2_pkt_addstring(buf);
|
||||
ssh2_pkt_addstring("en"); /* language tag */
|
||||
ssh2_pkt_send();
|
||||
connection_fatal(buf);
|
||||
connection_fatal("%s", buf);
|
||||
ssh_state = SSH_STATE_CLOSED;
|
||||
crReturnV;
|
||||
}
|
||||
|
3
telnet.c
3
telnet.c
@ -575,7 +575,8 @@ static int telnet_closing(Plug plug, char *error_msg, int error_code,
|
||||
}
|
||||
if (error_msg) {
|
||||
/* A socket error has occurred. */
|
||||
connection_fatal(error_msg);
|
||||
logevent(error_msg);
|
||||
connection_fatal("%s", error_msg);
|
||||
} /* Otherwise, the remote side closed the connection normally. */
|
||||
return 0;
|
||||
}
|
||||
|
9
winnet.c
9
winnet.c
@ -813,7 +813,8 @@ void try_send(Actual_Socket s)
|
||||
s->pending_error = err;
|
||||
return;
|
||||
} else {
|
||||
fatalbox(winsock_error_string(err));
|
||||
logevent(winsock_error_string(err));
|
||||
fatalbox("%s", winsock_error_string(err));
|
||||
}
|
||||
} else {
|
||||
if (s->sending_oob) {
|
||||
@ -949,8 +950,10 @@ int select_result(WPARAM wParam, LPARAM lParam)
|
||||
ret = recv(s->s, buf, sizeof(buf), MSG_OOB);
|
||||
noise_ultralight(ret);
|
||||
if (ret <= 0) {
|
||||
fatalbox(ret == 0 ? "Internal networking trouble" :
|
||||
winsock_error_string(WSAGetLastError()));
|
||||
char *str = (ret == 0 ? "Internal networking trouble" :
|
||||
winsock_error_string(WSAGetLastError()));
|
||||
logevent(str);
|
||||
fatalbox("%s", str);
|
||||
} else {
|
||||
return plug_receive(s->plug, 2, buf, ret);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user