mirror of
https://github.com/curl/curl.git
synced 2026-08-25 18:33:42 +03:00
- Brian Ulm reported a crash when doing a second SFTP transfer on a re-used
easy handle if curl_easy_reset() was used between them. I fixed it and Brian verified that it cured his problem. - Brian Ulm reported that if you first tried to download a non-existing SFTP file and then fetched an existing one and re-used the handle, libcurl would still report the second one as non-existing as well! I fixed it abd Brian verified that it cured his problem.
This commit is contained in:
parent
0e40261a11
commit
82e095a275
3 changed files with 29 additions and 2 deletions
17
lib/ssh.c
17
lib/ssh.c
|
|
@ -1663,7 +1663,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn)
|
|||
}
|
||||
else {
|
||||
result = Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
|
||||
FALSE, NULL, -1, NULL);
|
||||
FALSE, NULL, -1, NULL);
|
||||
}
|
||||
if(result) {
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
|
|
@ -1966,6 +1966,9 @@ static CURLcode ssh_init(struct connectdata *conn)
|
|||
{
|
||||
struct SessionHandle *data = conn->data;
|
||||
struct SSHPROTO *ssh;
|
||||
|
||||
conn->proto.sshc.actualcode = CURLE_OK; /* reset error code */
|
||||
|
||||
if(data->state.proto.ssh)
|
||||
return CURLE_OK;
|
||||
|
||||
|
|
@ -2109,6 +2112,18 @@ static CURLcode ssh_do(struct connectdata *conn, bool *done)
|
|||
|
||||
*done = FALSE; /* default to false */
|
||||
|
||||
/*
|
||||
Since connections can be re-used between SessionHandles, this might be a
|
||||
connection already existing but on a fresh SessionHandle struct so we must
|
||||
make sure we have a good 'struct SSHPROTO' to play with. For new
|
||||
connections, the struct SSHPROTO is allocated and setup in the
|
||||
ssh_connect() function.
|
||||
*/
|
||||
Curl_reset_reqproto(conn);
|
||||
res = ssh_init(conn);
|
||||
if(res)
|
||||
return res;
|
||||
|
||||
data->req.size = -1; /* make sure this is unknown at this point */
|
||||
|
||||
Curl_pgrsSetUploadCounter(data, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue