]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Attempt to ensure that everything passed to connection_fatal() is
authorSimon Tatham <anakin@pobox.com>
Sat, 23 Mar 2002 18:04:27 +0000 (18:04 +0000)
committerSimon Tatham <anakin@pobox.com>
Sat, 23 Mar 2002 18:04:27 +0000 (18:04 +0000)
also logged to the Event Log, so that it's easy to cut-and-paste the
error message afterwards.

[originally from svn r1599]

raw.c
rlogin.c
ssh.c
telnet.c
winnet.c

diff --git a/raw.c b/raw.c
index 58b060c55209e5fb841be7d17978dff43f4e1d0e..20732dd2f73476335e9eb12506b239d7f8719260 100644 (file)
--- a/raw.c
+++ b/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;
 }
index 4038a2ff2b9b6945b829059692733fdfd7642d32..2ef2d7177b77fc9464c0ce572718eaff1b1b7e15 100644 (file)
--- a/rlogin.c
+++ b/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;
 }
diff --git a/ssh.c b/ssh.c
index 6cc79bff2374a37ccb9be6043b80333beff2abff..51bbf44e958f8a9622eefc47b70fd12a94d4d4a9 100644 (file)
--- a/ssh.c
+++ b/ssh.c
                       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;
                }
index 8b3de1e589f287390db3badfccf8089e0c326b44..8ce3cf4fb8fbb6e1e76ebf66344c4238eef67969 100644 (file)
--- a/telnet.c
+++ b/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;
 }
index 068b9b491c124d1764d09e1610c3c8745648d582..73369f7411863da2d560ff8b192893a314922c71 100644 (file)
--- a/winnet.c
+++ b/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);
        }