]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Implement Marcin Bulandra's suggestion of only automatically updating the
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Sun, 1 Jul 2007 15:47:31 +0000 (15:47 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Sun, 1 Jul 2007 15:47:31 +0000 (15:47 +0000)
port number in the GUI when the connection type is changed if the current
port number is the standard one for the current protocol.
It's not perfect, but it should make the common case of tabbing through the
Session panel easier when starting non-SSH connections on odd ports.

[originally from svn r7635]

config.c
raw.c
rlogin.c
unix/uxpty.c
unix/uxser.c
windows/winser.c

index 39740b8d71ed4c3ec74a03908160cb3ca9c82242..1fedd284c4d56a2d77c1f3fae4e327116a250d05 100644 (file)
--- a/config.c
+++ b/config.c
@@ -90,7 +90,7 @@ struct hostport {
 void config_protocolbuttons_handler(union control *ctrl, void *dlg,
                                    void *data, int event)
 {
-    int button, defport;
+    int button;
     Config *cfg = (Config *)data;
     struct hostport *hp = (struct hostport *)ctrl->radio.context.p;
 
@@ -114,15 +114,20 @@ void config_protocolbuttons_handler(union control *ctrl, void *dlg,
        assert(button >= 0 && button < ctrl->radio.nbuttons);
        cfg->protocol = ctrl->radio.buttondata[button].i;
        if (oldproto != cfg->protocol) {
-           defport = -1;
-           switch (cfg->protocol) {
-             case PROT_SSH: defport = 22; break;
-             case PROT_TELNET: defport = 23; break;
-             case PROT_RLOGIN: defport = 513; break;
-           }
-           if (defport > 0 && cfg->port != defport) {
-               cfg->port = defport;
-           }
+           Backend *ob = backend_from_proto(oldproto);
+           Backend *nb = backend_from_proto(cfg->protocol);
+           assert(ob);
+           assert(nb);
+           /* Iff the user hasn't changed the port from the protocol
+            * default (if any), update it with the new protocol's
+            * default.
+            * (XXX: this isn't perfect; a default can become permanent
+            * by going via the serial backend. However, it helps with
+            * the common case of tabbing through the controls in order
+            * and setting a non-default port.) */
+           if (cfg->port == ob->default_port &&
+               cfg->port > 0 && nb->default_port > 0)
+               cfg->port = nb->default_port;
        }
        dlg_refresh(hp->host, dlg);
        dlg_refresh(hp->port, dlg);
diff --git a/raw.c b/raw.c
index 49ca1ce2484ea4e17359bfa1125c26be96c2e56a..b4b1108f96c609ed47b527f01b034f71ba861c55 100644 (file)
--- a/raw.c
+++ b/raw.c
@@ -280,5 +280,5 @@ Backend raw_backend = {
     raw_cfg_info,
     "raw",
     PROT_RAW,
-    1
+    0
 };
index f9a546e929d7cd7161b45cd798de0ca4300ea650..e40f1597da65489bc19c3518a81780fe6c0e6b05 100644 (file)
--- a/rlogin.c
+++ b/rlogin.c
@@ -351,5 +351,5 @@ Backend rlogin_backend = {
     rlogin_cfg_info,
     "rlogin",
     PROT_RLOGIN,
-    1
+    513
 };
index 2e165cf2e9451e8d71f2d9dddeeac10197378eed..60dc7f7d474945342a1dcdd78b679788602c37cc 100644 (file)
@@ -1087,5 +1087,5 @@ Backend pty_backend = {
     pty_cfg_info,
     "pty",
     -1,
-    1
+    0
 };
index a12fdec76add7098a3e8b622a3845e1bc9200d9a..92961a7de9928c5bcc7972d524e6cc8785c9820c 100644 (file)
@@ -538,5 +538,5 @@ Backend serial_backend = {
     serial_cfg_info,
     "serial",
     PROT_SERIAL,
-    1
+    0
 };
index 1188c46a2cce459dd94b13c0689c1d3b8e6b2835..ab88406d7202157297eb7a45f7bc08ed9fd2175c 100644 (file)
@@ -456,5 +456,5 @@ Backend serial_backend = {
     serial_cfg_info,
     "serial",
     PROT_SERIAL,
-    1
+    0
 };