diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2008-03-09 11:37:48 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2008-03-09 11:37:48 +0000 | 
| commit | 82e095a2759366485c3cb33739992c85ca8a05cc (patch) | |
| tree | 3900cd1dba152458e7839f30fce8a0fd6e0bb33c | |
| parent | 0e40261a11079118d27b93f5503208b6699acc69 (diff) | |
- 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.
| -rw-r--r-- | CHANGES | 10 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | lib/ssh.c | 17 | 
3 files changed, 29 insertions, 2 deletions
@@ -6,6 +6,16 @@                                    Changelog +Daniel Stenberg (9 Mar 2008) +- 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. +  Michal Marek (6 Mar 2008)  - Fix the gssapi configure check to detect newer MIT Kerberos (patch by    Michael Calmer) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index e2fff281d..cffb6678c 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -36,6 +36,8 @@ This release includes the following bugfixes:   o crash when doing Negotiate again on a re-used connection   o select/poll regression   o better MIT kerberos configure check + o curl_easy_reset() + SFTP re-used connection download crash + o SFTP non-existing file + SFTP existing file error  This release includes the following known bugs: @@ -55,6 +57,6 @@ advice from friends like these:   Michal Marek, Dmitry Kurochkin, Niklas Angebrand, Günter Knauf, Yang Tse,   Dan Fandrich, Mike Hommey, Pooyan McSporran, Jerome Muffat-Meridol,   Kaspar Brand, Gautam Kachroo, Zmey Petroff, Georg Lippitsch, Sam Listopad, - Anatoli Tubman, Mike Protts, Michael Calmer + Anatoli Tubman, Mike Protts, Michael Calmer, Brian Ulm          Thanks! (and sorry if I forgot to mention someone) @@ -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);  | 
