1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-18 19:41:01 -05:00

Permit protocol selection in file transfer tools.

PSCP and PSFTP can only work over a protocol enough like SSH to be
able to run subsystems (or at the very least a remote command, for
old-style PSCP). Historically we've implemented this restriction by
having them not support any protocol-selection command-line options at
all, and hardwiring them to instantiating ssh_backend.

This commit regularises them to be more like the rest of the tools.
You can select a protocol using the appropriate command-line option,
provided it's a protocol in those tools' backends[] array. And the
setup code will find the BackendVtable to instantiate by the usual
method of calling backend_vt_from_proto.

Currently, this makes essentially no difference: those tools link in
be_ssh.c, which means the only supported backend is SSH. So the effect
is that now -ssh is an accepted option with no effect, instead of
being rejected. But it opens the way to add other protocols that are
SSH-like enough to run file transfer over.
This commit is contained in:
Simon Tatham
2020-02-22 15:29:45 +00:00
parent 1f399bec58
commit 91c2e6b4d5
4 changed files with 21 additions and 13 deletions

View File

@ -408,7 +408,7 @@ int cmdline_process_param(const char *p, char *value,
for (size_t i = 0; backends[i]; i++) {
if (p[0] == '-' && !strcmp(p+1, backends[i]->id)) {
RETURN(1);
UNAVAILABLE_IN(TOOLTYPE_FILETRANSFER | TOOLTYPE_NONNETWORK);
UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
SAVEABLE(0);
set_protocol(conf, backends[i]->protocol);
if (backends[i]->default_port)