mirror of
https://github.com/curl/curl.git
synced 2026-05-19 14:56:25 +03:00
curl: make the URL indexes 64 bit
Otherwise we could misbehave already at 2 billion URLs and we can't have that. A few of the counters are already correctly using the right type. Closes #18096
This commit is contained in:
parent
d413ed2d40
commit
98bcb885fe
4 changed files with 14 additions and 11 deletions
|
|
@ -1250,7 +1250,7 @@ static CURLcode single_transfer(struct OperationConfig *config,
|
|||
}
|
||||
per->config = config;
|
||||
per->curl = curl;
|
||||
per->urlnum = (unsigned int)u->num;
|
||||
per->urlnum = u->num;
|
||||
|
||||
/* default headers output stream is stdout */
|
||||
heads = &per->heads;
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ struct per_transfer {
|
|||
struct curltime start; /* start of this transfer */
|
||||
struct curltime retrystart;
|
||||
char *url;
|
||||
unsigned int urlnum; /* the index of the given URL */
|
||||
curl_off_t urlnum; /* the index of the given URL */
|
||||
char *outfile;
|
||||
int infd;
|
||||
struct ProgressData progressbar;
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ struct getout {
|
|||
char *url; /* the URL we deal with */
|
||||
char *outfile; /* where to store the output */
|
||||
char *infile; /* file to upload, if GETOUT_UPLOAD is set */
|
||||
int num; /* which URL number in an invocation */
|
||||
curl_off_t num; /* which URL number in an invocation */
|
||||
|
||||
BIT(outset); /* when outfile is set */
|
||||
BIT(urlset); /* when URL is set */
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ static const struct writeoutvar variables[] = {
|
|||
{"urle.scheme", VAR_INPUT_URLESCHEME, CURLINFO_NONE, writeString},
|
||||
{"urle.user", VAR_INPUT_URLEUSER, CURLINFO_NONE, writeString},
|
||||
{"urle.zoneid", VAR_INPUT_URLEZONEID, CURLINFO_NONE, writeString},
|
||||
{"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
|
||||
{"urlnum", VAR_URLNUM, CURLINFO_NONE, writeOffset},
|
||||
{"xfer_id", VAR_EASY_ID, CURLINFO_XFER_ID, writeOffset}
|
||||
};
|
||||
|
||||
|
|
@ -462,12 +462,6 @@ static int writeLong(FILE *stream, const struct writeoutvar *wovar,
|
|||
longinfo = (long)per_result;
|
||||
valid = true;
|
||||
break;
|
||||
case VAR_URLNUM:
|
||||
if(per->urlnum <= INT_MAX) {
|
||||
longinfo = (long)per->urlnum;
|
||||
valid = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
DEBUGASSERT(0);
|
||||
break;
|
||||
|
|
@ -508,7 +502,16 @@ static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
|
|||
valid = true;
|
||||
}
|
||||
else {
|
||||
DEBUGASSERT(0);
|
||||
switch(wovar->id) {
|
||||
case VAR_URLNUM:
|
||||
if(per->urlnum <= INT_MAX) {
|
||||
offinfo = per->urlnum;
|
||||
valid = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
DEBUGASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
if(valid) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue