mirror of
https://github.com/moparisthebest/curl
synced 2025-03-11 15:50:48 -04:00
failf() now only overwrites the error buffer the first time it gets called
for each *_perform(). It makes things a lot easier, as the first one that detects the error get to write the final error reason...
This commit is contained in:
parent
5b948512f9
commit
4163b86cd2
@ -140,8 +140,10 @@ void Curl_failf(struct SessionHandle *data, const char *fmt, ...)
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
if(data->set.errorbuffer)
|
if(data->set.errorbuffer && !data->state.errorbuf) {
|
||||||
vsnprintf(data->set.errorbuffer, CURL_ERROR_SIZE, fmt, ap);
|
vsnprintf(data->set.errorbuffer, CURL_ERROR_SIZE, fmt, ap);
|
||||||
|
data->state.errorbuf = TRUE; /* wrote error string */
|
||||||
|
}
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -863,7 +863,7 @@ Transfer(struct connectdata *c_conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data->set.timeout &&
|
if (data->set.timeout &&
|
||||||
((Curl_tvdiff(now, start)/1000) > data->set.timeout)) {
|
((Curl_tvdiff(now, start)/1000) >= data->set.timeout)) {
|
||||||
failf (data, "Operation timed out with %d out of %d bytes received",
|
failf (data, "Operation timed out with %d out of %d bytes received",
|
||||||
bytecount, conn->size);
|
bytecount, conn->size);
|
||||||
return CURLE_OPERATION_TIMEOUTED;
|
return CURLE_OPERATION_TIMEOUTED;
|
||||||
@ -914,6 +914,7 @@ CURLcode Curl_perform(struct SessionHandle *data)
|
|||||||
|
|
||||||
data->set.followlocation=0; /* reset the location-follow counter */
|
data->set.followlocation=0; /* reset the location-follow counter */
|
||||||
data->state.this_is_a_follow = FALSE; /* reset this */
|
data->state.this_is_a_follow = FALSE; /* reset this */
|
||||||
|
data->state.errorbuf = FALSE; /* no error has occurred */
|
||||||
|
|
||||||
Curl_initinfo(data); /* reset session-specific information "variables" */
|
Curl_initinfo(data); /* reset session-specific information "variables" */
|
||||||
|
|
||||||
|
@ -446,6 +446,9 @@ struct UrlState {
|
|||||||
long sessionage; /* number of the most recent session */
|
long sessionage; /* number of the most recent session */
|
||||||
|
|
||||||
char scratch[BUFSIZE*2]; /* huge buffer when doing upload CRLF replacing */
|
char scratch[BUFSIZE*2]; /* huge buffer when doing upload CRLF replacing */
|
||||||
|
bool errorbuf; /* Set to TRUE if the error buffer is already filled in.
|
||||||
|
This must be set to FALSE every time _easy_perform() is
|
||||||
|
called. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user