]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Disable some mid-session configs for downstreams.
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Sun, 9 Nov 2014 00:10:46 +0000 (00:10 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Sun, 9 Nov 2014 00:10:46 +0000 (00:10 +0000)
Compression, encryption, and key exchange settings are all meaningless
to reconfigure in connection-sharing downstreams.

config.c
ssh.c

index 711028c74e0f55ef53e9eb455c156c4bda9529c9..c2acd6287a83558c7147da29229d6605a76d4f9b 100644 (file)
--- a/config.c
+++ b/config.c
@@ -2136,7 +2136,8 @@ void setup_config_box(struct controlbox *b, int midsession,
        ctrl_settitle(b, "Connection/SSH",
                      "Options controlling SSH connections");
 
-       if (midsession && protcfginfo == 1) {
+       /* SSH-1 or connection-sharing downstream */
+       if (midsession && (protcfginfo == 1 || protcfginfo == -1)) {
            s = ctrl_getset(b, "Connection/SSH", "disclaimer", NULL);
            ctrl_text(s, "Nothing on this panel may be reconfigured in mid-"
                      "session; it is only here so that sub-panels of it can "
@@ -2158,7 +2159,7 @@ void setup_config_box(struct controlbox *b, int midsession,
                          I(CONF_ssh_no_shell));
        }
 
-       if (!midsession || protcfginfo != 1) {
+       if (!midsession || !(protcfginfo == 1 || protcfginfo == -1)) {
            s = ctrl_getset(b, "Connection/SSH", "protocol", "Protocol options");
 
            ctrl_checkbox(s, "Enable compression", 'e',
@@ -2203,9 +2204,10 @@ void setup_config_box(struct controlbox *b, int midsession,
        /*
         * The Connection/SSH/Kex panel. (Owing to repeat key
         * exchange, much of this is meaningful in mid-session _if_
-        * we're using SSH-2 or haven't decided yet.)
+        * we're using SSH-2 and are not a connection-sharing
+        * downstream, or haven't decided yet.)
         */
-       if (protcfginfo != 1) {
+       if (protcfginfo != 1 && protcfginfo != -1) {
            ctrl_settitle(b, "Connection/SSH/Kex",
                          "Options controlling SSH key exchange");
 
@@ -2276,7 +2278,7 @@ void setup_config_box(struct controlbox *b, int midsession,
             ctrl_columns(s, 1, 100);
        }
 
-       if (!midsession || protcfginfo != 1) {
+       if (!midsession || !(protcfginfo == 1 || protcfginfo == -1)) {
            /*
             * The Connection/SSH/Cipher panel.
             */
diff --git a/ssh.c b/ssh.c
index 959025c4cffbeabb85decac0c6bbc30bc81b6a13..48b3f38f1288ffd58821fbc5b1a51a7c3653781e 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -11241,13 +11241,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;
 }
 
 /*