From 2bc6a386c828835b75509281029b1b677f6725dc Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 13 May 2001 11:15:16 +0000 Subject: [PATCH] Attempt to report the error condition right when an SCP connection with a pre-supplied password fails to authenticate. git-svn-id: svn://svn.tartarus.org/sgt/putty@1114 cda61777-01e9-0310-a592-d414129be87e --- scp.c | 33 ++++++++++++++++++++++++++++++++- ssh.c | 13 +++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/scp.c b/scp.c index 9a2624aa..191f6a7f 100644 --- a/scp.c +++ b/scp.c @@ -46,6 +46,7 @@ #define WM_RET_ERR_CNT ( WM_APP_BASE+406 ) #define WM_LS_RET_ERR_CNT ( WM_APP_BASE+407 ) +static int list = 0; static int verbose = 0; static int recursive = 0; static int preserve = 0; @@ -239,6 +240,16 @@ void fatalbox(char *fmt, ...) va_end(ap); strcat(str, "\n"); tell_str(stderr, str); + errs++; + + if (gui_mode) { + unsigned int msg_id = WM_RET_ERR_CNT; + if (list) + msg_id = WM_LS_RET_ERR_CNT; + while (!PostMessage + ((HWND) atoi(gui_hwnd), msg_id, (WPARAM) errs, + 0 /*lParam */ ))SleepEx(1000, TRUE); + } exit(1); } @@ -252,6 +263,16 @@ void connection_fatal(char *fmt, ...) va_end(ap); strcat(str, "\n"); tell_str(stderr, str); + errs++; + + if (gui_mode) { + unsigned int msg_id = WM_RET_ERR_CNT; + if (list) + msg_id = WM_LS_RET_ERR_CNT; + while (!PostMessage + ((HWND) atoi(gui_hwnd), msg_id, (WPARAM) errs, + 0 /*lParam */ ))SleepEx(1000, TRUE); + } exit(1); } @@ -398,12 +419,23 @@ static void bump(char *fmt, ...) va_end(ap); strcat(str, "\n"); tell_str(stderr, str); + errs++; if (back != NULL && back->socket() != NULL) { char ch; back->special(TS_EOF); ssh_scp_recv(&ch, 1); } + + if (gui_mode) { + unsigned int msg_id = WM_RET_ERR_CNT; + if (list) + msg_id = WM_LS_RET_ERR_CNT; + while (!PostMessage + ((HWND) atoi(gui_hwnd), msg_id, (WPARAM) errs, + 0 /*lParam */ ))SleepEx(1000, TRUE); + } + exit(1); } @@ -1236,7 +1268,6 @@ static void usage(void) int main(int argc, char *argv[]) { int i; - int list = 0; default_protocol = PROT_TELNET; diff --git a/ssh.c b/ssh.c index e120c152..881919c7 100644 --- a/ssh.c +++ b/ssh.c @@ -2018,7 +2018,10 @@ static int do_ssh1_login(unsigned char *in, int inlen, int ispkt) * because one was supplied on the command line * which has already failed to work). Terminate. */ - logevent("No more passwords to try"); + send_packet(SSH1_MSG_DISCONNECT, + PKT_STR, "No more passwords available to try", + PKT_END); + connection_fatal("Unable to authenticate"); ssh_state = SSH_STATE_CLOSED; crReturn(1); } @@ -3537,7 +3540,13 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) * command line which has already failed to * work). Terminate. */ - logevent("No more passwords to try"); + ssh2_pkt_init(SSH2_MSG_DISCONNECT); + ssh2_pkt_adduint32(SSH2_DISCONNECT_BY_APPLICATION); + ssh2_pkt_addstring + ("No more passwords available to try"); + ssh2_pkt_addstring("en"); /* language tag */ + ssh2_pkt_send(); + connection_fatal("Unable to authenticate"); ssh_state = SSH_STATE_CLOSED; crReturnV; } -- 2.11.0