ftp: allow CURLOPT_IGNORE_CONTENT_LENGTH to ignore size

This allows FTP transfers with growing (or shrinking) files without
causing a transfer error.

Closes #480
This commit is contained in:
Kurt Fankhauser
2015-10-23 14:57:30 +02:00
committed by Daniel Stenberg
parent b1199def8c
commit 529f9310b1
2 changed files with 24 additions and 6 deletions

View File

@@ -1790,8 +1790,20 @@ static CURLcode ftp_state_quote(struct connectdata *conn,
result = ftp_state_retr(conn, ftpc->known_filesize);
}
else {
PPSENDF(&ftpc->pp, "SIZE %s", ftpc->file);
state(conn, FTP_RETR_SIZE);
if(data->set.ignorecl) {
/* This code is to support download of growing files. It prevents
the state machine from requesting the file size from the
server. With an unknown file size the download continues until
the server terminates it, otherwise the client stops if the
received byte count exceeds the reported file size. Set option
CURLOPT_IGNORE_CONTENT_LENGTH to 1 to enable this behavior.*/
PPSENDF(&ftpc->pp, "RETR %s", ftpc->file);
state(conn, FTP_RETR);
}
else {
PPSENDF(&ftpc->pp, "SIZE %s", ftpc->file);
state(conn, FTP_RETR_SIZE);
}
}
}
break;