mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
Darryl L. Miles's patch to support an optional port number argument
on the PSFTP `open' command; it was arguably a bug that this command couldn't do such an obvious thing that could be done from the main command line. Also had to fix a NULL-dereference in do_sftp_cleanup in the process. [originally from svn r3754]
This commit is contained in:
parent
4dec95f80f
commit
2379e69619
25
psftp.c
25
psftp.c
@ -1014,6 +1014,8 @@ int sftp_cmd_chmod(struct sftp_command *cmd)
|
||||
|
||||
static int sftp_cmd_open(struct sftp_command *cmd)
|
||||
{
|
||||
int portnumber;
|
||||
|
||||
if (back != NULL) {
|
||||
printf("psftp: already connected\n");
|
||||
return 0;
|
||||
@ -1024,7 +1026,16 @@ static int sftp_cmd_open(struct sftp_command *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (psftp_connect(cmd->words[1], NULL, 0)) {
|
||||
if (cmd->nwords > 2) {
|
||||
portnumber = atoi(cmd->words[2]);
|
||||
if (portnumber == 0) {
|
||||
printf("open: invalid port number\n");
|
||||
return 0;
|
||||
}
|
||||
} else
|
||||
portnumber = 0;
|
||||
|
||||
if (psftp_connect(cmd->words[1], NULL, portnumber)) {
|
||||
back = NULL; /* connection is already closed */
|
||||
return -1; /* this is fatal */
|
||||
}
|
||||
@ -1216,7 +1227,7 @@ static struct sftp_cmd_lookup {
|
||||
},
|
||||
{
|
||||
"open", TRUE, "connect to a host",
|
||||
" [<user>@]<hostname>\n"
|
||||
" [<user>@]<hostname> [<port>]\n"
|
||||
" Establishes an SFTP connection to a given host. Only usable\n"
|
||||
" when you did not already specify a host name on the command\n"
|
||||
" line.\n",
|
||||
@ -1509,10 +1520,12 @@ static int do_sftp_init(void)
|
||||
void do_sftp_cleanup()
|
||||
{
|
||||
char ch;
|
||||
back->special(backhandle, TS_EOF);
|
||||
sftp_recvdata(&ch, 1);
|
||||
back->free(backhandle);
|
||||
sftp_cleanup_request();
|
||||
if (back) {
|
||||
back->special(backhandle, TS_EOF);
|
||||
sftp_recvdata(&ch, 1);
|
||||
back->free(backhandle);
|
||||
sftp_cleanup_request();
|
||||
}
|
||||
if (pwd) {
|
||||
sfree(pwd);
|
||||
pwd = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user