mirror of
https://github.com/curl/curl.git
synced 2026-07-24 18:57:18 +03:00
Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
This commit is contained in:
parent
94568f884d
commit
ce5db9a86e
11 changed files with 60 additions and 7 deletions
|
|
@ -1777,8 +1777,13 @@ CURLcode Curl_ftp_nextconnect(struct connectdata *conn)
|
|||
downloads and when talking to servers that don't give away the size
|
||||
in the RETR response line. */
|
||||
result = ftp_getsize(conn, ftp->file, &foundsize);
|
||||
if(CURLE_OK == result)
|
||||
if(CURLE_OK == result) {
|
||||
if (data->set.max_filesize && foundsize > data->set.max_filesize) {
|
||||
failf(data, "Maximum file size exceeded");
|
||||
return CURLE_FILESIZE_EXCEEDED;
|
||||
}
|
||||
downloadsize = foundsize;
|
||||
}
|
||||
|
||||
if(conn->resume_from) {
|
||||
|
||||
|
|
|
|||
|
|
@ -578,6 +578,11 @@ CURLcode Curl_readwrite(struct connectdata *conn,
|
|||
/* check for Content-Length: header lines to get size */
|
||||
if (checkprefix("Content-Length:", k->p) &&
|
||||
sscanf (k->p+15, " %ld", &k->contentlength)) {
|
||||
if (data->set.max_filesize && k->contentlength >
|
||||
data->set.max_filesize) {
|
||||
failf(data, "Maximum file size exceeded");
|
||||
return CURLE_FILESIZE_EXCEEDED;
|
||||
}
|
||||
conn->size = k->contentlength;
|
||||
Curl_pgrsSetDownloadSize(data, k->contentlength);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1238,6 +1238,13 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, ...)
|
|||
data->set.http200aliases = va_arg(param, struct curl_slist *);
|
||||
break;
|
||||
|
||||
case CURLOPT_MAXFILESIZE:
|
||||
/*
|
||||
* Set the maximum size of a file to download.
|
||||
*/
|
||||
data->set.max_filesize = va_arg(param, long);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* unknown tag and its companion, just ignore: */
|
||||
return CURLE_FAILED_INIT; /* correct this */
|
||||
|
|
|
|||
|
|
@ -828,6 +828,8 @@ struct UserDefined {
|
|||
struct curl_slist *http200aliases; /* linked list of aliases for http200 */
|
||||
|
||||
int ip_version;
|
||||
|
||||
long max_filesize; /* Maximum file size to download */
|
||||
|
||||
/* Here follows boolean settings that define how to behave during
|
||||
this session. They are STATIC, set by libcurl users or at least initially
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue