]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - ssh.c
Merge connection-sharing shutdown fix from pre-0.64.
[PuTTY.git] / ssh.c
diff --git a/ssh.c b/ssh.c
index bc079e91754b8f6df64a61e7a973b42bc1f15e2c..a69e7ca7ac81172f448edaa07ce6800b165e92ac 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -2966,11 +2966,13 @@ static int do_ssh_init(Ssh ssh, unsigned char c)
     s->proto2 = ssh_versioncmp(s->version, "1.99") >= 0;
 
     if (conf_get_int(ssh->conf, CONF_sshprot) == 0 && !s->proto1) {
-       bombout(("SSH protocol version 1 required by user but not provided by server"));
+       bombout(("SSH protocol version 1 required by configuration but "
+                "not provided by server"));
        crStop(0);
     }
     if (conf_get_int(ssh->conf, CONF_sshprot) == 3 && !s->proto2) {
-       bombout(("SSH protocol version 2 required by user but not provided by server"));
+       bombout(("SSH protocol version 2 required by configuration but "
+                "not provided by server"));
        crStop(0);
     }
 
@@ -3291,6 +3293,14 @@ static int ssh_do_close(Ssh ssh, int notify_exit)
        ssh->portfwds = NULL;
     }
 
+    /*
+     * Also stop attempting to connection-share.
+     */
+    if (ssh->connshare) {
+        sharestate_free(ssh->connshare);
+        ssh->connshare = NULL;
+    }
+
     return ret;
 }
 
@@ -11319,13 +11329,19 @@ static int ssh_return_exitcode(void *handle)
 }
 
 /*
- * cfg_info for SSH is the currently running version of the
- * protocol. (1 for 1; 2 for 2; 0 for not-decided-yet.)
+ * cfg_info for SSH is the protocol running in this session.
+ * (1 or 2 for the full SSH-1 or SSH-2 protocol; -1 for the bare
+ * SSH-2 connection protocol, i.e. a downstream; 0 for not-decided-yet.)
  */
 static int ssh_cfg_info(void *handle)
 {
     Ssh ssh = (Ssh) handle;
-    return ssh->version;
+    if (ssh->version == 0)
+       return 0; /* don't know yet */
+    else if (ssh->bare_connection)
+       return -1;
+    else
+       return ssh->version;
 }
 
 /*