Commit aa47ac4c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Added test case 235 that makes a resumed upload of a file that isn't present

on the remote side. This then converts the operation to an ordinary STOR
upload. This was requested/pointed out by Ignacio Vazquez-Abrams.

It also proved (and I fixed) a bug in the newly rewritten ftp code (and
present in the 7.13.1 release) when trying to resume an upload and the servers
returns an error to the SIZE command. libcurl then loops and sends SIZE
commands infinitely.
parent b01151e8
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -7,6 +7,20 @@
                                  Changelog


Daniel (5 March 2005)
- Added test case 235 that makes a resumed upload of a file that isn't present
  on the remote side. This then converts the operation to an ordinary STOR
  upload. This was requested/pointed out by Ignacio Vazquez-Abrams.

  It also proved (and I fixed) a bug in the newly rewritten ftp code (and
  present in the 7.13.1 release) when trying to resume an upload and the
  servers returns an error to the SIZE command. libcurl then loops and sends
  SIZE commands infinitely.

- Dan Fandrich fixed a SSL problem introduced on February 9th that made
  libcurl attempt to load the whole random file to seed the PRNG. This is
  really bad since this turns out to be using /dev/urandom at times...

Version 7.13.1 (4 March 2005)

Daniel (4 March 2005)
+3 −1
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@ This release includes the following changes:

This release includes the following bugfixes:

 o 
 o FTP upload resume now works even if no file is present on the site
 o SSL seeding no longer attempts to read the whole random file

Other curl-related news since the previous public release:

@@ -23,5 +24,6 @@ Other curl-related news since the previous public release:
This release would not have looked like this without help, code, reports and
advice from friends like these:

 Dan Fandrich, Ignacio Vazquez-Abrams

        Thanks! (and sorry if I forgot to mention someone)
+6 −4
Original line number Diff line number Diff line
@@ -1339,14 +1339,16 @@ static CURLcode ftp_state_post_cwd(struct connectdata *conn)


/* This is called after the TYPE and possible quote commands have been sent */
static CURLcode ftp_state_ul_setup(struct connectdata *conn)
static CURLcode ftp_state_ul_setup(struct connectdata *conn,
                                   bool sizechecked)
{
  CURLcode result = CURLE_OK;
  struct FTP *ftp = conn->proto.ftp;
  struct SessionHandle *data = conn->data;
  curl_off_t passed=0;

  if(conn->resume_from) {
  if((conn->resume_from && !sizechecked) ||
     ((conn->resume_from > 0) && sizechecked)) {
    /* we're about to continue the uploading of a file */
    /* 1. get already existing file's size. We use the SIZE command for this
       which may not exist in the server!  The SIZE command is not in
@@ -1480,7 +1482,7 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
      state(conn, FTP_RETR_SIZE);
      break;
    case FTP_STOR_PREQUOTE:
      result = ftp_state_ul_setup(conn);
      result = ftp_state_ul_setup(conn, FALSE);
      break;
    case FTP_POSTQUOTE:
      break;
@@ -1936,7 +1938,7 @@ static CURLcode ftp_state_size_resp(struct connectdata *conn,
    result = ftp_state_post_retr_size(conn, filesize);
  else if(instate == FTP_STOR_SIZE) {
    conn->resume_from = filesize;
    result = ftp_state_ul_setup(conn);
    result = ftp_state_ul_setup(conn, TRUE);
  }

  return result;
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
 test223 test224 test206 test207 test208 test209 test213 test240	\
 test241 test242 test519 test214 test215 test216 test217 test218	\
 test199 test225 test226 test227 test230 test231 test232 test228	\
 test229 test233 test234
 test229 test233 test234 test235

# The following tests have been removed from the dist since they no longer
# work. We need to fix the test suite's FTPS server first, then bring them

tests/data/test235

0 → 100644
+42 −0
Original line number Diff line number Diff line
# Server-side
<reply>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP resumed upload but no file present remotely
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/235 -T log/upload235 -C -
</command>
<file name="log/upload235">
this is the *****crap******** that we're gonna upload

worx?
</file>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
</strip>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
EPSV
TYPE I
SIZE 235
STOR 235
QUIT
</protocol>
<upload>
this is the *****crap******** that we're gonna upload

worx?
</upload>
</verify>