From f43713466178fbba6a09ee4590d6d441cbb725d1 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 27 Jul 2011 18:43:16 +0000 Subject: [PATCH] Fix bug in which the SSH-only tools (pscp, psftp) did not honour a nonstandard port number when loading a saved session. Occurs because those tools include be_none.c which defines no entries in backends[] at all, as a result of which settings.c doesn't recognise the word 'ssh' in the saved session's protocol field and instead sets the protocol to something idiotic - which _then_ means that when pscp.c forces the protocol to PROT_SSH, it also resets the port number as it would when overriding a saved session specifying a protocol other than SSH. The immediate solution is to define a new be_ssh.c citing only ssh_backend, and include that in the SSH-only tools. However, I wonder if a better approach (perhaps when I redesign session loading and saving) would be not to be so clever, and just have all the tools contain a complete list of known protocol names for purposes of understanding what's in the saved session data, and complain if you try to use one they don't know how to actually speak. git-svn-id: svn://svn.tartarus.org/sgt/putty@9254 cda61777-01e9-0310-a592-d414129be87e --- Recipe | 2 +- be_none.c | 2 +- be_ssh.c | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 be_ssh.c diff --git a/Recipe b/Recipe index 454fe32c..77f3be00 100644 --- a/Recipe +++ b/Recipe @@ -317,7 +317,7 @@ LIBS = advapi32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib # to proxy.c depending on whether we're crypto-avoidant or not. BE_ALL = be_all cproxy BE_NOSSH = be_nossh nocproxy -BE_SSH = be_none cproxy +BE_SSH = be_ssh cproxy BE_NONE = be_none nocproxy # More backend sets, with the additional Windows serial-port module. W_BE_ALL = be_all_s winser cproxy diff --git a/be_none.c b/be_none.c index 6ec037ac..688b8daf 100644 --- a/be_none.c +++ b/be_none.c @@ -1,6 +1,6 @@ /* * Linking module for programs that do not support selection of backend - * (such as pscp or pterm). + * (such as pterm). */ #include diff --git a/be_ssh.c b/be_ssh.c new file mode 100644 index 00000000..57d241c2 --- /dev/null +++ b/be_ssh.c @@ -0,0 +1,16 @@ +/* + * Linking module for programs that are restricted to only using SSH + * (pscp and psftp). These do not support selection of backend, but + * must still have a backends[] array mentioning SSH because + * settings.c will want to consult it during session load. + */ + +#include +#include "putty.h" + +const int be_default_protocol = PROT_SSH; + +Backend *backends[] = { + &ssh_backend, + NULL +}; -- 2.11.0