X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=ssh.c;h=5ad1ea4a69ec2d014763b53217c01b38cee2e42e;hb=9b15a8010102fc83dcd7eef78014a65f11619d63;hp=9354cba69a81056d252772f075c5311cde49ffda;hpb=65b47c59c6a788941b0726ec5776b27cd74a5481;p=PuTTY.git diff --git a/ssh.c b/ssh.c index 9354cba6..5ad1ea4a 100644 --- a/ssh.c +++ b/ssh.c @@ -19,8 +19,9 @@ if ((flags & FLAG_STDERR) && (flags & FLAG_VERBOSE)) \ fprintf(stderr, "%s\n", s); } -#define bombout(msg) ( ssh_state = SSH_STATE_CLOSED, sk_close(s), \ - s = NULL, connection_fatal msg ) +#define bombout(msg) ( ssh_state = SSH_STATE_CLOSED, \ + (s ? sk_close(s), s = NULL : (void)0), \ + connection_fatal msg ) #define SSH1_MSG_DISCONNECT 1 /* 0x1 */ #define SSH1_SMSG_PUBLIC_KEY 2 /* 0x2 */ @@ -1152,11 +1153,11 @@ static int ssh_receive(Socket skt, int urgent, char *data, int len) { if (urgent==3) { /* A socket error has occurred. */ ssh_state = SSH_STATE_CLOSED; + sk_close(s); s = NULL; connection_fatal(data); - len = 0; - } - if (!len) { + return 0; + } else if (!len) { /* Connection has closed. */ ssh_state = SSH_STATE_CLOSED; sk_close(s);