mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
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.
This commit is contained in:
parent
b01151e81c
commit
aa47ac4c06
14
CHANGES
14
CHANGES
@ -7,6 +7,20 @@
|
|||||||
Changelog
|
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)
|
Version 7.13.1 (4 March 2005)
|
||||||
|
|
||||||
Daniel (4 March 2005)
|
Daniel (4 March 2005)
|
||||||
|
@ -14,7 +14,8 @@ This release includes the following changes:
|
|||||||
|
|
||||||
This release includes the following bugfixes:
|
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:
|
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
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
|
Dan Fandrich, Ignacio Vazquez-Abrams
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
10
lib/ftp.c
10
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 */
|
/* 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;
|
CURLcode result = CURLE_OK;
|
||||||
struct FTP *ftp = conn->proto.ftp;
|
struct FTP *ftp = conn->proto.ftp;
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
curl_off_t passed=0;
|
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 */
|
/* we're about to continue the uploading of a file */
|
||||||
/* 1. get already existing file's size. We use the SIZE command for this
|
/* 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
|
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);
|
state(conn, FTP_RETR_SIZE);
|
||||||
break;
|
break;
|
||||||
case FTP_STOR_PREQUOTE:
|
case FTP_STOR_PREQUOTE:
|
||||||
result = ftp_state_ul_setup(conn);
|
result = ftp_state_ul_setup(conn, FALSE);
|
||||||
break;
|
break;
|
||||||
case FTP_POSTQUOTE:
|
case FTP_POSTQUOTE:
|
||||||
break;
|
break;
|
||||||
@ -1936,7 +1938,7 @@ static CURLcode ftp_state_size_resp(struct connectdata *conn,
|
|||||||
result = ftp_state_post_retr_size(conn, filesize);
|
result = ftp_state_post_retr_size(conn, filesize);
|
||||||
else if(instate == FTP_STOR_SIZE) {
|
else if(instate == FTP_STOR_SIZE) {
|
||||||
conn->resume_from = filesize;
|
conn->resume_from = filesize;
|
||||||
result = ftp_state_ul_setup(conn);
|
result = ftp_state_ul_setup(conn, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -32,7 +32,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
|
|||||||
test223 test224 test206 test207 test208 test209 test213 test240 \
|
test223 test224 test206 test207 test208 test209 test213 test240 \
|
||||||
test241 test242 test519 test214 test215 test216 test217 test218 \
|
test241 test242 test519 test214 test215 test216 test217 test218 \
|
||||||
test199 test225 test226 test227 test230 test231 test232 test228 \
|
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
|
# 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
|
# work. We need to fix the test suite's FTPS server first, then bring them
|
||||||
|
42
tests/data/test235
Normal file
42
tests/data/test235
Normal file
@ -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>
|
Loading…
Reference in New Issue
Block a user