Rejig windlg.c:verify_ssh_host_key() to silence a warning.
[sgt/putty] / ssh.c
diff --git a/ssh.c b/ssh.c
index 6a882b7..92fadd0 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -12,7 +12,9 @@
 #include "putty.h"
 #include "tree234.h"
 #include "ssh.h"
+#ifndef NO_GSSAPI
 #include "sshgss.h"
+#endif
 
 #ifndef FALSE
 #define FALSE 0
@@ -4994,10 +4996,10 @@ static void do_ssh1_connection(Ssh ssh, unsigned char *in, int inlen,
        }
     }
 
-    if (ssh->cfg.x11_forward) {
+    if (ssh->cfg.x11_forward &&
+       (ssh->x11disp = x11_setup_display(ssh->cfg.x11_display,
+                                         ssh->cfg.x11_auth, &ssh->cfg))) {
        logevent("Requesting X11 forwarding");
-       ssh->x11disp = x11_setup_display(ssh->cfg.x11_display,
-                                        ssh->cfg.x11_auth, &ssh->cfg);
        /*
         * Note that while we blank the X authentication data here, we don't
         * take any special action to blank the start of an X11 channel,
@@ -7011,6 +7013,7 @@ static void ssh2_msg_channel_open(Ssh ssh, struct Packet *pktin)
 
     if (typelen == 3 && !memcmp(type, "x11", 3)) {
        char *addrstr;
+       const char *x11err;
 
        ssh_pkt_getstring(pktin, &peeraddr, &peeraddrlen);
        addrstr = snewn(peeraddrlen+1, char);
@@ -7023,8 +7026,9 @@ static void ssh2_msg_channel_open(Ssh ssh, struct Packet *pktin)
 
        if (!ssh->X11_fwd_enabled)
            error = "X11 forwarding is not enabled";
-       else if (x11_init(&c->u.x11.s, ssh->x11disp, c,
-                         addrstr, peerport, &ssh->cfg) != NULL) {
+       else if ((x11err = x11_init(&c->u.x11.s, ssh->x11disp, c,
+                                   addrstr, peerport, &ssh->cfg)) != NULL) {
+           logeventf(ssh, "Local X11 connection failed: %s", x11err);
            error = "Unable to open an X11 connection";
        } else {
            logevent("Opening X11 forward connection succeeded");
@@ -7154,8 +7158,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
        int done_service_req;
        int gotit, need_pw, can_pubkey, can_passwd, can_keyb_inter;
        int tried_pubkey_config, done_agent;
+#ifndef NO_GSSAPI
        int can_gssapi;
        int tried_gssapi;
+#endif
        int kbd_inter_refused;
        int we_are_in;
        prompts_t *cur_prompt;
@@ -7179,11 +7185,13 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
        int try_send;
        int num_env, env_left, env_ok;
        struct Packet *pktout;
+#ifndef NO_GSSAPI
        Ssh_gss_ctx gss_ctx;
        Ssh_gss_buf gss_buf;
        Ssh_gss_buf gss_rcvtok, gss_sndtok;
        Ssh_gss_name gss_srv_name;
        Ssh_gss_stat gss_stat;
+#endif
     };
     crState(do_ssh2_authconn_state);
 
@@ -7191,7 +7199,9 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
 
     s->done_service_req = FALSE;
     s->we_are_in = FALSE;
+#ifndef NO_GSSAPI
     s->tried_gssapi = FALSE;
+#endif
 
     if (!ssh->cfg.ssh_no_userauth) {
        /*
@@ -7960,6 +7970,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
 
                /* initial tokens are empty */
                SSH_GSS_CLEAR_BUF(&s->gss_rcvtok);
+               SSH_GSS_CLEAR_BUF(&s->gss_sndtok);
 
                /* now enter the loop */
                do {
@@ -8566,10 +8577,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
     /*
      * Potentially enable X11 forwarding.
      */
-    if (ssh->mainchan && !ssh->ncmode && ssh->cfg.x11_forward) {
+    if (ssh->mainchan && !ssh->ncmode && ssh->cfg.x11_forward &&
+       (ssh->x11disp = x11_setup_display(ssh->cfg.x11_display,
+                                         ssh->cfg.x11_auth, &ssh->cfg))) {
        logevent("Requesting X11 forwarding");
-       ssh->x11disp = x11_setup_display(ssh->cfg.x11_display,
-                                        ssh->cfg.x11_auth, &ssh->cfg);
        s->pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST);
        ssh2_pkt_adduint32(s->pktout, ssh->mainchan->remoteid);
        ssh2_pkt_addstring(s->pktout, "x11-req");