diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-03-13 21:43:30 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-03-13 21:43:30 +0000 |
commit | ad4a9955c5f62d164a78b9847fe9e8207aadb617 (patch) | |
tree | 6d4df323042c9ae7098166a47d69141d370f325f /lib | |
parent | 553ed99e3b5fce75e02167bb291b214576573ea9 (diff) |
- Brian Ulm figured out that if you did an SFTP upload with
CURLOPT_FTP_CREATE_MISSING_DIRS to create a directory, and then re-used the
handle and uploaded another file to another directory that needed to be
created, the second upload would fail. Another case of a state variable that
wasn't properly reset between requests.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ssh.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1226,10 +1226,11 @@ static CURLcode ssh_statemach_act(struct connectdata *conn) } else { err = libssh2_sftp_last_error(sshc->sftp_session); - failf(data, "Upload failed: %s", sftp_libssh2_strerror(err)); if(sshc->secondCreateDirs) { state(conn, SSH_SFTP_CLOSE); sshc->actualcode = sftp_libssh2_error_to_CURLE(err); + failf(data, "Creating the dir/file failed: %s", + sftp_libssh2_strerror(err)); break; } else if(((err == LIBSSH2_FX_NO_SUCH_FILE) || @@ -1244,6 +1245,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn) } state(conn, SSH_SFTP_CLOSE); sshc->actualcode = sftp_libssh2_error_to_CURLE(err); + failf(data, "Upload failed: %s", sftp_libssh2_strerror(err)); break; } } @@ -1966,8 +1968,10 @@ static CURLcode ssh_init(struct connectdata *conn) { struct SessionHandle *data = conn->data; struct SSHPROTO *ssh; + struct ssh_conn *sshc = &conn->proto.sshc; - conn->proto.sshc.actualcode = CURLE_OK; /* reset error code */ + sshc->actualcode = CURLE_OK; /* reset error code */ + sshc->secondCreateDirs =0; /* reset the create dir attempt state variable */ if(data->state.proto.ssh) return CURLE_OK; |