I extended a patch from David Shaw to make libcurl _always_ provide an error
string in the given error buffer to address the flaw mention on 21 sep 2005.
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -8,6 +8,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Daniel (17 November 2005)
|
||||||
|
- I extended a patch from David Shaw to make libcurl _always_ provide an error
|
||||||
|
string in the given error buffer to address the flaw mention on 21 sep 2005.
|
||||||
|
|
||||||
Daniel (16 November 2005)
|
Daniel (16 November 2005)
|
||||||
- Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
|
- Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
|
||||||
installed on 'make install' time.
|
installed on 'make install' time.
|
||||||
|
@@ -19,6 +19,7 @@ This release includes the following changes:
|
|||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
|
o CURLOPT_ERRORBUFFER is now always filled in on errors
|
||||||
o curl outputs error on bad --limit-rate units
|
o curl outputs error on bad --limit-rate units
|
||||||
o fixed libcurl's use of poll() on cygwin
|
o fixed libcurl's use of poll() on cygwin
|
||||||
o the GnuTLS code didn't support client certificates
|
o the GnuTLS code didn't support client certificates
|
||||||
@@ -51,6 +52,6 @@ advice from friends like these:
|
|||||||
Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz
|
Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz
|
||||||
Fresh, tommink[at]post.pl, Gisle Vanem, Nis Jorgensen, Vilmos Nebehaj,
|
Fresh, tommink[at]post.pl, Gisle Vanem, Nis Jorgensen, Vilmos Nebehaj,
|
||||||
Dmitry Bartsevich, David Lang, Eugene Kotlyarov, Jan Kunder, Yang Tse,
|
Dmitry Bartsevich, David Lang, Eugene Kotlyarov, Jan Kunder, Yang Tse,
|
||||||
Quagmire, Albert Chin
|
Quagmire, Albert Chin, David Shaw
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
@@ -270,12 +270,6 @@ debug/trace why errors happen.
|
|||||||
If the library does not return an error, the buffer may not have been
|
If the library does not return an error, the buffer may not have been
|
||||||
touched. Do not rely on the contents in those cases.
|
touched. Do not rely on the contents in those cases.
|
||||||
|
|
||||||
In a few rare cases, there is no text string associated with the error in
|
|
||||||
libcurl and then you may not get a string in the buffer even though it returns
|
|
||||||
an error. This is considered a bug and we appreciate your reports about these
|
|
||||||
cases. Anyway, you can avoid problems with these cases in your program by
|
|
||||||
making sure to clear the first byte of the error buffer before you call
|
|
||||||
curl_easy_perform().
|
|
||||||
.IP CURLOPT_STDERR
|
.IP CURLOPT_STDERR
|
||||||
Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
|
Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
|
||||||
when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
|
when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
|
||||||
|
@@ -2217,6 +2217,19 @@ CURLcode Curl_perform(struct SessionHandle *data)
|
|||||||
if(newurl)
|
if(newurl)
|
||||||
free(newurl);
|
free(newurl);
|
||||||
|
|
||||||
|
if(res && !data->state.errorbuf) {
|
||||||
|
/*
|
||||||
|
* As an extra precaution: if no error string has been set and there was
|
||||||
|
* an error, use the strerror() string or if things are so bad that not
|
||||||
|
* even that is good, set a bad string that mentions the error code.
|
||||||
|
*/
|
||||||
|
char *str = curl_easy_strerror(res);
|
||||||
|
if(!str)
|
||||||
|
failf(data, "unspecified error %d", (int)res);
|
||||||
|
else
|
||||||
|
failf(data, "%s", str);
|
||||||
|
}
|
||||||
|
|
||||||
/* run post-transfer uncondionally, but don't clobber the return code if
|
/* run post-transfer uncondionally, but don't clobber the return code if
|
||||||
we already have an error code recorder */
|
we already have an error code recorder */
|
||||||
res2 = Curl_posttransfer(data);
|
res2 = Curl_posttransfer(data);
|
||||||
|
Reference in New Issue
Block a user