Changelog
+Daniel Fandrich (22 Aug 2008)
+- Fixed a problem when --dump-header - was given with more than one URL,
+ which caused an error when the second header was dumped due to stdout
+ being closed. Added test case 1066 to verify. Also fixed a potential
+ problem where a closed file descriptor might be used for an upload
+ when more than one URL is given.
+
Yang Tse (22 Aug 2008)
- Improved libcurl's internal curl_m*printf() functions integral data type
size and signedness handling.
o --stderr is now honoured with the -v option
o memory leak in libcurl on Windows built with OpenSSL
o improved curl_m*printf() integral data type size and signedness handling
+ o error when --dump-header - used with more than one URL
This release includes the following known bugs:
Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen,
Rolland Dudemaine, Phil Blundell, Scott Barrett, Andreas Schuldei,
Peter Lamberg, David Bau, Pramod Sharma, Yehoshua Hershberg,
- Constantine Sapuntzakis, Lars Nilsson, Andy Tsouladze, Jamie Lokier
+ Constantine Sapuntzakis, Lars Nilsson, Andy Tsouladze, Jamie Lokier,
+ Vincent Le Normand
Thanks! (and sorry if I forgot to mention someone)
int infilenum;
char *uploadfile=NULL; /* a single file, never a glob */
- int infd = STDIN_FILENO;
- bool infdopen;
- FILE *headerfilep = NULL;
curl_off_t uploadfilesize; /* -1 means unknown */
bool stillflags=TRUE;
/* open file for output: */
if(strcmp(config->headerfile,"-")) {
heads.filename = config->headerfile;
- headerfilep=NULL;
}
else
- headerfilep=stdout;
- heads.stream = headerfilep;
+ heads.stream=stdout;
heads.config = config;
}
for(i = 0;
(url = urls?glob_next_url(urls):(i?NULL:strdup(url)));
i++) {
+ int infd = STDIN_FILENO;
+ bool infdopen;
char *outfile;
struct timeval retrystart;
outfile = outfiles?strdup(outfiles):NULL;
#endif
quit_urls:
- if(headerfilep)
- fclose(headerfilep);
-
if(url)
free(url);
if (easycode)
curl_slist_append(easycode, "curl_easy_cleanup(hnd);");
- if(config->headerfile && !headerfilep && heads.stream)
+ if(heads.stream && (heads.stream != stdout))
fclose(heads.stream);
if(allocuseragent)
test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 \
test1048 test1049 test1050 test1051 test1052 test1053 test1054 test1055 \
test1056 test1057 test1058 test1059 test1060 test1061 test1062 test1063 \
- test1064 test1065
+ test1064 test1065 test1066
filecheck:
@mkdir test-place; \
--- /dev/null
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="1">
+HTTP/1.1 200 OK\r
+Server: thebest/1.0\r
+Content-Type: text/plain\r
+Content-Length: 6\r
+\r
+first
+</data>
+<data1 nocheck="1">
+HTTP/1.1 200 OK\r
+Server: thebest/1.0\r
+Content-Type: text/plain\r
+Content-Length: 7\r
+\r
+second
+</data1>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP --dump-header - with two URLs
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/want/1066 http://%HOSTIP:%HTTPPORT/want/10660001 --dump-header -
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /want/1066 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /want/10660001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+HTTP/1.1 200 OK\r
+HTTP/1.1 200 OK\r
+Server: thebest/1.0\r
+Server: thebest/1.0\r
+Content-Type: text/plain\r
+Content-Type: text/plain\r
+Content-Length: 6\r
+Content-Length: 6\r
+\r
+\r
+first
+HTTP/1.1 200 OK\r
+HTTP/1.1 200 OK\r
+Server: thebest/1.0\r
+Server: thebest/1.0\r
+Content-Type: text/plain\r
+Content-Type: text/plain\r
+Content-Length: 7\r
+Content-Length: 7\r
+\r
+\r
+second
+</stdout>
+</verify>
+</testcase>