aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES14
-rw-r--r--RELEASE-NOTES4
-rw-r--r--lib/ftp.c10
-rw-r--r--tests/data/Makefile.am2
-rw-r--r--tests/data/test23542
5 files changed, 66 insertions, 6 deletions
diff --git a/CHANGES b/CHANGES
index bbc867f66..a3e20b810 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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)
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index a579164bf..ccef16469 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -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)
diff --git a/lib/ftp.c b/lib/ftp.c
index fc73edc86..de5e95db9 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -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;
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 71b7398ca..424dd987b 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -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
diff --git a/tests/data/test235 b/tests/data/test235
new file mode 100644
index 000000000..c1345b9c2
--- /dev/null
+++ b/tests/data/test235
@@ -0,0 +1,42 @@
+# 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>