mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 15:48:49 -05:00
ftp: close connection as soon as ABOR has been sent
... and do not send ABOR unless really necessary. Bug: https://bugzilla.redhat.com/649347 Reported by: Simon H.
This commit is contained in:
parent
f96a2641fc
commit
c6b97a8278
15
lib/ftp.c
15
lib/ftp.c
@ -3083,10 +3083,9 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
||||
#endif
|
||||
|
||||
if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
|
||||
if(!result && ftpc->dont_check)
|
||||
/* prevent some FTP servers (namely Pure-ftpd) from hanging if we close
|
||||
* the data channel before transferring all data */
|
||||
result = Curl_pp_sendf(&ftpc->pp, "ABOR");
|
||||
if(!result && ftpc->dont_check && data->req.maxdownload > 0)
|
||||
/* partial download completed */
|
||||
result = Curl_pp_sendf(pp, "ABOR");
|
||||
|
||||
if(conn->ssl[SECONDARYSOCKET].use) {
|
||||
/* The secondary socket is using SSL so we must close down that part
|
||||
@ -3128,6 +3127,14 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
||||
if(result)
|
||||
return result;
|
||||
|
||||
if(ftpc->dont_check && data->req.maxdownload > 0) {
|
||||
/* we have just sent ABOR and there is no reliable way to check if it was
|
||||
* successful or not; we have to close the connection now */
|
||||
infof(data, "partial download completed, closing connection\n");
|
||||
conn->bits.close = TRUE; /* mark for closure */
|
||||
return result;
|
||||
}
|
||||
|
||||
if(!ftpc->dont_check) {
|
||||
/* 226 Transfer complete, 250 Requested file action okay, completed. */
|
||||
if((ftpcode != 226) && (ftpcode != 250)) {
|
||||
|
@ -50,7 +50,6 @@ TYPE I
|
||||
SIZE 1036
|
||||
REST 20
|
||||
RETR 1036
|
||||
ABOR
|
||||
QUIT
|
||||
</protocol>
|
||||
<file name="log/curl1036.out">
|
||||
|
@ -46,7 +46,6 @@ TYPE I
|
||||
SIZE 110
|
||||
REST 20
|
||||
RETR 110
|
||||
ABOR
|
||||
QUIT
|
||||
</protocol>
|
||||
</verify>
|
||||
|
@ -39,7 +39,6 @@ EPSV
|
||||
PASV
|
||||
TYPE I
|
||||
SIZE 122
|
||||
ABOR
|
||||
QUIT
|
||||
</protocol>
|
||||
</verify>
|
||||
|
Loading…
Reference in New Issue
Block a user