5 \___|\___/|_| \_\_____|
9 Changes done to curl and libcurl from 1997 to 2008. The most recent changes are
10 always kept in the CHANGES file.
12 Version 7.19.2 (13 November 2008)
14 Michal Marek (13 Nov 2008)
15 - Fixed a potential data loss in Curl_client_write() when the transfer is
18 Daniel Stenberg (11 Nov 2008)
19 - Rainer Canavan filed bug #2255627
20 (http://curl.haxx.se/bug/view.cgi?id=2255627) which pointed out that a
21 program using libcurl's multi interface to download a HTTPS page with a
22 libcurl built powered by OpenSSL, would easily get silly and instead hand
23 over SSL details as data instead of the actual HTTP headers and body. This
24 happened because libcurl would consider the connection handshake done too
25 early. This problem was introduced at September 22nd 2008 with my fix of the
28 The correct fix is now instead done within the GnuTLS-handling code, as both
29 the OpenSSL and the NSS code already deal with this situation in similar
30 fashion. I added test case 560 in an attempt to verify this fix, but
31 unfortunately it didn't trigger it even before this fix!
33 Yang Tse (11 Nov 2008)
34 - Related with bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535)
35 Daniel Fandrich noticed that curl_addrinfo was also missing in the build
36 process of other four non-configure platforms. Added now.
38 Daniel Fandrich (7 Nov 2008)
39 - The getifaddrs() version of Curl_if2ip() crashed when used on a Linux
40 system with a TEQL load-balancing device configured, which doesn't
41 have an address. Thanks to Adam Sampson for spotting this (bug #2234923).
44 - Merged existing IPv4 and IPv6 Curl_ip2addr functions into a single one
45 which now also takes a protocol address family argument.
47 - Bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535) pointed out a
48 problem with MSVC 6 makefile that caused a build failure. It was noted that
49 the curl_addrinfo.obj reference was missing. I took the opportunity to sort
50 the list in which this was missing. Issue submitted by John Wilkinson.
52 Version 7.19.1 (5 November 2008)
54 Daniel Stenberg (4 Nov 2008)
55 - CURLINFO_FILETIME now works for file:// transfers as well
57 Daniel Stenberg (3 Nov 2008)
58 - Bug #2218480 (http://curl.haxx.se/bug/view.cgi?id=2218480) pointed out a
59 problem with my CURLINFO_PRIMARY_IP fix from October 7th that caused a NULL
60 pointer read. I also took the opportunity to clean up this logic (storing of
61 the connection's IP address) somewhat as we had it stored in two different
62 places and ways previously and they are now unified.
65 - Fix undersized IPv6 address internal buffer. IPv6 address strings longer
66 than 35 characters would be truncated.
68 Daniel Stenberg (2 Nov 2008)
69 - Daniel Johnson reported and fixed:
71 When c-ares isn't enabled, libcurl by default calls getaddrinfo with family
72 set to PF_UNSPEC which causes getaddrinfo to return all available addresses,
73 both IPv4 and IPv6. Libcurl then tries each one until it can connect. If the
74 net connection doesn't support IPv6, libcurl can still fall back to IPv4.
76 However, since c-ares doesn't support PF_UNSPEC, when it's used it defaults
77 to using family=PF_INET6 and therefore only returns IPv6 addresses when AAAA
78 records are available, even if IPv4 addresses are also available. The effect
79 is that since my ISP doesn't do IPv6, libcurl can't connect at all to a site
80 that has AAAA records. It will work if I explicitly use CURL_IPRESOLVE_V4 or
81 --ipv4 with the curl tool. I discovered this when curl would fail to connect
82 to seemingly random sites. It turns out they weren't random, they were sites
85 So now libcurl defaults to PF_INET... until c-ares has been tought to offer
88 Yang Tse (31 Oct 2008)
89 - Tests 558 and 559 are stabilized. These two tests were initially introduced
90 to aid in the location of a seg-fault which was only triggered on non-debug
91 builds done with the icc 9.1 Intel compiler. Test 558 does not trigger the
92 problem, but test 559 does trigger it. As of today, it isn't yet absolutely
93 clear if it is a compiler optimizer issue or a memory corruption one.
95 Yang Tse (30 Oct 2008)
96 - Use our Curl_addrinfo structure definition to handle address info data even
97 when a system addrinfo struct is available. Provide and use a wrapper around
98 systems getaddrinfo function, Curl_getaddrinfo_ex which returns a pointer to
99 a list of dynamically allocated Curl_addrinfo structs.
101 Configure will check freeaddrinfo and getaddrinfo functions and define
102 preprocessor symbols HAVE_FREEADDRINFO and HAVE_GETADDRINFO when appropriate.
104 Daniel Fandrich (29 Oct 2008)
105 - Fixed a bug that caused a few bytes of garbage to be sent after a
106 curl_easy_pause() during a chunky upload. Reported by Steve Roskowski.
108 Daniel Fandrich (28 Oct 2008)
109 - Changed the "resolve" test precheck program to verify that an IPv6 socket
110 can be created before resolving the IPv6 name. In the context of running
111 a test, it doesn't make sense to run an IPv6 test when a host is resolvable
112 but IPv6 isn't usable. This should fix failures of test 1085 on hosts with
113 library and DNS support for IPv6 but where actual use of IPv6 has been
114 administratively disabled.
116 Daniel Fandrich (24 Oct 2008)
117 - Added experimental support for zlib and OpenSSL on Symbian OS.
119 Daniel Fandrich (21 Oct 2008)
120 - Fixed some problems with SFTP range support to fix test cases 634 through
123 Daniel Fandrich (17 Oct 2008)
124 - Fixed a compile error reported by Albert Chin on AIX and IRIX when using
127 Daniel Stenberg (16 Oct 2008)
128 - Igor Novoseltsev added CURLOPT_PROXYUSER and CURLOPT_PROXYPASSWORD that then
129 make CURLOPT_PROXYUSERPWD sort of deprecated. The primary motive for adding
130 these new options is that they have no problems with the colon separator
131 that the CURLOPT_PROXYUSERPWD option does.
133 Daniel Stenberg (15 Oct 2008)
134 - Pascal Terjan filed bug #2154627
135 (http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl
136 uses strcasecmp() in multiple places where it causes failures when the
137 Turkish locale is used. This is because 'i' and 'I' isn't the same letter so
138 strcasecmp() on those letters are different in Turkish than in English (or
139 just about all other languages). I thus introduced a totally new internal
140 function in libcurl (called Curl_raw_equal) for doing case insentive
141 comparisons for english-(ascii?) style strings that thus will make "file"
142 and "FILE" match even if the Turkish locale is selected.
144 Daniel Fandrich (15 Oct 2008)
145 - A <precheck> command is considered to have failed if it returns a non-zero
146 return code. This way, if the precheck command can't be run at all for
147 whatever reason, it's treated as a precheck failure which causes the
150 Daniel Stenberg (15 Oct 2008)
151 - John Wilkinson filed bug #2155496
152 (http://curl.haxx.se/bug/view.cgi?id=2155496) pointing out an error case
153 without a proper human-readable error message. When a read callback returns
154 a too large value (like when trying to return a negative number) it would
155 trigger and the generic error message then makes the proplem slightly
156 different to track down. I've added an error message for this now.
158 Daniel Fandrich (9 Oct 2008)
159 - Fixed the --interface option to work with IPv6 connections on glibc
160 systems supporting getifaddrs(). Also fixed a problem where an IPv6
161 address could be chosen instead of an IPv4 one for --interface when it
162 involved a name lookup.
164 Daniel Fandrich (8 Oct 2008)
165 - Added tests 1082 through 1085 to test symbolic --interface parameters
167 - Added tests 633 through 637 to test the new file range support for SFTP.
168 All but the first test cause an infinite loop or other failure and so
169 are added to DISABLED.
171 Daniel Stenberg (8 Oct 2008)
172 - John Wilkinson filed bug #2152270
173 (http://curl.haxx.se/bug/view.cgi?id=2152270) which identified and fixed a
174 CURLINFO_REDIRECT_URL memory leak and an additional wrong-doing:
176 Any subsequent transfer with a redirect leaks memory, eventually crashing
177 the process potentially.
179 Any subsequent transfer WITHOUT a redirect causes the most recent redirect
180 that DID occur on some previous transfer to still be reported.
182 - Igor Novoseltsev filed bug #2111613
183 (http://curl.haxx.se/bug/view.cgi?id=2111613) that eventually identified a
184 flaw in how the multi_socket interface in some cases missed to call the
185 timeout callback when easy interfaces are removed and added within the same
188 - Igor Novoseltsev brought a patch that introduced two new options to
189 curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of
190 deprecates the good old CURLOPT_USERPWD since they allow applications to set
191 the user name and password independently and perhaps more importantly allow
192 both to contain colon(s) which CURLOPT_USERPWD doesn't fully support.
194 Daniel Fandrich (7 Oct 2008)
195 - Changed the handling of read/write errors in Curl_perform() to allow a
196 a fresh connection to be made in such cases and the request retransmitted.
197 This should fix test case 160. Added test case 1079 in an attempt to
198 test a similar connection dropping scenario, but as a race condition, it's
199 hard to test reliably.
201 - Created test cases 1080 and 1081 to reproduce a problem of
202 CURLINFO_REDIRECT_URL leaking memory and returning incorrect results when
203 two URLs are requested. Reported by vmpdemo in bug #2152270
205 Daniel Stenberg (7 Oct 2008)
206 - Fixed CURLINFO_PRIMARY_IP: When libcurl created a connection to host A then
207 the app re-used the handle to do a connection to host B and then again
208 re-used the handle to host A, it would not update the info with host A's IP
209 address (due to the connection being re-used) but it would instead report
210 the info from host B.
212 Yang Tse (7 Oct 2008)
213 - Added --enable-optimize configure option to enable and disable compiler
214 optimizations to allow decoupled setting from --enable-debug.
216 Yang Tse (2 Oct 2008)
217 - Added --enable-warnings configure option to enable and disable strict
218 compiler warnings to allow decoupled setting from --enable-debug.
220 runtests.pl will now run with picky compiler warnings enabled unless
223 Daniel Fandrich (1 Oct 2008)
224 - "make clean" now cleans out the docs and tests directories, too.
226 Daniel Stenberg (30 Sep 2008)
227 - The libcurl FTP code now returns CURLE_REMOTE_FILE_NOT_FOUND error when SIZE
228 gets a 550 response back for the cases where a download (or NOBODY) is
229 wanted. It still allows a 550 as response if the SIZE is used as part of an
230 upload process (like if resuming an upload is requested and the file isn't
231 there before the upload). I also modified the FTP test server and a few test
232 cases accordingly to match this modified behavior.
234 Daniel Stenberg (29 Sep 2008)
235 - Daniel Egger provided a patch that allows you to disable proxy support in
236 libcurl to somewhat reduce the size of the binary. Run configure
239 Daniel Fandrich (29 Sep 2008)
240 - Moved all signal-based name resolution timeout handling into a single new
241 Curl_resolv_timeout function to reduce coupling.
243 Daniel Stenberg (29 Sep 2008)
244 - Ian Lynagh provided a patch that now makes CURLOPT_RANGE work fine for SFTP
247 - Maxim Ivanov filed bug report #2107803
248 (http://curl.haxx.se/bug/view.cgi?id=2107803) "no CURLINFO_REDIRECT_URL in
249 multi mode" together with a patch that fixed the problem.
251 Daniel Stenberg (25 Sep 2008)
252 - Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest
253 auth code to not behave badly when getting a blank realm with
254 realm="". http://curl.haxx.se/bug/view.cgi?id=2126435
256 Daniel Fandrich (23 Sep 2008)
257 - Make sure not to dereference the wrong UrlState proto union member when
258 switching from one protocol to another in a single request (e.g.
259 redirecting from HTTP to FTP as in test 1055) by resetting
260 state.expect100header before every request.
262 Daniel Stenberg (23 Sep 2008)
263 - Introducing Jamie Lokier's function for date to epoch conversion used in the
264 date parser function. This makes our function less dependent on system-
265 provided functions and instead we do all the magic ourselves. We also no
266 longer depend on the TZ environment variable. Switching to our own converter
267 has some side-effect and they are noted here for future reference (taken
268 from a mail by mr Lokier):
270 time_t is not measured in seconds in the ANSI C standard - or even counted
271 uniformly - weird platforms can use other numeric representations of dates
272 in time_t - hence the difftime() function.
274 On POSIX time_t is measured in UTC seconds, which means not including leap
275 seconds. But it's mentioned in a few places that some old POSIX-ish
276 environments include leap seconds in their time_t counts...
278 I'm pretty sure [the new implementation is] correct on anything truly POSIX.
279 And it's obviously a lot less dependent on platform quirks and corner cases
280 in many ways than the mktime() version.
282 - Rob Crittenden brought a patch to "add some locking for thread-safety to NSS
285 Daniel Stenberg (22 Sep 2008)
286 - Made the SOCKS code use the new Curl_read_plain() function to fix the bug
287 Markus Moeller reported: http://curl.haxx.se/mail/archive-2008-09/0016.html
289 - recv() errors other than those equal to EAGAIN now cause proper
290 CURLE_RECV_ERROR to get returned. This made test case 160 fail so I've now
291 disabled it until we can figure out another way to exercise that logic.
293 - Michael Goffioul filed bug report #2107377 "Problem with multi + GnuTLS +
294 proxy" (http://curl.haxx.se/bug/view.cgi?id=2107377) that showed how a multi
295 interface using program didn't work when built with GnuTLS and a CONNECT
296 request was done over a proxy (basically test 502 over a proxy to a HTTPS
297 site). It turned out the ssl connect function would get called twice which
298 caused the second call to fail.
300 Daniel Fandrich (22 Sep 2008)
301 - Fixed test 539 to handle an out of memory condition that shows up now
302 that memdebug.h is included in the test programs.
304 Yang Tse (20 Sep 2008)
305 - Fix regression in configure script which affected OpenSSL builds on MSYS.
307 Yang Tse (19 Sep 2008)
308 - configure script now checks availability of the alarm() function.
310 Daniel Fandrich (18 Sep 2008)
311 - Don't bother to install a SIGALRM handler unless alarm() is available.
312 Also, leave the existing SIGALRM handler alone if the timeout is too small
315 Daniel Fandrich (17 Sep 2008)
316 - Removed reference to curl-ca-bundle.crt in the host verification failure
319 Yang Tse (17 Sep 2008)
320 - Improve configure detection of gethostname(), localtime_r(), strstr(),
321 getservbyport_r(), gethostbyaddr_r() and gethostbyname_r().
323 Yang Tse (14 Sep 2008)
324 - Improve configure detection of strcasecmp(), strcasestr(), strcmpi(),
325 stricmp(), strlcat(), strncasecmp(), strncmpi() and strnicmp().
327 Yang Tse (13 Sep 2008)
328 - Disable tracking of fdopen() calls in the low-level memory leak tracking
329 code when fdopen() is not available, to avoid compiler error.
331 Yang Tse (12 Sep 2008)
332 - Further adjust detection of strerror_r() in the configure process, and
333 ensure that errno is not modified inside Curl_strerror().
335 Yang Tse (10 Sep 2008)
336 - Improve detection of gmtime_r(), strtoll(), sigaction(), strtok_r(),
337 strdup() and ftruncate() in the configure process.
339 Daniel Fandrich (9 Sep 2008)
340 - Mike Revi discovered some swapped speed switches documented in the curl man
343 - Checked in some documentation and code improvements and fixes that I
344 discovered in the FreeBSD ports system.
346 Daniel Stenberg (8 Sep 2008)
347 - Dmitry Kurochkin patched a problem: I have found bug in pipelining through
348 proxy. I have a transparent proxy. When running with http_proxy environment
349 variable not set my test completes fine (it goes through transparent
350 proxy). When I set http_proxy variable my test hangs after the first
351 downloaded is complete. Looks like the second handle never gets out from
354 The fix: It makes checkPendPipeline move 1 handler from pend pipe to send
355 pipe if pipelining is not supported by server but there are no handles in
358 - Stefan Krause pointed out that libcurl would wrongly send away cookies to
359 sites in cases where the cookie clearly has a very old expiry date. The
360 condition was simply that libcurl's date parser would fail to convert the
361 date and it would then count as a (timed-based) match. Starting now, a
362 missed date due to an unsupported date format or date range will now cause
363 the cookie to not match.
365 Daniel Fandrich (5 Sep 2008)
366 - Improved the logic that decides whether to use HTTP 1.1 features or not in a
367 request. Setting a specific version with CURLOPT_HTTP_VERSION overrides
368 all other checks, but otherwise, a 1.0 request will be made if the server
369 is known to support only 1.0 because it previously responded so and the
370 connection was kept alive, or a response to a previous request on this handle
371 came back as 1.0. The latter could take place in cases like redirection or
372 authentication where several requests have to be made before the operation
373 is complete. If any one of the servers in a redirection chain supports only
374 1.0, then remaining requests will be sent in 1.0 mode.
376 - Detect cases where an upload must be sent chunked and the server supports
377 only HTTP 1.0 and return CURLE_UPLOAD_FAILED.
379 Daniel Stenberg (5 Sep 2008)
380 - Martin Drasar provided the CURLOPT_POSTREDIR patch. It renames
381 CURLOPT_POST301 (but adds a define for backwards compatibility for you who
382 don't define CURL_NO_OLDIES). This option allows you to now also change the
383 libcurl behavior for a HTTP response 302 after a POST to not use GET in the
384 subsequent request (when CURLOPT_FOLLOWLOCATION is enabled). I edited the
385 patch somewhat before commit. The curl tool got a matching --post302
386 option. Test case 1076 was added to verify this.
388 - Introducing CURLOPT_CERTINFO and the corresponding CURLINFO_CERTINFO. By
389 enabling this feature with CURLOPT_CERTINFO for a request using SSL (HTTPS
390 or FTPS), libcurl will gather lots of server certificate info and that info
391 can then get extracted by a client after the request has completed with
392 curl_easy_getinfo()'s CURLINFO_CERTINFO option. Linus Nielsen Feltzing
393 helped me test and smoothen out this feature.
395 Unfortunately, this feature currently only works with libcurl built to use
398 This feature was sponsored by networking4all.com - thanks!
400 - Dmitriy Sergeyev pointed out that curl_easy_pause() didn't unpause properly
401 during certain conditions. I also changed this code to use realloc() based
402 on Daniel Fandrich's suggestion.
404 Guenter Knauf (4 Sep 2008)
405 - MingW32 non-configure builds are now largefile feature enabled by default.
406 NetWare LIBC builds are also now largefile feature enabled by default.
408 Yang Tse (4 Sep 2008)
409 - Several fixes related with print formatting string directives.
411 Daniel Fandrich (3 Sep 2008)
412 - Search for the FreeBSD CA cert file /usr/local/share/certs/ca-root.crt
414 Daniel Fandrich (2 Sep 2008)
415 - Fixed an out of memory problem that caused torture test failures in tests
418 Daniel Stenberg (2 Sep 2008)
419 - Keith Mok added supported_protocols and supported_features to the pkg-config
420 file for libcurl, and while doing that fix he unified with curl-config.in
421 how the supported protocols and features are extracted and used, so both those
422 tools should now always be synced.
424 Version 7.19.0 (1 September 2008)
426 Daniel Fandrich (29 Aug 2008)
427 - Added tests 1071 through 1074 to test automatic downgrading from HTTP 1.1
428 to HTTP 1.0 upon receiving a response from the HTTP server. Tests 1072
429 and 1073 are similar to test 1069 in that they involve the impossible
430 scenario of sending chunked data to a HTTP 1.0 server. All these fail
431 and are added to DISABLED.
433 - Added test 1075 to test --anyauth with Basic authentication.
435 Daniel Stenberg (29 Aug 2008)
436 - When libcurl was doing a HTTP POST and the server would respond with
437 "Connection: close" and actually close the connection after the
438 response-body, libcurl could still have outstanding data to send and it
439 would not properly notice this and stop sending. This caused weirdness and
440 sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222
442 Note that there are still reasons to consider libcurl's behavior when
443 getting a >= 400 response code while sending data, as Craig Perras' note
444 "http upload: how to stop on error" specifies:
445 http://curl.haxx.se/mail/archive-2008-08/0138.html
447 Daniel Stenberg (28 Aug 2008)
448 - Dengminwen reported that libcurl would lock a (cookie) share twice (without
449 an unlock in between) for a certain case and that in fact works when using
450 regular windows mutexes but not with pthreads'! Locks should of course not
451 get locked again so this is now fixed.
452 http://curl.haxx.se/mail/lib-2008-08/0422.html
454 - I'm abandoning the system with the web site mirrors (but keeping download
455 files bing mirrored) and thus I've changed the URL in the cookiejar header
456 to no longer use curlm.haxx.se but instead use the main site curl.haxx.se
458 Daniel Fandrich (27 Aug 2008)
459 - Fixed test case 1065 by changing the handling of CURLOPT_UPLOAD to set
460 the HTTP method to GET (or HEAD) when given a value of 0.
462 - Added test cases 1068 and 1069 to test a simple HTTP PUT from stdin. Test
463 case 1069 fails in a similar manner to test 1065 so is added to DISABLED.
465 Yang Tse (27 Aug 2008)
466 - Fix generation of MS VC6 .dsp file to make it support compilation of either
467 dynamic (DLL) or static (LIB) libcurl libraries in debug and release modes.
469 Daniel Fandrich (26 Aug 2008)
470 - Fixed out of memory problems that caused torture test failures in tests
473 Yang Tse (26 Aug 2008)
474 - Added check and symbol definition for WIN32 file API usage in configure,
475 supporting configure's --disable-largefile option for WIN32 targets also.
477 - Non-configure systems which do not use config-win32.h configuration file,
478 and want to use the WIN32 file API, must define USE_WIN32_LARGE_FILES or
479 USE_WIN32_SMALL_FILES as appropriate in their own configuration files.
481 Daniel Stenberg (23 Aug 2008)
482 - Running 'make ca-firefox' in the root build dir will now run the new
483 firefox-db2pem.sh conversion script that converts a local Firefox db of ca
484 certs into PEM format, suitable for use with a OpenSSL or GnuTLS built
487 - Constantine Sapuntzakis fixed a bug when doing proxy CONNECT with the multi
488 interface, and the proxy would send Connection: close during the
489 authentication phase. http://curl.haxx.se/bug/view.cgi?id=2069047
491 Daniel Fandrich (22 Aug 2008)
492 - Fixed a problem when --dump-header - was given with more than one URL,
493 which caused an error when the second header was dumped due to stdout
494 being closed. Added test case 1066 to verify. Also fixed a potential
495 problem where a closed file descriptor might be used for an upload
496 when more than one URL is given.
498 Yang Tse (22 Aug 2008)
499 - Improved libcurl's internal curl_m*printf() functions integral data type
500 size and signedness handling.
502 - Internal adjustments to better select/differentiate when large/small file
503 support is provided using WIN32 functions directly.
505 Daniel Fandrich (20 Aug 2008)
506 - Added an edited version of Vincent Le Normand's documentation of SFTP quote
507 commands to the man pages.
509 Daniel Stenberg (20 Aug 2008)
510 - Phil Pellouchoud pointed out that the windows version of libcurl had a
511 memory leak because it never called the OpenSSL function
512 CRYPTO_cleanup_all_ex_data() as it was supposed to. This was because of a
513 missing define in config-win32.h!
515 Gisle Vanem (18 Aug 2008)
516 - Updated lib/Makefile.Watcom with the option to use c-ares (USE_ARES=1).
518 Yang Tse (18 Aug 2008)
519 - Added test case 557 to verify libcurl's internal curl_m*printf() functions
520 formatting functionality when handling signed and unsigned longs, as well as
521 our curl_off_t data type.
523 Yang Tse (17 Aug 2008)
524 - OpenSSl enabled NetWare builds are changed to use the 'openssl' subdirectory
525 when including the OpenSSL header files. This is the recommended setting, this
526 prevents the undesired inclusion of header files with the same name as those
527 of OpenSSL but which do not belong to the OpenSSL package. The visible change
528 from previously released libcurl versions is that now OpenSSl enabled NetWare
529 builds also define USE_OPENSSL in config files, and that OpenSSL header files
530 must be located in a subdirectory named 'openssl'.
532 Yang Tse (16 Aug 2008)
533 - Library internal only C preprocessor macros FORMAT_OFF_T and FORMAT_OFF_TU
534 remain in use as internal curl_off_t print formatting strings for the internal
535 *printf functions which still cannot handle print formatting string directives
536 such as "I64d", "I64u", and others available on MSVC, MinGW, Intel's ICC, and
537 other DOS/Windows compilers.
539 Daniel Fandrich (15 Aug 2008)
540 - Added test case 1063 to test invalid long file ranges with file: URLs and
541 1064 to test multiple http PUTs.
543 - Added test case 1065 to test a PUT with a single file but two URLs. This
544 was discovered to be problematic while investigating an incident reported by
545 Von back in May. curl in this case doesn't include a Content-Length: or
546 Transfer-Encoding: chunked header which is illegal. This test case is
547 added to DISABLED until a solution is found.
549 Yang Tse (15 Aug 2008)
550 - C preprocessor macros used internally and equally available externally which
551 aid in the use of the curl_off_t data type are named: CURL_FORMAT_CURL_OFF_T,
552 CURL_FORMAT_CURL_OFF_TU, CURL_SIZEOF_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_T,
553 CURL_SUFFIX_CURL_OFF_TU, CURL_OFF_T_C and CURL_OFF_TU_C.
555 Yang Tse (13 Aug 2008)
556 - The size of long is a build time characteristic and as such it is now recorded
557 in curlbuild.h as CURL_SIZEOF_LONG. Definition now done from configure process
558 and in CVS curlbuild.h.dist for non-configure systems.
560 Daniel Fandrich (12 Aug 2008)
561 - Fixed a buffer overflow problem in Curl_proxyCONNECT that could occur
562 when a server responded with long headers and data. Luckily, the buffer
563 overflowed into another unused buffer, so no actual harm was done.
564 Added test cases 1060 and 1061 to verify.
566 Daniel Stenberg (12 Aug 2008)
567 - Andy Tsouladze fixed runtests.pl to not attempt to execute the stunnel
568 _directory_ if that happened to appear in the path!
570 Yang Tse (12 Aug 2008)
571 - Added macros for minimum-width signed and unsigned curl_off_t integer
572 constants CURL_OFF_T_C and CURL_OFF_TU_C. The clever double helper macro
573 used internally to provide its functionality is thanks to Lars Nilsson.
575 Daniel Fandrich (11 Aug 2008)
576 - Fixed a boundary condition error in ftp_readresp() whereby a non-terminal
577 line of a multiline FTP response whose last byte landed exactly at the end
578 of the BUFSIZE-length buffer would be treated as the terminal response
579 line. The following response code read in would then actually be the
580 end of the previous response line, and all responses from then on would
581 correspond to the wrong command. Test case 1062 verifies this.
583 - Stop closing a never-opened ftp socket.
585 Daniel Stenberg (11 Aug 2008)
586 - Constantine Sapuntzakis filed bug report #2042430
587 (http://curl.haxx.se/bug/view.cgi?id=2042430) with a patch. "NTLM Windows
588 SSPI code is not thread safe". This was due to libcurl using static
589 variables to tell wether to load the necessary SSPI DLL, but now the loading
590 has been moved to the more suitable curl_global_init() call.
592 - Constantine Sapuntzakis filed bug report #2042440
593 (http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
594 problem when using NTLM over a proxy but the end-point does Basic, and then
595 libcurl would do wrong when the host sent "Connection: close" as the proxy's
596 NTLM state was erroneously cleared.
598 Yang Tse (11 Aug 2008)
599 - Added missing signed and unsigned curl_off_t integer constant suffixes for
600 internal and external use. CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU.
602 Daniel Fandrich (7 Aug 2008)
603 - Fixed an uninitialized variable in multi_runsingle() that could cause a
604 request to prematurely end.
606 - Added test1059 to test the FTP proxy tunnel problem fixed July 11.
608 Yang Tse (7 Aug 2008)
609 - Added curlbuild.h and curlrules.h header files to libcurl's public headers.
610 File curlbuild.h is a generated file on configure-capable systems. This is
611 a first step towards configure-based info in public headers. Currently only
612 used to provide support for a curl_off_t data type which is not gated to
613 off_t. Further details are documented inside these mentioned header files.
615 - Fix CURL_CHECK_DEF so that when the expansion of the preprocessor symbol
616 results in a set of double-quoted strings, this macro will now return an
617 expansion which consists of a single double-quoted string as the result of
618 concatenating all of them.
620 - Skip data type check in DO_CURL_OFF_T_CHECK macro when argument is empty.
622 - Adjusted testcurl.pl to copy checked out curlbuild.h.dist as curlbuild.h
623 for non-configure targets when the host system doesn't run buildconf.bat.
625 - Prevent buildconf from removing 'Makefile' and 'missing' files. This would
626 blow away our CVS checked files 'missing' and 'hiper/Makefile'.
628 - Remove adjustment done to testcurl.pl to verify if change introduced by
629 Guenter Knauf in lib/Makefile.netware is enough to get the netware autobuilds
632 Yang Tse (5 Aug 2008)
633 - Changes done to buildconf script. Validate that autom4te and autoconf, as
634 well as aclocal and automake, versions match. Improve removal of previous
635 run generated files. Remove verbose debug logging of aclocal on Solaris.
637 Daniel Stenberg (5 Aug 2008)
638 - Yehoshua Hershberg found a problem that would make libcurl re-use a
639 connection with the multi interface even if a previous use of it caused a
640 CURLE_PEER_FAILED_VERIFICATION to get returned. I now make sure that failed
641 SSL connections properly close the connections.
643 Daniel Stenberg (4 Aug 2008)
644 - Test cases 1051, 1052 and 1055 were added by Daniel Fandrich on July 30 and
645 proved how PUT and POST with a redirect could lead to a "hang" due to the
646 data stream not being rewound properly when it had to in order to get sent
647 properly (again) to the subsequent URL. This is now fixed and these test
648 cases are no longer disabled.
650 Yang Tse (4 Aug 2008)
651 - Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
652 Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
653 version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
654 no matter if the system is AIX or not. To keep the traditional behaviour,
655 and an uniform one across autoconf versions AC_AIX is replaced with our
656 own internal macro CURL_CHECK_AIX_ALL_SOURCE.
658 Daniel Stenberg (4 Aug 2008)
659 - Test case 1041 (added by Daniel Fandrich July 14th) proved a bug where PUT
660 with -C - sent garbage in the Content-Range: header. I fixed this problem by
661 making sure libcurl always sets the size of the _entire_ upload if an app
662 attemps to do resumed uploads since libcurl simply cannot know the size of
663 what is currently at the server end. Test 1041 is no longer disabled.
665 Yang Tse (2 Aug 2008)
666 - No longer test availability of the gdi32 library, nor use it for linking, even
667 when we have been doing this since revision 1.47 of configure.ac 4 years and
668 5 months ago when cross-compiling a Windows target. We actually don't use any
669 function from the Windows GDI (Graphics Device Interface) related with drawing
670 or graphics-related operations.
672 Daniel Fandrich (1 Aug 2008)
673 - Added support for --append on SFTP uploads. Unfortunately, OpenSSH doesn't
674 support this so it goes untested.
676 Yang Tse (1 Aug 2008)
677 - Configure process now checks if the preprocessor _REENTRANT symbol is already
678 defined. If it isn't currently defined a set of checks are performed to test
679 if its definition is required to make visible to the compiler a set of *_r
680 functions. Finally, if _REENTRANT is already defined or needed it takes care
681 of making adjustments necessary to ensure that it is defined equally for the
682 configure process tests and generated config file.
684 - Removed definition of CURL_CHECK_WORKING_RESOLVER from acinclude.m4 it has
685 not been in use since revision 1.81 of configure.in 6 years, 9 months ago.
687 Daniel Fandrich (31 Jul 2008)
688 - Fixed parsing of an IPv6 proxy address to support a scope identifier,
689 as well as IPv4 addresses in IPv6 format. Also, better handle the case
690 of a malformatted IPv6 address (avoid empty and NULL strings).
692 - Fixed a problem with any FTP URL or any URLs containing an IPv6 address
693 being mangled when passed to proxies when CURLOPT_PORT is also set
694 (reported by Pramod Sharma).
696 - User names embedded in proxy URLs without a password were parsed
697 incorrectly--the host name is treated as part of the user name and the
698 port number becomes the password. This can be observed in test 279
699 (was KNOWN_ISSUE #54).
701 Daniel Stenberg (30 Jul 2008)
702 - Phil Blundell added the CURLOPT_ADDRESS_SCOPE option, as well as adjusted
703 the URL parser to allow numerical IPv6-addresses to be specified with the
704 scope given, as per RFC4007 - with a percent letter that itself needs to be
705 URL escaped. For example, for an address of fe80::1234%1 the HTTP URL is:
706 "http://[fe80::1234%251]/"
708 - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies a
709 true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
710 less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
711 would set it to something non-zero would return before the assign in almost
712 all error cases. The internal variable is now set to non-zero from the start
713 of the function only to get cleared later on if things work out fine.
715 - Made the curl tool's -w option support the %{ssl_verify_result} variable
717 Daniel Fandrich (30 Jul 2008)
718 - Added test cases 1052 through 1055 to test uploading data from files
719 during redirects. Test cases 1052 and 1055 show problems (maybe the same
720 root cause as 1051) and are disabled.
722 - Fixed a couple of buffer overflows in the MS-DOS port of the curl tool.
724 Daniel Fandrich (29 Jul 2008)
725 - Fixed --use-ascii to properly convert text files on Symbian OS, MS-DOS
728 - Added test case 1051 to test Location: following with PUT, as reported
729 by Ben Sutcliffe. The test when run manually shows a problem in curl
732 Daniel Fandrich (28 Jul 2008)
733 - Fixed display of the interface bind address in the trace output when it's
736 - Added test cases 1045 through 1049 as simple tests of --interface using the
739 - Added test case 1050 to test --ftp-port with an IPv6 address
741 Daniel Stenberg (26 Jul 2008)
742 - David Bau filed bug report #2026240 "CURL_READFUNC_PAUSE leads to buffer
743 overrun" (http://curl.haxx.se/bug/view.cgi?id=2026240) identifying two
744 problems, and providing the fix for them:
746 - CURL_READFUNC_PAUSE did in fact not pause the _sending_ of data that it is
747 designed for but paused _receiving_ of data!
749 - libcurl didn't internally set the read counter to zero when this return
750 code was detected, which would potentially lead to junk getting sent to
753 Daniel Fandrich (26 Jul 2008)
754 - Added test 1044 to test large file support in ftp with -I.
756 - Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4
757 address in an IPv6 capable libcurl.
759 - Added feature in runtests.pl to select tests based on key word.
761 Daniel Fandrich (23 Jul 2008)
762 - Changed the long logfile elision code in runtests.pl to properly handle
765 - Changed references to TRUE and FALSE in the curl_easy_setopt man page to
766 1 and zero, respectively, since TRUE and FALSE aren't part of the
769 Daniel Stenberg (23 Jul 2008)
770 - I went over the curl_easy_setopt man page and replaced most references to
771 non-zero with the fixed value of 1. We should strive at making options
772 support '1' for enabling them mentioned explicitly, as that then will allow
773 us for to extend them in the future without breaking older programs.
775 Possibly we should even introduce a fancy define to use instead of '1' all
778 Yang Tse (21 Jul 2008)
779 - Use the sreadfrom() wrapper to replace recvfrom() in our code.
781 Yang Tse (20 Jul 2008)
782 - when recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
783 now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
784 RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
786 Yang Tse (17 Jul 2008)
787 - RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
788 to the data type pointed by its respective argument and not the pointer type.
790 Yang Tse (16 Jul 2008)
791 - Configure process now checks availability of recvfrom() socket function and
792 finds out its return type and the types of its arguments. Added definitions
793 for non-configure systems config files, and introduced macro sreadfrom which
794 will be used on udp sockets as a recvfrom() wrapper.
796 Yang Tse (15 Jul 2008)
797 - Added description/comment to include paths used in several Makefile.am files.
798 Added automake option nostdinc to test servers makefile and modified libcurl
799 external headers include path for libtest programs.
801 Daniel Fandrich (14 Jul 2008)
802 - Added test1040 through test1043 to test -C - on HTTP. Test 1041 failed so
803 it's added to DISABLED.
805 Yang Tse (14 Jul 2008)
806 - HTTP_ONLY definition check in lib/setup.h is now done once that configuration
807 file has been included. In this way if symbol is defined in the config file
808 it will no longer be ignored. Removed inclusion of remaining system header
809 files from configuration files. Moved _REENTRANT definition up/earlier in
812 Yang Tse (11 Jul 2008)
813 - Added missing multiple header inclusion prevention definition for header
814 file content_encoding.h
816 Daniel Fandrich (11 Jul 2008)
817 - Fixed test 553 to pass the torture test.
819 Daniel Stenberg (11 Jul 2008)
820 - Daniel Fandrich found out we didn't pass on the user-agent properly when
821 doing "proxy-tunnels" with non-HTTP prototols and that was simply because
822 the code assumed the user-agent was only needed for HTTP.
824 Daniel Fandrich (10 Jul 2008)
825 - Changed slightly the SFTP quote commands chmod, chown and chgrp to only
826 set the attribute that has changed instead of all possible ones. Hopefully,
827 this will solve the "Permission denied" problem that Nagarajan Sreenivasan
828 reported when setting some modes, but regardless, it saves a protocol
829 round trip in the chmod case.
831 - Added test cases 1038 and 1039 to test Adrian Kreher's report that ftp
832 uploads with -C - didn't resume properly, but the tests pass.
834 Yang Tse (10 Jul 2008)
835 - Peter Lamberg filed bug report #2015126: "poll gives WSAEINVAL when POLLPRI
836 is set in fdset.events" (http://curl.haxx.se/bug/view.cgi?id=2015126) which
837 exactly pinpointed the problem only triggered on Windows Vista, provided
838 reference to docs and also a fix. There is much work behind Peter Lamberg's
839 excellent bug report. Thank You!
841 Daniel Fandrich (9 Jul 2008)
842 - Added tests 1036 and 1037 to verify resumed ftp downloads with -C -
844 Daniel Stenberg (9 Jul 2008)
845 - Andreas Schuldei improved Phil Blundell's patch for IPv6 using c-ares, and I
846 edited it slightly. Now you should be able to use IPv6 addresses fine even
847 with libcurl built to use c-ares.
849 Daniel Fandrich (9 Jul 2008)
850 - Fixed an OOM handling problem that cause test 11 to fail the torture test.
852 Daniel Fandrich (8 Jul 2008)
853 - Fixed test 554 to pass the torture test.
855 Daniel Fandrich (7 Jul 2008)
856 - Added test cases 1034 & 1035 to test IDN name conversion failures.
858 Daniel Stenberg (7 Jul 2008)
859 - Scott Barrett provided a test case for a segfault in the FTP code and the
860 fix for it. It occured when you did a FTP transfer using
861 CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
862 switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
863 cleared properly. Scott's test case is now known as test 539 and it
866 Daniel Stenberg (3 Jul 2008)
867 - Phil Blundell provided a fix for libcurl's treatment of unexpected 1xx
868 response codes. Previously libcurl would hang on such occurances. I added
869 test case 1033 to verify.
871 - Introcuding a new timestamp for curl_easy_getinfo():
872 CURLINFO_APPCONNECT_TIME. This is set with the "application layer"
873 handshake/connection is completed. Which typically is SSL, TLS or SSH and by
874 using this you can figure out the application layer's own connect time. You
875 can extract the time stamp using curl's -w option and the new variable named
876 'time_appconnect'. This feature was sponsored by Lenny Rachitsky at NeuStar.
878 Daniel Fandrich (2 Jul 2008)
879 - Support Open Watcom C on Linux (as well as Windows).
881 Yang Tse (2 Jul 2008)
882 - The previously committed fix for bug report #1999181 prevented using the
883 monotonic clock on any system without an always supported POSIX compliant
884 implementation. Now the POSIX compliant configuration check is removed and
885 will fallback to gettimeofday when the monotonic clock is unavailable at
888 - The configure process will now halt when sed, grep, egrep or ar programs
889 can not be found among the directories in PATH variable.
891 Daniel Stenberg (1 Jul 2008)
892 - Rolland Dudemaine provided fixes to get libcurl to build for the INTEGRITY
895 Daniel Stenberg (30 Jun 2008)
896 - Made the internal printf() support %llu properly to print unsigned long longs.
898 - Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
899 which output the range using a signed variable where it should rather use
902 Yang Tse (29 Jun 2008)
903 - John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
904 some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
905 that the configure script did not use the _POSIX_MONOTONIC_CLOCK feature test
906 macro when checking monotonic clock availability. This is now fixed and the
907 monotonic clock will not be used unless the feature test macro is defined
908 with a value greater than zero indicating always supported.
910 Daniel Fandrich (25 Jun 2008)
911 - Honour --stderr with the -v option.
913 - Fixed a file handle leak in the command line client if more than one
914 --stderr option was given.
916 Daniel Stenberg (22 Jun 2008)
917 - Eduard Bloch filed the debian bug report #487567
918 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487567) pointing out that
919 libcurl used Content-Range: instead of Range when doing a range request with
920 --head (CURLOPT_NOBODY). This is now fixed and test case 1032 was added to
923 Daniel Fandrich (21 Jun 2008)
924 - Stopped using ranges in scanf character sequences (e.g. %[a-z]) since that
925 is not ANSI C, just a common extension. This caused problems on
926 at least Open Watcom C.
928 Yang Tse (20 Jun 2008)
929 - Modified configuration script to actually verify if the compiler is good
930 enough at detecting compilation errors or at least it has been properly
931 configured to do so. Configuration heavily depends on this capability, so
932 if this compiler sanity check fails the configuration process will now fail.
934 Daniel Stenberg (20 Jun 2008)
935 - Phil Pellouchoud found a case where libcurl built with NSS failed to
936 handshake with a SSLv2 server, and it turned out to be because it didn't
937 recognize the cipher named "rc4-md5". In our list that cipher was named
938 plainly "rc4". I've now added rc4-md5 to work as an alias as Phil reported
939 that it made things work for him again.
941 - Hans-Jurgen May pointed out that trying SCP or SFTP over a SOCKS proxy
942 crashed libcurl. This is now addressed by making sure we use "plain send"
943 internally when doing the socks handshake instead of the Curl_write()
944 function which is designed to use the "target" protocol. That's then SCP or
945 SFTP in this case. I also took the opportunity and cleaned up some ssh-
946 related #ifdefs in the code for readability.
948 Daniel Stenberg (19 Jun 2008)
949 - Christopher Palow fixed a curl_multi_socket() issue which previously caused
950 libcurl to not tell the app properly when a socket was closed (when the name
951 resolve done by c-ares is completed) and then immediately re-created and put
952 to use again (for the actual connection). Since the closure will make the
953 "watch status" get lost in several event-based systems libcurl will need to
954 tell the app about this close/re-create case.
956 - Dengminwen found a bug in the connection re-use function when using the
957 multi interface with pipelining enabled as it would wrongly check for,
958 detect and close "dead connections" even though that connection was already
961 Daniel Fandrich (18 Jun 2008)
962 - Added SSH failure test cases 628-632
964 - Fixed a memory leak in the command-line tool that caused a valgrind error.
966 Daniel Stenberg (18 Jun 2008)
967 - Rob Crittenden brought a fix for the NSS layer that makes libcurl no longer
968 always fire up a new connection rather than using the existing one when the
969 multi interface is used. Original bug report:
970 https://bugzilla.redhat.com/show_bug.cgi?id=450140
972 Yang Tse (18 Jun 2008)
973 - Internal configure script improvement. No longer break out of shell "for"
974 statements from inside AC_FOO_IFELSE macros, otherwise temporary macro files
975 are not properly removed.
977 Daniel Fandrich (12 Jun 2008)
978 - Fixed curl-config --ca which wasn't being exported by configure.
980 Daniel Stenberg (11 Jun 2008)
981 - I did a cleanup of the internal generic SSL layer and how the various SSL
982 libraries are supported. Starting now, each underlying SSL library support
983 code does a set of defines for the 16 functions the generic layer (sslgen.c)
984 uses (all these new function defines use the prefix "curlssl_"). This
985 greatly simplified the generic layer in readability by involving much less
986 #ifdefs and other preprocessor stuff and should make it easier for people to
987 make libcurl work with new SSL libraries.
989 Hopefully I can later on document these 16 functions somewhat as well.
991 I also made most of the internal SSL-dependent functions (using Curl_ssl_
992 prefix) #defined to nothing when no SSL support is requested - previously
993 they would unnecessarily call mostly empty functions.
995 I've built libcurl with OpenSSL and GnuTLS and without SSL to test this and
996 I've also tried building with NSS but the NSS support is a mystery to me and
997 I failed to build libcurl with the NSS libraries I have installed. We really
998 should A) improve our configure script to detect unsuitable NSS versions
999 already at configure time and B) document our requirements better for the
1002 Daniel Stenberg (10 Jun 2008)
1003 - I made the OpenSSL code build again with OpenSSL 0.9.6. The CRLFILE
1004 functionality killed it due to its unconditional use of
1005 X509_STORE_set_flags...
1007 Daniel Stenberg (8 Jun 2008)
1008 - Due to the three new libcurl changes and the massive command line option
1009 change I decided we'll mark it by bumping the next release number to 7.19.0!
1011 - curl the tool now deals with its command line options somewhat differently!
1012 All boolean options (such as -O, -I, -v etc), both short and long versions,
1013 now always switch on/enable the option named. Using the same option multiple
1014 times thus make no difference. To switch off one of those options, you need
1015 to use the long version of the option and type --no-OPTION. Like to disable
1016 verbose mode you use --no-verbose!
1018 - Added --remote-name-all to curl, which if used changes the default for all
1019 given URLs to be dealt with as if -O is used. So if you want to disable that
1020 for a specific URL after --remote-name-all has been used, you muse use -o -
1021 or --no-remote-name.
1023 Daniel Stenberg (6 Jun 2008)
1024 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, for
1025 OpenSSL, NSS and GnuTLS-built libcurls.
1027 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_CRLFILE, for
1028 OpenSSL, NSS and GnuTLS-built libcurls.
1030 - Added CURLINFO_PRIMARY_IP as a new information retrievable with
1031 curl_easy_getinfo. It returns a pointer to a string with the most recently
1032 used IP address. Modified test case 500 to also verify this feature. The
1033 implementing of this feature was sponsored by Lenny Rachitsky at NeuStar.
1035 Version 7.18.2 (4 June 2008)
1037 Daniel Fandrich (3 Jun 2008)
1038 - Fixed a problem where telnet data would be lost if an EWOULDBLOCK
1039 condition were encountered.
1041 Marty Kuhrt (1 Jun 2008)
1042 - Updated main.c to return CURLE_OK if PARAM_HELP_REQUESTED was returned
1043 from getparameter instead of CURLE_FAILED_INIT. No point in returning
1044 an error if --help or --version were requested.
1046 Daniel Stenberg (28 May 2008)
1047 - Emil Romanus found a problem and helped me repeat it. It occured when using
1048 the curl_multi_socket() API with HTTP pipelining enabled and could lead to
1049 the pipeline basically stalling for a very long period of time until it took
1052 - Jeff Weber reported memory leaks with aborted SCP and SFTP transfers and
1053 provided excellent repeat recipes. I fixed the cases I managed to reproduce
1054 but Jeff still got some (SCP) problems even after these fixes:
1055 http://curl.haxx.se/mail/lib-2008-05/0342.html
1057 Daniel Stenberg (26 May 2008)
1058 - Bug report #1973352 (http://curl.haxx.se/bug/view.cgi?id=1973352) identified
1059 how the HTTP redirect following code didn't properly follow to a new URL if
1060 the new url was but a query string such as "Location: ?moo=foo". Test case
1061 1031 was added to verify this fix.
1063 - Andreas Faerber and Scott McCreary made (lib)curl build for the Haiku OS.
1065 Yang Tse (26 May 2008)
1066 - David Rosenstrauch reported that header files spnegohelp.h and
1067 openssl/objects.h were needed to compile SPNEGO support.
1069 Daniel Fandrich (22 May 2008)
1070 - Made sure to pass longs in to curl_easy_setopt where necessary in the
1071 example programs and libtest code.
1073 Daniel Stenberg (19 May 2008)
1074 - When trying to repeat a multi interface problem I fell over a few multi
1077 o with pipelining disabled, the state should never be set to WAITDO but
1078 rather go straight to DO
1080 o we had multiple states for which the internal function returned no socket
1081 at all to wait for, with the effect that libcurl calls the socket callback
1082 (when curl_multi_socket() is used) with REMOVE prematurely (as it would be
1083 added again within very shortly)
1085 o when in DO and DOING states, the HTTP and HTTPS protocol handler functions
1086 didn't return that the socket should be waited for writing, but instead it
1087 was treated as if no socket was needing monitoring so again REMOVE was
1090 Daniel Stenberg (13 May 2008)
1091 - Added test case 556 that uses curl_easy_send() and curl_easy_recv()
1093 Daniel Stenberg (9 May 2008)
1094 - Introducing curl_easy_send() and curl_easy_recv(). They can be used to send
1095 and receive data over a connection previously setup with curl_easy_perform()
1096 and its CURLOPT_CONNECT_ONLY option. The sendrecv.c example was added to
1097 show how they can be used.
1099 Yang Tse (9 May 2008)
1100 - Internal time differences now use monotonic time source if available.
1101 This also implies the removal of the winmm.lib dependency for WIN32.
1103 Daniel Stenberg (9 May 2008)
1104 - Stefan Krause reported a busy-looping case when using the multi interface
1105 and doing CONNECT to a proxy. The app would then busy-loop until the proxy
1106 completed its response.
1108 Michal Marek (9 May 2008)
1109 - Make Curl_write and it's callees accept a const pointer, in preparation
1110 of tetetest's patch for curl_easy_send()
1112 Daniel Stenberg (7 May 2008)
1113 - Liam Healy filed the debian bug report #480044
1114 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480044) identifying a
1115 segfault when using krb5 ftp, but the krb4 code had the same problem.
1117 Yang Tse (7 May 2008)
1118 - Christopher Palow provided the patch (edited by me) that introduces the
1119 use of microsecond resolution keys for internal splay trees.
1121 Daniel Stenberg (4 May 2008)
1122 - Yuriy Sosov pointed out a configure fix for detecting c-ares when that is
1123 built debug-enabled.
1125 Daniel Stenberg (3 May 2008)
1126 - Ben Van Hof filed bug report #1945240: "libcurl sometimes sends body twice
1127 when using CURL_AUTH_ANY" (http://curl.haxx.se/bug/view.cgi?id=1945240).
1128 The problem was that when libcurl rewound a stream meant for upload when it
1129 would prepare for a second request, it could accidentally continue the
1130 sending of the rewound data on the first request instead of on the second.
1131 Ben also provided test case 1030 that verifies this fix.
1133 Daniel Stenberg (3 May 2008)
1134 - Jean-Francois Bertrand reported a libcurl crash with CURLOPT_TCP_NODELAY
1135 since libcurl used getprotobyname() and that isn't thread-safe. We now
1136 switched to use IPPROTO_TCP unconditionally, but perhaps the proper fix is
1137 to detect the thread-safe version of the function and use that.
1138 http://curl.haxx.se/mail/lib-2008-05/0011.html
1140 Daniel Stenberg (1 May 2008)
1141 - Bart Whiteley provided a patch that made libcurl work properly when an app
1142 uses the CURLOPT_OPENSOCKETFUNCTION callback to create a unix domain socket
1145 Daniel Stenberg (29 Apr 2008)
1146 - To make it easier for applications that want lots of magic stuff done on
1147 redirections and thus cannot use CURLOPT_FOLLOWLOCATION easily, we now
1148 introduce the new CURLINFO_REDIRECT_URL option that lets applications
1149 extract the URL libcurl would've redirected to if it had been told to. This
1150 then enables the application to continue to that URL as it thinks is
1151 suitable, without having to re-implement the magic of creating the new URL
1152 from the Location: header etc. Test 1029 verifies it.
1154 Yang Tse (29 Apr 2008)
1155 - Improved easy interface resolving timeout handling in c-ares enabled builds
1157 Daniel Fandrich (28 Apr 2008)
1158 - Added test 1028 to test an HTTP redirect to a FTP URL.
1160 Daniel Stenberg (28 Apr 2008)
1161 - Norbert Frese filed bug report #1951588: "Problem with curlftpfs and
1162 libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
1163 identical report to what Denis Golovan reported in
1164 http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the
1165 user/password pointers properly even though there might've been a new
1166 struct/cconnection getting used.
1168 Daniel Stenberg (26 Apr 2008)
1169 - Reverted back to use automake 1.9.6 in the next release (from automake
1170 1.10.1) since it *still* suffers from Solaris-related bugs. Our previous
1171 automake 1.10 problem was reported in bug #1701360
1172 (http://curl.haxx.se/bug/view.cgi?id=1701360) and this recent problem was
1173 bug #1944825 (http://curl.haxx.se/bug/view.cgi?id=1944825). I have not
1174 personally approached the automake team about either one of these but I
1175 figure we need a Solaris 10 guy to do it!
1177 Yang Tse (25 Apr 2008)
1178 - Added 'timeout' and 'delay' attributes support for the test harness
1179 <command> subsection.
1181 Daniel Fandrich (24 Apr 2008)
1182 - Made --stderr able to redirect all stderr messages.
1184 Yang Tse (23 Apr 2008)
1185 - Improve synchronization between test harness runtests.pl script
1186 and test harness servers to minimize risk of false test failures.
1188 Daniel Fandrich (22 Apr 2008)
1189 - Added support for running on Symbian OS.
1191 Daniel Fandrich (18 Apr 2008)
1192 - Added test cases 1026 and 1027 to do some rudimentary tests on the --manual
1195 Michal Marek (14 Apr 2008)
1196 - allow disabling the typechecker by defining CURL_DISABLE_TYPECHECK, as
1197 discussed in http://curl.haxx.se/mail/lib-2008-04/0291.html
1199 Daniel Stenberg (14 Apr 2008)
1200 - Stefan Krause reported a case where the OpenSSL handshake phase wasn't
1201 properly acknowledging the timeout values, like if you pulled the network
1202 plug in the midst of it.
1204 - Andre Guibert de Bruet fixed a second case of not checking the malloc()
1205 return code in the Negotiate code.
1207 - Sandor Feldi reported bug #1942022
1208 (http://curl.haxx.se/bug/view.cgi?id=1942022) pointing out a mistake in the
1209 lib/Makefile.vc[68] makefiles' release-ssl-dll target.
1211 - Brock Noland reported that curl behaved differently depending on which order
1214 Daniel Stenberg (12 Apr 2008)
1215 - Andre Guibert de Bruet found and fixed a case where malloc() was called but
1216 was not checked for a NULL return, in the Negotiate code.
1218 Daniel Fandrich (9 Apr 2008)
1219 - Added test cases 1024 & 1025 to test a scenario similar to the one reported
1220 by Ben Combee where libcurl would send the wrong cookie to a redirected
1221 server. libcurl was doing the right thing in these test cases.
1223 Michal Marek (7 Apr 2008)
1224 - Fix the MIT / Heimdal check for good:
1225 Define HAVE_GSSMIT if <gssapi/{gssapi.h,gssapi_generic.h,gssapi_krb5.h}> are
1226 available, otherwise define HAVE_GSSHEIMDAL if <gssapi.h> is available.
1228 Only define GSS_C_NT_HOSTBASED_SERVICE to gss_nt_service_name if
1229 GSS_C_NT_HOSTBASED_SERVICE isn't declared by the gssapi headers. This should
1230 avoid breakage in case we wrongly recognize Heimdal as MIT again.
1232 Daniel Stenberg (5 Apr 2008)
1233 - Alexey Simak fixed curl_easy_reset() to reset the max redirect limit properly
1235 - Based on the Debian bug report #474224 that complained about the FTP error
1236 message when libcurl doesn't get a 220 back immediately on connect, I now
1237 changed it to be more specific on what the problem is. Also worth noticing:
1238 while the bug report contains an example where the response is:
1240 421 There are too many connected users, please try again later
1242 we cannot assume that the error message will always be this readable nor
1243 that it fits within a particular boundary etc.
1245 Daniel Fandrich (3 Apr 2008)
1246 - Added test627 to test SFTP with CURLOPT_NOBODY
1248 Daniel Stenberg (3 Apr 2008)
1249 - Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to
1250 GET simply because previously when you set CURLOPT_NOBODY to TRUE first and
1251 then FALSE you'd end up in a broken state where a HTTP request would do a
1252 HEAD by still act a lot like for a GET and hang waiting for the content etc.
1254 - Scott Barrett added support for CURLOPT_NOBODY over SFTP
1256 Daniel Fandrich (3 Apr 2008)
1257 - Made sure that curl_global_init is called in all the multithreaded
1260 Michal Marek (31 Mar 2008)
1261 - Removed the generated ca-bundle.h file. The verbatim value of $ca and
1262 $capath is known to configure, so it can be defined in config.h instead.
1264 Daniel Stenberg (31 Mar 2008)
1265 - Added CURLFORM_STREAM as a supported option to curl_formadd() to allow an
1266 application to provide data for a multipart with the read callback. Note
1267 that the size needs to be provided with CURLFORM_CONTENTSLENGTH when the
1268 stream option is used. This feature is verified by the new test case
1269 554. This feature was sponsored by Xponaut.
1271 Daniel Fandrich (30 Mar 2008)
1272 - Changed the makefile so the doc/examples/ programs are never built in a
1273 normal build/install (only with the 'make check' target), so that a
1274 build failure in the examples isn't fatal.
1276 Version 7.18.1 (30 March 2008)
1278 Daniel Stenberg (28 Mar 2008)
1279 - Stephen Collyer pointed out that configure --with-libssh2 without a given
1280 path didn't work properly.
1282 Daniel Stenberg (27 Mar 2008)
1283 - As found out and reported by Dan Petitt, libcurl didn't show progress/call
1284 the progress callback for the first (potentially huge) piece of body data
1285 sent together with the POST request headers in the initial send().
1287 Daniel Stenberg (25 Mar 2008)
1288 - Made setting the CURLOPT_SSL_CTX_FUNCTION option return a failure in case
1289 libcurl wasn't built to use OpenSSL as that is a prerequisite for this
1292 Daniel Stenberg (22 Mar 2008)
1293 - Fixed the problem with doing a zero byte SCP transfer, verified with test
1294 case 617 (which was added by Daniel Fandrich 5 Mar 2008).
1296 Daniel Fandrich (20 Mar 2008)
1297 - Fixed a problem where curl-config --protocols could erroneously show LDAPS
1298 support when curl didn't even have regular LDAP support. It looks like
1299 this could happen when the --enable-ldaps configure switch is given but
1300 configure couldn't find the LDAP headers or libraries.
1302 Michal Marek (20 Mar 2008)
1303 - Added --with-ca-path=DIRECTORY configure option to use an openSSL CApath by
1304 default instead of a ca bundle. The configure script will also look for a
1305 ca path if no ca bundle is found and no option given.
1307 - Fixed detection of previously installed curl-ca-bundle.crt
1309 Daniel Fandrich (18 Mar 2008)
1310 - Added test 626 to reproduce an infinite loop when given an invalid
1311 SFTP quote command reported by Vincent Le Normand, and fixed it.
1313 Michal Marek (18 Mar 2008)
1314 - Added curl_easy_getinfo typechecker.
1316 - Added macros for curl_share_setopt and curl_multi_setopt to check at least
1317 the correct number of arguments.
1319 Daniel Fandrich (13 Mar 2008)
1320 - Added tests 622-625 to test SFTP/SCP uploads. Test 625 was an attempt to
1321 reproduce the --ftp-create-dirs problem reported by Brian Ulm, but that
1322 seems to need a call curl_easy_reset() which this test case doesn't do.
1324 Daniel Stenberg (13 Mar 2008)
1325 - Brian Ulm figured out that if you did an SFTP upload with
1326 CURLOPT_FTP_CREATE_MISSING_DIRS to create a directory, and then re-used the
1327 handle and uploaded another file to another directory that needed to be
1328 created, the second upload would fail. Another case of a state variable that
1329 wasn't properly reset between requests.
1331 - I rewrote the 100-continue code to use a single state variable instead of
1332 the previous two ones. I think it made the logic somewhat clearer.
1334 Daniel Stenberg (11 Mar 2008)
1335 - Dmitry Popov filed bug report #1911069
1336 (http://curl.haxx.se/bug/view.cgi?id=1911069) that identified a race
1337 condition in the name resolver code when the DNS cache is shared between
1338 multiple easy handles, each running in simultaneous threads that could cause
1341 - Added a macro for curl_easy_setopt() that accepts three arguments and simply
1342 does nothing with them, just to make sure libcurl users always use three
1343 arguments to this function. Due to its use of ... for the third argument, it
1344 is otherwise hard to detect abuse.
1346 Michal Marek (11 Mar 2008)
1347 - Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only
1348 works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html ,
1349 http://curl.haxx.se/mail/lib-2008-02/0292.html )
1351 Daniel Fandrich (10 Mar 2008)
1352 - Added tests 618-621 to test SFTP/SCP transfers of more than one file
1353 (test 620 tests the just-fixed problem reported by Brian Ulm).
1355 Daniel Stenberg (9 Mar 2008)
1356 - Brian Ulm reported a crash when doing a second SFTP transfer on a re-used
1357 easy handle if curl_easy_reset() was used between them. I fixed it and Brian
1358 verified that it cured his problem.
1360 - Brian Ulm reported that if you first tried to download a non-existing SFTP
1361 file and then fetched an existing one and re-used the handle, libcurl would
1362 still report the second one as non-existing as well! I fixed it and Brian
1363 verified that it cured his problem.
1365 Michal Marek (6 Mar 2008)
1366 - Fix the gssapi configure check to detect newer MIT Kerberos (patch by
1369 Yang Tse (6 Mar 2008)
1370 - Fix regression on Curl_socket_ready() and Curl_poll() so that these will
1371 again fail on select/poll errors different than EINTR.
1373 Daniel Fandrich (5 Mar 2008)
1374 - Fixed the test harness so it will write out zero-length data files.
1376 - Added tests 616 and 617 to see how SFTP and SCP cope with zero-length
1377 files, as questioned by Mike Protts. SFTP does for me but SCP doesn't
1378 so test 617 is disabled for now.
1380 Daniel S (4 Mar 2008)
1381 - Mike Protts brought a patch that makes resumed transfers work with SFTP.
1383 Daniel S (1 Mar 2008)
1384 - Anatoli Tubman found and fixed a crash with Negotiate authentication used on
1385 a re-used connection where both requests used Negotiate.
1387 Guenter Knauf (26 Feb 2008)
1388 - Kaspar Brand provided a patch to support server name indication (RFC 4366).
1390 Daniel S (25 Feb 2008)
1391 - Kaspar Brand made GnuTLS-built libcurl properly acknowledge the option that
1392 forces it to prefer SSLv3.
1394 Daniel S (23 Feb 2008)
1395 - Sam Listopad provided a patch in feature-request #1900014
1396 http://curl.haxx.se/bug/feature.cgi?id=1900014 that makes libcurl (built to
1397 use OpenSSL) support a full chain of certificates in a given PKCS12
1400 Daniel S (22 Feb 2008)
1401 - Georg Lippitsch made the src/Makefile.vc6 makefile use the same memory model
1402 options as the lib/Makefile.vc6 already did.
1404 Daniel S (21 Feb 2008)
1405 - Zmey Petroff found a crash when libcurl accessed a NULL pointer, which
1406 happened if you set the connection cache size to 1 and for example failed to
1407 login to an FTP site. Bug report #1896698
1408 (http://curl.haxx.se/bug/view.cgi?id=1896698)
1410 Daniel S (20 Feb 2008)
1411 - Fixed test case 405 to not fail when libcurl is built with GnuTLS
1413 - Based on initial work done by Gautam Kachroo to address a bug, we now keep
1414 better control at the exact state of the connection's SSL status so that we
1415 know exactly when it has completed the SSL negotiation or not so that there
1416 won't be accidental re-uses of connections that are wrongly believed to be
1417 in SSL-completed-negotiate state.
1419 - We no longer support setting the CURLOPT_URL option from inside a callback
1420 such as the CURLOPT_SSL_CTX_FUNCTION one treat that as if it was a Location:
1421 following. The patch that introduced this feature was done for 7.11.0, but
1422 this code and functionality has been broken since about 7.15.4 (March 2006)
1423 with the introduction of non-blocking OpenSSL "connects".
1425 It was a hack to begin with and since it doesn't work and hasn't worked
1426 correctly for a long time and nobody has even noticed, I consider it a very
1427 suitable subject for plain removal. And so it was done.
1429 Guenter Knauf (19 Feb 2008)
1430 - We do no longer support SSLv2 by default since it has known flaws.
1431 Kaspar Brand provided a patch for all supported SSL toolkits.
1433 Daniel Fandrich (19 Feb 2008)
1434 - Added test309 to test HTTP redirect to HTTPS URL
1436 Daniel S (18 Feb 2008)
1437 - We're no longer providing a very old ca-bundle in the curl tarball. You can
1438 get a fresh one downloaded and created with 'make ca-bundle' or you can get
1439 one from here => http://curl.haxx.se/docs/caextract.html if you want a fresh
1440 new one extracted from Mozilla's recent list of ca certs.
1442 The configure option --with-ca-bundle now lets you specify what file to use
1443 as default ca bundle for your build. If not specified, the configure script
1444 will check a few known standard places for a global ca cert to use.
1446 Daniel S (17 Feb 2008)
1447 - Jerome Muffat-Meridol helped me fix Curl_done() to close the current
1448 connection by force when it was called before the entire request is
1449 completed, simply because we can't know if the connection really can be
1450 re-used safely at that point.
1452 - Based on the same debugging logic, I've also made Curl_http_done() not
1453 return CURLE_GOT_NOTHING if called "prematurely". This should have no real
1454 effect to anything but the code makes more sense like this.
1456 Daniel S (15 Feb 2008)
1457 - Made the gnutls code path not even try to get the server cert if no peer
1458 verification is requested. Previously it would even return failure if gnutls
1459 failed to get the server cert even though no verification was asked for.
1460 Public server showing the problem: https://www.net222.caisse-epargne.fr
1462 - Fix my Curl_timeleft() leftover mistake in the gnutls code
1464 - Pooyan McSporran found and fixed a flaw where you first would do a normal
1465 http request and then you'd reuse the handle and replace the Accept: header,
1466 as then libcurl would send two Accept: headers!
1468 Daniel S (11 Feb 2008)
1469 - Yang Tse pointed out a few remaining quirks from my timeout refactoring from
1470 Feb 7 that didn't abort properly on timeouts. These are actually old
1471 problems but now they should be fixed.
1473 Yang Tse (10 Feb 2008)
1474 - Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out
1475 and provides test program that demonstrates that libcurl might not set error
1476 description message for error CURLE_COULDNT_RESOLVE_HOST for Windows threaded
1477 name resolver builds. Fixed now.
1479 Daniel Fandrich (8 Feb 2008)
1480 - Added key words to all SSL-using tests so they can be skipped if necessary.
1481 Removed a few unnecessary requires SSL statements.
1483 Daniel S (8 Feb 2008)
1484 - Mike Hommey filed and fixed bug report #1889856
1485 (http://curl.haxx.se/bug/view.cgi?id=1889856): When using the gnutls ssl
1486 layer, cleaning-up and reinitializing curl ends up with https requests
1487 failing with "ASN1 parser: Element was not found" errors. Obviously a
1488 regression added in 7.16.3.
1490 Yang Tse (8 Feb 2008)
1491 - Improved test harness SCP/SFTP start up server verification, doing a real
1492 connection to the sftp server, authenticating and running a simple sftp
1493 pwd command using the test harness generated configuration and key files.
1495 Daniel S (8 Feb 2008)
1496 - Günter Knauf added lib/mk-ca-bundle.pl which gets the Firefox ca bundle and
1497 creates a suitable ca-bundle.crt file in PEM format for use with curl. The
1498 recommended way to run it is to use 'make ca-bundle' in the build tree root.
1500 Daniel Fandrich (7 Feb 2008)
1501 - Added tests 1022 and 1023 to validate output of curl-config --version and
1504 Daniel S (7 Feb 2008)
1505 - Refactored a lot of timeout code into a few functions in an attempt to make
1506 them all use the same (hopefully correct) logic to make it less error-prone
1507 and easier to introduce library-wide where it should be used.
1509 Yang Tse (6 Feb 2008)
1510 - Fix an issue in strdup replacement function when dealing with absolutely
1511 huge strings. Only systems without a standard strdup would be affected.
1513 Daniel S (3 Feb 2008)
1514 - Dmitry Kurochkin cleaned up the pipelining code and removed the need for and
1515 use of the "is_in_pipeline" struct field.
1517 - I wrote up and added the threaded-ssl.c example source code that shows how
1518 to do multi-threaded downloads of HTTPS files with a libcurl that is built
1519 with OpenSSL. It uses pthreads for the threading.
1521 Daniel S (31 Jan 2008)
1522 - Niklas Angebrand made the cookie support in libcurl properly deal with the
1523 "HttpOnly" feature introduced by Microsoft and apparently also supported by
1524 Firefox: http://msdn2.microsoft.com/en-us/library/ms533046.aspx . HttpOnly
1525 is now supported when received from servers in HTTP headers, when written to
1526 cookie jars and when read from existing cookie jars.
1528 I modified test case 31 and 46 to also do some basic HttpOnly testing.
1530 - Dmitry Kurochkin moved several struct fields from the connectdata struct to
1531 the SingleRequest one to make pipelining better. It is a bit tricky to keep
1532 them in the right place, to keep things related to the actual request or to
1533 the actual connection in the right place.
1535 Daniel S (29 Jan 2008)
1536 - Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
1539 - Michal Marek fixed minor mistake in test case 553 that prevented it from
1540 working on other IP-addresses or port numbers.
1542 Version 7.18.0 (28 January 2008)
1544 Daniel S (27 Jan 2008)
1545 - Dmitry Kurochkin: In "real world" testing I found more bugs in
1546 pipelining. Broken connection is not restored and we get into infinite
1547 loop. It happens because of wrong is_in_pipeline values.
1549 Daniel S (26 Jan 2008)
1550 - Kevin Reed filed bug report #1879375
1551 (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl
1552 got lost in this scenario: proxy tunnel (or HTTPS over proxy), ask to do any
1553 proxy authentication and the proxy replies with an auth (like NTLM) and then
1554 closes the connection after that initial informational response.
1556 libcurl would not properly re-initialize the connection to the proxy and
1557 continue the auth negotiation like supposed. It does now however, as it will
1558 now detect if one or more authentication methods were available and asked
1559 for, and will thus retry the connection and continue from there.
1561 - I made the progress callback get called properly during proxy CONNECT.
1563 Daniel S (23 Jan 2008)
1564 - Igor Franchuk pointed out that CURLOPT_COOKIELIST set to "ALL" leaked
1565 memory, and so did "SESS". Fixed now.
1567 Yang Tse (22 Jan 2008)
1568 - Check poll.h at configuration time, and use it when sys/poll.h unavailable
1570 Daniel S (22 Jan 2008)
1571 - Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
1572 that it is bad anyway. Starting now, removing a handle that is in used in a
1573 pipeline will break the pipeline - it'll be set back up again but still...
1575 Yang Tse (21 Jan 2008)
1576 - Disable ldap support for cygwin builds, since it breaks whole build process.
1577 Fixing it will affect other platforms, so it is postponed for another release.
1579 Daniel S (18 Jan 2008)
1580 - Lau Hang Kin found and fixed a problem with the multi interface when doing
1581 CONNECT over a proxy. curl_multi_fdset() didn't report back the socket
1582 properly during that state, due to a missing case in the switch in the
1583 multi_getsock() function.
1585 Yang Tse (17 Jan 2008)
1586 - Don't abort tests 518 and 537 when unable to raise the open-file soft limit.
1588 Daniel S (16 Jan 2008)
1589 - Nathan Coulter's patch that makes runtests.pl respect the PATH when figuring
1590 out what valgrind to run.
1592 Yang Tse (16 Jan 2008)
1593 - Improved handling of out of memory in the command line tool that afected
1594 data url encoded HTTP POSTs when reading it from a file.
1596 Daniel S (16 Jan 2008)
1597 - Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support that
1598 previously had a number of flaws, perhaps most notably when an application
1599 fired up N transfers at once as then they wouldn't pipeline at all that
1600 nicely as anyone would think... Test case 530 was also updated to take the
1601 improved functionality into account.
1603 - Calls to Curl_failf() are not supposed to provide a trailing newline as the
1604 function itself adds that. Fixed on 50 or something strings!
1606 Daniel S (15 Jan 2008)
1607 - I made the torture test on test 530 go through. This was actually due to
1608 silly code left from when we switched to let the multi handle "hold" the dns
1609 cache when using the multi interface... Of course this only triggered when a
1610 certain function call returned error at the correct moment.
1612 Daniel S (14 Jan 2008)
1613 - Joe Malicki filed bug report #1871269
1614 (http://curl.haxx.se/bug/view.cgi?id=1871269) and we could fix his hang-
1615 problem that occurred when doing a large HTTP POST request with the
1616 response-body read from a callback.
1618 Daniel S (12 Jan 2008)
1619 - I re-arranged the curl --help output. All the options are now sorted on
1620 their long option names and all descriptions are one-liners.
1622 - Eric Landes provided the patch (edited by me) that introduces the
1623 --keepalive-time to curl to set the keepalive probe interval. I also took
1624 the opportunity to rename the recently added no-keep-alive option to
1625 no-keepalive to keep a consistent naming and to avoid getting two dashes in
1626 these option names. Eric also provided an update to the man page for the new
1629 Daniel S (11 Jan 2008)
1630 - Daniel Egger made CURLOPT_RANGE work on file:// URLs the very same way it
1631 already worked for FTP:// URLs.
1633 - I made the curl tool switch from using CURLOPT_IOCTLFUNCTION to now use the
1634 spanking new CURLOPT_SEEKFUNCTION simply to take advantage of the improved
1635 performance for the upload resume cases where you want to upload the last
1636 few bytes of a very large file. To implement this decently, I had to switch
1637 the client code for uploading from fopen()/fread() to plain open()/read() so
1638 that we can use lseek() to do >32bit seeks (as fseek() doesn't allow that)
1639 on systems that offer support for that.
1641 Daniel S (10 Jan 2008)
1642 - Michal Marek made curl-config --libs not include /usr/lib64 in the output
1643 (it already before skipped /usr/lib). /usr/lib64 is the default library
1644 directory on many 64bit systems and it's unlikely that anyone would use the
1645 path privately on systems where it's not.
1647 - Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allow
1648 libcurl to seek in a given input stream. This is particularly important when
1649 doing upload resumes when there's already a huge part of the file present
1650 remotely. Before, and still if this callback isn't used, libcurl will read
1651 and through away the entire file up to the point to where the resuming
1652 begins (which of course can be a slow opereration depending on file size,
1653 I/O bandwidth and more). This new function will also be preferred to get
1654 used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when
1655 doing multi-stage HTTP auth with POST/PUT.
1657 - Nikitinskit Dmitriy filed bug report #1868255
1658 (http://curl.haxx.se/bug/view.cgi?id=1868255) with a patch. It identifies
1659 and fixes a problem with parsing WWW-Authenticate: headers with additional
1660 spaces in the line that the parser wasn't written to deal with.
1662 Daniel S (8 Jan 2008)
1663 - Introducing curl_easy_pause() and new magic return codes for both the read
1664 and the write callbacks that now can make a connection's reading and/or
1667 Daniel S (6 Jan 2008)
1668 - Jeff Johnson filed bug report #1863171
1669 (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
1670 libcurl's date parser didn't accept a +1300 time zone which actually is used
1671 fairly often (like New Zealand's Dailight Savings Time), so I modified the
1672 parser to now accept up to and including -1400 to +1400.
1674 Daniel S (5 Jan 2008)
1675 - Based on further discussion on curl-library, I reverted yesterday's SOCKS5
1676 code to instead introduce support for a new proxy type called
1677 CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy
1678 instead of IP address and there's thus no longer any need for a new
1679 curl_easy_setopt() option.
1681 The default SOCKS5 proxy is again back to sending the IP address to the
1682 proxy. The new curl command line option for enabling sending host name to a
1683 SOCKS5 proxy is now --socks5-hostname.
1685 Daniel S (4 Jan 2008)
1686 - Based on Maxim Perenesenko's patch, we now do SOCKS5 operations and let the
1687 proxy do the host name resolving and only if --socks5ip (or
1688 CURLOPT_SOCKS5_RESOLVE_LOCAL) is used we resolve the host name locally and
1689 pass on the IP address only to the proxy.
1691 Yang Tse (3 Jan 2008)
1692 - Modified test harness to allow SCP, SFTP and SOCKS4 tests to run with
1693 OpenSSH 2.9.9, SunSSH 1.0 or later versions. SOCKS5 tests need OpenSSH
1694 3.7, SunSSH 1.0 or later.
1696 Daniel S (2 Jan 2008)
1697 - I fixed two cases of missing return code checks when handling chunked
1698 decoding where a write error (or abort return from a callback) didn't stop
1699 libcurl's processing.
1701 - I removed the socklen_t use from the public curl/curl.h header and instead
1702 made it an unsigned int. The type was only used in the curl_sockaddr struct
1703 definition (only used by the curl_opensocket_callback). On all platforms I
1704 could find information about, socklen_t is 32 unsigned bits large so I don't
1705 think this will break the API or ABI. The main reason for this change is of
1706 course for all the platforms that don't have a socklen_t definition in their
1707 headers to build fine again. Providing our own configure magic and custom
1708 definition of socklen_t on those systems proved to work but was a lot of
1709 cruft, code and extra magic needed - when this very small change of type
1710 seems harmless and still solves the missing socklen_t problem.
1712 - Richard Atterer brought a patch that added support for SOCKS4a proxies,
1713 which is an inofficial PROXY4 variant that sends the hostname to the proxy
1714 instead of the resolved address (which is already supported by SOCKS5).
1715 --socks4a is the curl command line option for it and CURLOPT_PROXYTYPE can
1716 now be set to CURLPROXY_SOCKS4A as well.
1718 Daniel S (1 Jan 2008)
1719 - Mohun Biswas pointed out that --libcurl generated a source code with an int
1720 function but without a return statement. While fixing that, I also took care
1721 about adding some better comments for the generated code.
1723 Daniel S (27 Dec 2007)
1724 - Dmitry Kurochkin mentioned a flaw
1725 (http://curl.haxx.se/mail/lib-2007-12/0252.html) in detect_proxy() which
1726 failed to set the bits.proxy variable properly when an environment variable
1727 told libcurl to use a http proxy.
1729 Daniel S (26 Dec 2007)
1730 - In an attempt to repeat the problem in bug report #1850730
1731 (http://curl.haxx.se/bug/view.cgi?id=1850730) I wrote up test case 552. The
1732 test is doing a 70K POST with a read callback and an ioctl callback over a
1733 proxy requiring Digest auth. The test case code is more or less identical to
1734 the test recipe code provided by Spacen Jasset (who submitted the bug
1737 Daniel S (25 Dec 2007)
1738 - Gary Maxwell filed bug report #1856628
1739 (http://curl.haxx.se/bug/view.cgi?id=1856628) and provided a fix for the
1740 (small) memory leak in the SSL session ID caching code. It happened when a
1741 previous entry in the cache was re-used.
1743 Daniel Fandrich (19 Dec 2007)
1744 - Ensure that nroff doesn't put anything but ASCII characters into the
1747 Yang Tse (18 Dec 2007)
1748 - MSVC 9.0 (VS2008) does not support Windows build targets prior to WinXP,
1749 and makes wrong asumptions of build target when it isn't specified. So,
1750 if no build target has been defined we will target WinXP when building
1751 curl/libcurl with MSVC 9.0 (VS2008).
1753 - (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
1754 a file truncation problem on Windows build targets triggered when retrying
1755 a download with curl.
1757 Daniel S (17 Dec 2007)
1758 - Mateusz Loskot pointed out that MSVC 9.0 (VS2008) has the pollfd struct and
1759 defines in winsock2.h somehow differently than previous versions and that
1760 curl 7.17.1 would fail to compile out of the box.
1762 Daniel S (13 Dec 2007)
1763 - David Wright filed bug report #1849764
1764 (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
1765 identified a problem for re-used connections that previously had sent
1766 Expect: 100-continue and in some situations the subsequent POST (that didn't
1767 use Expect:) still had the internal flag set for its use. David's fix (that
1768 makes the setting of the flag in every single request unconditionally) is
1769 fine and is now used!
1771 Daniel S (12 Dec 2007)
1772 - Gilles Blanc made the curl tool enable SO_KEEPALIVE for the connections and
1773 added the --no-keep-alive option that can disable that on demand.
1775 Daniel S (9 Dec 2007)
1776 - Andrew Moise filed bug report #1847501
1777 (http://curl.haxx.se/bug/view.cgi?id=1847501) and pointed out a memcpy()
1778 that should be memmove() in the convert_lineends() function.
1780 Daniel S (8 Dec 2007)
1781 - Renamed all internal static functions that had Curl_ prefixes to no longer
1782 have them. The Curl_ prefix is exclusively used for library internal global
1783 symbols. Static functions can be named anything, except for using Curl_ or
1784 curl_ prefixes. This is for consistency and for easier maintainance and
1787 - Cleaned up and reformatted the TODO document to look like the FAQ and
1788 CONTRIBUTE, which makes nicer web pages
1790 - Added test cases 549 and 550 that test CURLOPT_PROXY_TRANSFER_MODE.
1792 - Added keywords on a bunch of test cases
1794 - Fixed an OOM problem in the curl code that would lead to fclose on a bad
1797 Daniel S (5 Dec 2007)
1798 - Spacen Jasset reported a problem with doing POST (with data read with a
1799 callback) over a proxy when NTLM is used as auth with the proxy. The bug
1800 also concerned Digest and was limited to using callback only. Spacen worked
1801 with us to provide a useful patch. I added the test case 547 and 548 to
1802 verify two variations of POST over proxy with NTLM.
1804 Daniel S (3 Dec 2007)
1805 - Ray Pekowski filed bug report #1842029
1806 (http://curl.haxx.se/bug/view.cgi?id=1842029) in which he identified a
1807 problem with SSL session caching that prevent it from working, and provided
1810 - Now libcurl (built with OpenSSL) doesn't return error anymore if the remote
1811 SSL-based server doesn't present a certificate when the request is told to
1812 ignore certificate verification anyway.
1814 - Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to control
1815 the appending of the "type=" thing on FTP URLs when they are passed to a
1816 HTTP proxy. Some proxies just don't like that appending (which is done
1817 unconditionally in 7.17.1), and some proxies treat binary/ascii transfers
1818 better with the appending done!
1820 Daniel S (29 Nov 2007)
1821 - A bug report on the curl-library list showed a HTTP Digest session going on
1822 with a 700+ letter nonce. Previously libcurl only support 127 letter ones
1823 and now I bumped it to 1023.
1825 - Fixed the resumed FTP upload loop to not require that the read callback
1826 returns a full buffer on each invoke.
1828 Daniel S (25 Nov 2007)
1829 - Added test case 1015 that tests --data-urlencode in multiple ways
1831 - Fixed --data-urlencode for when no @ or = are used
1833 - Extended the user-agent buffer curl uses, since we can hit the 128 byte
1834 border with plenty development libraries used. Like my current set: "curl
1835 7.17.2-CVS (i686-pc-linux-gnu) libcurl/7.17.2-CVS OpenSSL/0.9.8g
1836 zlib/1.2.3.3 c-ares/1.5.2-CVS libidn/1.1 libssh2/0.19.0-CVS"
1838 Daniel S (24 Nov 2007)
1839 - Internal rearrangements, so that the previous struct HandleData is no more.
1840 It is now known as SingleRequest and the Curl_transfer_keeper struct within
1841 that was remove entirely. This has the upside that there are less duplicate
1842 struct members that made it hard to see and remember what struct that was
1843 used to store what data. The transfer_keeper thing was once stored on a
1844 per-connection basis and then it made sense to have the duplicate info but
1845 since it was moved to the SessionHandle (in 7.16.0) it just added weirdness.
1846 The SingleRequest struct is used by data that only is valid for this single
1849 Yang Tse (22 Nov 2007)
1850 - Provide a socklen_t definition in curl.h for Win32 API build targets
1851 which don't have one.
1853 Daniel S (22 Nov 2007)
1854 - Alessandro Vesely helped me improve the --data-urlencode's syntax, parser
1857 Daniel S (21 Nov 2007)
1858 - While inspecting the Negotiate code, I noticed how the proxy auth was using
1859 the same state struct as the host auth, so both could never be used at the
1860 same time! I fixed it (without being able to check) to use two separate
1861 structs to allow authentication using Negotiate on host and proxy
1864 Daniel S (20 Nov 2007)
1865 - Emil Romanus pointed out a bug that made an easy handle get the cookie
1866 engine activated when set to use a share (even if the share doesn't share
1867 cookies). I fixed it.
1869 - Fixed a very long-lasting mprintf() bug that occurred when we did "%.*s%s",
1870 since the second %s would then wrongly used the numerical precision argument
1873 - Introduced --data-urlencode to the curl tool for easier url encoding of the
1874 data sent in a post.
1876 Daniel S (18 Nov 2007)
1877 - Rob Crittenden fixed SSL connections with NSS done with the multi-interface
1879 Daniel S (17 Nov 2007)
1880 - Michal Marek made the test suite remember what test servers that fail to
1881 start so that subsequent tries are simply skipped.
1883 - Andres Garcia made the examples build fine on Windows (mingw + msys) when
1884 the lib was built staticly.
1886 Daniel S (16 Nov 2007)
1887 - Ates Goral identified a problem in http.c:add_buffer_send() when a debug
1888 callback was used, as it could wrongly pass on a bad size for the outgoing
1889 HTTP header. The bad size would be a very large value as it was a wrapped
1890 size_t content. This happened when the whole HTTP request failed to get sent
1891 in one single send. http://curl.haxx.se/mail/lib-2007-11/0165.html
1893 Daniel S (15 Nov 2007)
1894 - Fixed yet another remaining problem with doing SFTP directory listings on a
1895 re-used persistent connection. Mentioned by Immanuel Gregoire on the mailing
1898 - Michal Marek fixed the test suite to better deal with the case when the HTTP
1899 ipv6 server can't run.
1901 Yang Tse (14 Nov 2007)
1902 - Fix a variable potential wrapping in add_buffer() when using absolutely
1903 huge send buffer sizes.
1905 Daniel S (13 Nov 2007)
1906 - Fixed a remaining problem with doing SFTP directory listings on a re-used
1907 persistent connection. Mentioned by Immanuel Gregoire on the mailing list.
1909 Daniel S (12 Nov 2007)
1910 - Bug report #1830637 (http://curl.haxx.se/bug/view.cgi?id=1830637), which was
1911 forwarded from the Gentoo bug tracker by Daniel Black and was originally
1912 submitted by Robin Johnson, pointed out that libcurl would do bad memory
1913 references when it failed and bailed out before the handler thing was
1914 setup. My fix is not done like the provided patch does it, but instead I
1915 make sure that there's never any chance for a NULL pointer in that struct
1918 Yang Tse (10 Nov 2007)
1919 - Vikram Saxena (http://curl.haxx.se/mail/lib-2007-11/0096.html) pointed out
1920 that the pollfd struct was being multi defined when using VS2008. This is
1921 now fixed in /curl/lib/select.h
1923 Daniel S (8 Nov 2007)
1924 - Bug report #1823487 (http://curl.haxx.se/bug/view.cgi?id=1823487) pointed
1925 out that SFTP requests didn't use persistent connections. Neither did SCP
1926 ones. I gave the SSH code a good beating and now both SCP and SFTP should
1927 use persistent connections fine. I also did a bunch of indent changes as
1928 well as a bug fix for the "keyboard interactive" auth.
1931 - Improved telnet support by drastically reducing the number of write
1932 callbacks needed to pass a buffer to the user. Instead one per byte it
1933 is now as little as one per segment.
1935 Yang Tse (6 Nov 2007)
1936 - Bug report #1824894 (http://curl.haxx.se/bug/view.cgi?id=1824894) pointed
1937 out a problem in curl.h when building C++ apps with MSVC. To fix it, the
1938 inclusion of header files in curl.h is moved outside of the C++ extern "C"
1941 Daniel S (1 Nov 2007)
1942 - Toby Peterson patched a memory problem in the command line tool that
1943 happened when a user had a home dir as an empty string. curl would then do
1944 free() on a wrong area.
1947 - Fixed curl-config --features to not display libz when it wasn't used
1948 due to a missing header file.
1950 Dan F (31 October 2007)
1951 - Fixed the output of curl-config --protocols which showed SCP and SFTP
1952 always, except when --without-libssh2 was given
1954 - Added test cases 1013 and 1014 to check that curl-config --protocols and
1955 curl-config --features matches the output of curl --version
1957 Dan F (30 October 2007)
1958 - Fixed an OOM problem with file: URLs
1960 - Moved Curl_file_connect into the protocol handler struct
1962 Dan F (29 October 2007)
1963 - Added test case 546 to check that subsequent FTP transfers work after a
1964 failed one using the multi interface
1966 Daniel S (29 October 2007)
1967 - Based on one of those bug reports that are intercepted by a distro's bug
1968 tracker (https://bugzilla.redhat.com/show_bug.cgi?id=316191), I now made
1969 curl-config --features and --protocols show the correct output when built
1972 Version 7.17.1 (29 October 2007)
1974 Dan F (25 October 2007)
1975 - Added the --static-libs option to curl-config
1977 Daniel S (25 October 2007)
1978 - Made libcurl built with NSS possible to ignore the peer verification.
1979 Previously it would fail if the ca bundle wasn't present, even if the code
1980 ignored the verification results.
1982 Patrick M (25 October 2007)
1983 - Fixed test server to allow null bytes in binary posts.
1984 _ Added tests 35, 544 & 545 to check binary data posts, both static (in place)
1985 and dynamic (copied).
1987 Daniel S (25 October 2007)
1988 - Michal Marek fixed the test script to be able to use valgrind even when the
1989 lib is built shared with libtool.
1991 - Fixed a few memory leaks when the same easy handle is re-used to request
1992 URLs with different protocols. FTP and TFTP related leaks. Caught thanks to
1993 Dan F's new test cases.
1995 Dan F (24 October 2007)
1996 - Fixed the test FTP and TFTP servers to support the >10000 test number
1999 - Added test cases 2000 through 2003 which test multiple protocols using the
2002 - Fixed the filecheck: make target to work outside the source tree
2004 Daniel S (24 October 2007)
2005 - Vladimir Lazarenko pointed out that we should do some 'mt' magic when
2006 building with VC8 to get the "manifest" embedded to make fine stand-alone
2007 binaries. The maketgz and the src/Makefile.vc6 files were adjusted
2010 Daniel S (23 October 2007)
2011 - Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
2012 that libcurl tried to re-use connections a bit too much when using non-SSL
2013 protocols tunneled over a HTTP proxy.
2015 Daniel S (22 October 2007)
2016 - Michal Marek forwarded the bug report
2017 https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to
2018 FTP that caused memory havoc. His work together with my efforts created two
2021 #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with
2022 at connection cleanup, at which time the struct HandleData could be
2023 used by another connection.
2024 Also, the unused char *urlpath member is removed from struct FTP.
2026 #2 - provide a Curl_reset_reqproto() function that frees
2027 data->reqdata.proto.* on connection setup if needed (that is if the
2028 SessionHandle was used by a different connection).
2030 A long-term goal is of course to somehow get rid of how the reqdata struct
2031 is used, as it is too error-prone.
2033 - Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
2034 that specifying a proxy with a trailing slash didn't work (unless it also
2035 contained a port number).
2037 Patrick M (15 October 2007)
2038 - Fixed the dynamic CURLOPT_POSTFIELDS problem: this option is now static again
2039 and option CURLOPT_COPYPOSTFIELDS has been added to support dynamic mode.
2041 Patrick M (12 October 2007)
2042 - Added per-protocol callback static tables, replacing callback ptr storage
2043 in the connectdata structure by a single handler table ptr.
2045 Dan F (11 October 2007)
2046 - Fixed the -l option of runtests.pl
2048 - Added support for skipping tests based on key words.
2050 Daniel S (9 October 2007)
2051 - Michal Marek removed the no longer existing return codes from the curl.1
2054 Daniel S (7 October 2007)
2055 - Known bug #47, which confused libcurl if doing NTLM auth over a proxy with
2056 a response that was larger than 16KB is now improved slightly so that now
2057 the restriction at 16KB is for the headers only and it should be a rare
2058 situation where the response-headers exceed 16KB. Thus, I consider #47 fixed
2059 and the header limitation is now known as known bug #48.
2061 Daniel S (5 October 2007)
2062 - Michael Wallner made the CULROPT_COOKIELIST option support a new magic
2063 string: "FLUSH". Using that will cause libcurl to flush its cookies to the
2064 CURLOPT_COOKIEJAR file.
2066 - The new file docs/libcurl/ABI describes how we view ABI breakages, soname
2067 bumps and what the version number's significance to all that is.
2069 Daniel S (4 October 2007)
2070 - I enabled test 1009 and made the --local-port use a wide range to reduce the
2073 - Kim Rinnewitz reported that --local-port didn't work with TFTP transfers.
2074 This happened because the tftp code always uncondionally did a bind()
2075 without caring if one already had been done and then it failed. I wrote a
2076 test case (1009) to verify this, but it is a bit error-prone since it will
2077 have to pick a fixed local port number and since the tests are run on so
2078 many different hosts in different situations I'll add it in disabled state.
2080 Yang Tse (3 October 2007)
2081 - Fixed issue related with the use of ares_timeout() result.
2083 Daniel S (3 October 2007)
2084 - Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
2085 CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
2086 replace the socket() call used by libcurl. It basically allows the app to
2087 change address, protocol or whatever of the socket.
2089 - I renamed the CURLE_SSL_PEER_CERTIFICATE error code to
2090 CURLE_PEER_FAILED_VERIFICATION (standard CURL_NO_OLDIES style), and made
2091 this return code get used by the previous SSH MD5 fingerprint check in case
2094 - Based on a patch brought by Johnny Luong, libcurl now offers
2095 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 and the curl tool --hostpubmd5. They both
2096 make the SCP or SFTP connection verify the remote host's md5 checksum of the
2097 public key before doing a connect, to reduce the risk of a man-in-the-middle
2100 Daniel S (2 October 2007)
2101 - libcurl now handles chunked-encoded CONNECT responses
2103 Daniel S (1 October 2007)
2104 - Alex Fishman reported a curl_easy_escape() problem that was made the
2105 function do wrong on all input bytes that are >= 0x80 (decimal 128) due to a
2106 signed / unsigned mistake in the code. I fixed it and added test case 543 to
2109 Daniel S (29 September 2007)
2110 - Immanuel Gregoire fixed a problem with persistent transfers over SFTP.
2112 Daniel S (28 September 2007)
2113 - Adapted the c-ares code to the API change c-ares 1.5.0 brings in the
2114 notifier callback(s).
2116 Dan F (26 September 2007)
2117 - Enabled a few more gcc warnings with --enable-debug. Renamed a few
2118 variables to avoid shadowing global declarations.
2120 Daniel S (26 September 2007)
2121 - Philip Langdale provided the new CURLOPT_POST301 option for
2122 curl_easy_setopt() that alters how libcurl functions when following
2123 redirects. It makes libcurl obey the RFC2616 when a 301 response is received
2124 after a non-GET request is made. Default libcurl behaviour is to change
2125 method to GET in the subsequent request (like it does for response code 302
2126 - because that's what many/most browsers do), but with this CURLOPT_POST301
2127 option enabled it will do what the spec says and do the next request using
2128 the same method again. I.e keep POST after 301.
2130 The curl tool got this option as --post301
2132 Test case 1011 and 1012 were added to verify.
2134 - Max Katsev reported that when doing a libcurl FTP request with
2135 CURLOPT_NOBODY enabled but not CURLOPT_HEADER, libcurl wouldn't do TYPE
2136 before it does SIZE which makes it less useful. I walked over the code and
2137 made it do this properly, and added test case 542 to verify it.
2139 Daniel S (24 September 2007)
2140 - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle
2141 URLs ending with a slash properly (it should list the contents of that
2142 directory). Test case 351 brought back and also test 1010 was added.
2144 Daniel S (21 September 2007)
2145 - Mark Davies fixed Negotiate authentication over proxy, and also introduced
2146 the --proxy-negotiate command line option to allow a user to explicitly
2149 Daniel S (19 September 2007)
2150 - Rob Crittenden provided an NSS update with the following highlights:
2152 o It looks for the NSS database first in the environment variable SSL_DIR,
2153 then in /etc/pki/nssdb, then it initializes with no database if neither of
2156 o If the NSS PKCS#11 libnspsem.so driver is available then PEM files may be
2157 loaded, including the ca-bundle. If it is not available then only
2158 certificates already in the NSS database are used.
2160 o Tries to detect whether a file or nickname is being passed in so the right
2163 o Added a bit of code to make the output more like the OpenSSL module,
2164 including displaying the certificate information when connecting in
2167 o Improved handling of certificate errors (expired, untrusted, etc)
2169 The libnsspem.so PKCS#11 module is currently only available in Fedora
2170 8/rawhide. Work will be done soon to upstream it. The NSS module will work
2171 with or without it, all that changes is the source of the certificates and
2174 Daniel S (18 September 2007)
2175 - Immanuel Gregoire pointed out that public key SSH auth failed if no
2176 public/private key was specified and there was no HOME environment variable,
2177 and then it didn't continue to try the other auth methods. Now it will
2178 instead try to get the files id_dsa.pub and id_dsa from the current
2179 directory if none of the two conditions were met.
2181 Dan F (17 September 2007)
2182 - Added hooks to the test suite to make it possible to test a curl running
2185 - Changed some FTP tests to validate the format of the PORT and EPRT commands
2186 sent by curl, if not the addresses themselves.
2188 Daniel S (15 September 2007)
2189 - Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
2190 proxies for FTP urls.
2192 - Günter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3
2195 Dan F (13 September 2007)
2196 - Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and
2197 fixed some AC_SUBST configure entries.
2199 Version 7.17.0 (13 September 2007)
2201 Daniel S (12 September 2007)
2202 - Bug report #1792649 (http://curl.haxx.se/bug/view.cgi?id=1792649) pointed
2203 out a problem with doing an empty upload over FTP on a re-used connection.
2204 I added test case 541 to reproduce it and to verify the fix.
2206 - I noticed while writing test 541 that the FTP code wrongly did a CWD on the
2207 second transfer as it didn't store and remember the "" path from the
2208 previous transfer so it would instead CWD to the entry path as stored. This
2209 worked, but did a superfluous command. Thus, test case 541 now also verifies
2212 Dan F (5 September 2007)
2213 - Added test case 1007 to test permission problem when uploading with TFTP
2214 (to validate bug #1790403).
2216 - TFTP now reports the "not defined" TFTP error code 0 as an error,
2219 Daniel S (5 September 2007)
2220 - Continued the work on a fix for #1779054
2221 (http://curl.haxx.se/bug/view.cgi?id=1779054). My previous fix from August
2222 24 was not complete (either) but could accidentally "forget" parts of a
2223 server response which led to faulty server response time-out errors.
2225 Dan F (5 September 2007)
2226 - Minix doesn't support getsockopt on UDP sockets or send/recv on TCP
2229 Dan F (31 August 2007)
2230 - Made some of the error strings returned by the *strerror functions more
2231 generic, and more consistent with each other.
2233 - Renamed the curl_ftpssl enum to curl_usessl and its enumerated constants,
2234 creating macros for backward compatibility:
2236 CURLFTPSSL_NONE => CURLUSESSL_NONE
2237 CURLFTPSSL_TRY => CURLUSESSL_TRY
2238 CURLFTPSSL_CONTROL => CURLUSESSL_CONTROL
2239 CURLFTPSSL_ALL => CURLUSESSL_ALL
2240 CURLFTPSSL_LAST => CURLUSESSL_LAST
2242 Dan F (30 August 2007)
2243 - Renamed several libcurl error codes and options to make them more general
2244 and allow reuse by multiple protocols. Several unused error codes were
2245 removed. In all cases, macros were added to preserve source (and binary)
2246 compatibility with the old names. These macros are subject to removal at
2247 a future date, but probably not before 2009. An application can be
2248 tested to see if it is using any obsolete code by compiling it with the
2249 CURL_NO_OLDIES macro defined.
2251 The following unused error codes were removed:
2253 CURLE_BAD_CALLING_ORDER
2254 CURLE_BAD_PASSWORD_ENTERED
2255 CURLE_FTP_CANT_RECONNECT
2256 CURLE_FTP_COULDNT_GET_SIZE
2257 CURLE_FTP_COULDNT_SET_ASCII
2258 CURLE_FTP_USER_PASSWORD_INCORRECT
2259 CURLE_FTP_WEIRD_USER_REPLY
2260 CURLE_FTP_WRITE_ERROR
2261 CURLE_LIBRARY_NOT_FOUND
2262 CURLE_MALFORMAT_USER
2265 CURLE_URL_MALFORMAT_USER
2267 The following error codes were renamed:
2269 CURLE_FTP_ACCESS_DENIED => CURLE_REMOTE_ACCESS_DENIED
2270 CURLE_FTP_COULDNT_SET_BINARY => CURLE_FTP_COULDNT_SET_TYPE
2271 CURLE_FTP_SSL_FAILED => CURLE_USE_SSL_FAILED
2272 CURLE_FTP_QUOTE_ERROR => CURLE_QUOTE_ERROR
2273 CURLE_TFTP_DISKFULL => CURLE_REMOTE_DISK_FULL
2274 CURLE_TFTP_EXISTS => CURLE_REMOTE_FILE_EXISTS
2275 CURLE_HTTP_RANGE_ERROR => CURLE_RANGE_ERROR
2277 The following options were renamed:
2279 CURLOPT_SSLKEYPASSWD => CURLOPT_KEYPASSWD
2280 CURLOPT_FTPAPPEND => CURLOPT_APPEND
2281 CURLOPT_FTPLISTONLY => CURLOPT_DIRLISTONLY
2282 CURLOPT_FTP_SSL => CURLOPT_USE_SSL
2284 A few more changes will take place with the next SONAME bump of the
2285 library. These are documented in docs/TODO
2287 - Documented some newer error codes in libcurl-error(3)
2289 - Added more accurate error code returns from SFTP operations. Added test
2290 case 615 to test an SFTP upload failure.
2292 Dan F (28 August 2007)
2293 - Some minor internal type and const changes based on a splint scan.
2295 Daniel S (24 August 2007)
2296 - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
2297 out that libcurl didn't deal with large responses from server commands, when
2298 the single response was consisting of multiple lines but of a total size of
2299 16KB or more. Dan Fandrich improved the ftp test script and provided test
2300 case 1006 to repeat the problem, and I fixed the code to make sure this new
2301 test case runs fine.
2303 Patrick M (23 August 2007)
2304 - OS/400 port: new files lib/config-os400.h lib/setup-os400.h packages/OS400/*.
2305 See packages/OS400/README.OS400.
2307 Daniel S (23 August 2007)
2308 - Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
2309 out that doing first a file:// upload and then an FTP upload crashed libcurl
2310 or at best caused furious valgrind complaints. Fixed now!
2312 Daniel S (22 August 2007)
2313 - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
2314 out that libcurl didn't deal with very long (>16K) FTP server response lines
2315 properly. Starting now, libcurl will chop them off (thus the client app will
2316 not get the full line) but survive and deal with them fine otherwise. Test
2317 case 1003 was added to verify this.
2319 Daniel S (20 August 2007)
2320 - Based on a patch by Christian Vogt, the FTP code now sets the upcoming
2321 download transfer size much earlier to be possible to get read with
2322 CURLINFO_CONTENT_LENGTH_DOWNLOAD as soon as possible. This is very much in a
2323 similar spirit to the HTTP size change from August 11 2007.
2325 Daniel S (18 August 2007)
2326 - Robson Braga Araujo filed bug report #1776232
2327 (http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling
2328 Curl_client_write(), passing on a const string that the caller may not
2329 modify and yet it does (on some platforms).
2331 - Robson Braga Araujo filed bug report #1776235
2332 (http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY
2333 on a directory would do a "SIZE (null)" request. This is now fixed and test
2334 case 1000 was added to verify.
2336 Daniel S (17 August 2007)
2337 - Song Ma provided a patch that cures a problem libcurl has when doing resume
2338 HTTP PUT using Digest authentication. Test case 5320 and 5322 were also
2339 added to verify the functionality.
2341 Daniel S (14 August 2007)
2342 - Andrew Wansink provided an NTLM bugfix: in the case the server sets the flag
2343 NTLMFLAG_NEGOTIATE_UNICODE, we need to filter it off because libcurl doesn't
2344 UNICODE encode the strings it packs into the NTLM authenticate packet.
2346 Daniel S (11 August 2007)
2347 - Allen Pulsifer provided a patch that makes libcurl set the expected download
2348 size earlier when doing HTTP downloads, so that applications and the
2349 progress meter etc know get the info earlier in the flow than before.
2351 - Patrick Monnerat modified the LDAP code and approach in curl. Starting now,
2352 the configure script checks for openldap and friends and we link with those
2353 libs just like we link all other third party libraries, and we no longer
2354 dlopen() those libraries. Our private header file lib/ldap.h was renamed to
2355 lib/curl_ldap.h due to this. I set a tag in CVS (curl-7_17_0-preldapfix)
2356 just before this commit, just in case.
2358 Dan F (8 August 2007)
2359 - Song Ma noted a zlib memory leak in the illegal compressed header
2360 countermeasures code path.
2362 Daniel S (4 August 2007)
2363 - Patrick Monnerat fixed curl_easy_escape() and curlx_strtoll() to work on
2366 Daniel S (3 August 2007)
2367 - I cut out support for libssh2 versions older than 0.16 to make our code a
2368 lot simpler, and to avoid getting trouble with the LIBSSH2_APINO define
2369 that 1) didn't work properly since it was >32 bits and 2) is removed in
2372 Daniel S (2 August 2007)
2373 - Scott Cantor filed bug report #1766320
2374 (http://curl.haxx.se/bug/view.cgi?id=1766320) pointing out that the libcurl
2375 code accessed two curl_easy_setopt() options (CURLOPT_DNS_CACHE_TIMEOUT and
2376 CURLOPT_DNS_USE_GLOBAL_CACHE) as ints even though they're documented to be
2377 passed in as longs, and that makes a difference on 64 bit architectures.
2379 - Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
2380 after 7.16.2. This is much due to the different treatment file:// gets
2381 internally, but now I added test 231 to make it less likely to happen again
2382 without us noticing!
2384 Daniel S (1 August 2007)
2385 - Patrick Monnerat and I modified libcurl so that now it *copies* all strings
2386 passed to it with curl_easy_setopt()! Previously it has always just refered
2387 to the data, forcing the user to keep the data around until libcurl is done
2388 with it. That is now history and libcurl will instead clone the given
2389 strings and keep private copies. This is also part of Patrick Monnerat's
2392 Due to this being a somewhat interesting change API wise, I've decided to
2393 bump the version of the upcoming release to 7.17.0. Older applications will
2394 of course not notice this change nor do they have to care, but new
2395 applications can be written to take advantage of this.
2397 - Greg Morse reported a problem with POSTing using ANYAUTH to a server
2398 requiring NTLM, and he provided test code and a test server and we worked
2399 out a bug fix. We failed to count sent body data at times, which then caused
2400 internal confusions when libcurl tried to send the rest of the data in order
2401 to maintain the same connection alive.
2403 Daniel S (31 July 2007)
2404 - Peter O'Gorman pointed out (and fixed) that the non-blocking check in
2405 configure made libcurl use blocking sockets on AIX 4 and 5, while that
2406 wasn't the intention.
2408 Daniel S (29 July 2007)
2409 - Jayesh A Shah filed bug report #1759542
2410 (http://curl.haxx.se/bug/view.cgi?id=1759542) identifying a rather serious
2411 problem with FTPS: libcurl closed the data connection socket and then later
2412 in the flow it would call the SSL layer to do SSL shutdown which then would
2413 use a socket that had already been closed - so if the application had opened
2414 a new one in the mean time, libcurl could send gibberish that way! I worked
2415 with Greg Zavertnik to properly diagnose and fix this. The fix affects code
2416 for all SSL libraries we support, but it has only been truly verified to
2417 work fine for the OpenSSL version. The others have only been code reviewed.
2419 Daniel S (23 July 2007)
2420 - Implemented the parts of Patrick Monnerat's OS/400 patch that introduces
2421 support for the OS/400 Secure Sockets Layer library.
2423 Dan F (23 July 2007)
2424 - Implemented only the parts of Patrick Monnerat's OS/400 patch that renamed
2425 some few internal identifiers to avoid conflicts, which could be useful on
2428 Daniel S (22 July 2007)
2429 - HTTP Digest bug fix by Chris Flerackers:
2433 - Perfoming a POST request with body
2434 - With authentication (only Digest)
2435 - Re-using a connection
2437 libcurl would send a HTTP POST with an Authorization header but without
2438 body. Our server would return 400 Bad Request in that case (because
2439 authentication passed, but the body was empty).
2443 1) http_digest.c -> Curl_output_digest
2444 - Updates allocptr.userpwd/allocptr.proxyuserpwd *only* if d->nonce is
2445 filled in (and no errors)
2446 - authp->done = TRUE if d->nonce is filled in
2447 2) http.c -> Curl_http
2448 - *Always* uses allocptr.userpwd/allocptr.proxyuserpwd if not NULL
2449 3) http.c -> Curl_http, Curl_http_output_auth
2451 So what happens is that Curl_output_digest cannot yet update the
2452 Authorization header (allocptr.userpwd) which results in authhost->done=0 ->
2453 authhost->multi=1 -> conn->bits.authneg = TRUE. The body is not
2454 added. *However*, allocptr.userpwd is still used when building the request
2456 - Added test case 354 that makes a simple FTP retrieval without password, which
2457 verifies the bug fix in #1757328.
2459 Daniel S (21 July 2007)
2460 - To allow more flexibility in FTP test cases, I've removed the enforced states
2461 from the test server code as they served no real purpose. The test server
2462 is here to serve for the test cases, not to attempt to function as a real
2463 server! While at it, I modified test case 141 to better test and verify
2464 curl -I on a single FTP file.
2466 Daniel S (20 July 2007)
2467 - James Housley fixed the SFTP PWD command to work.
2469 - Ralf S. Engelschall filed bug report #1757328
2470 (http://curl.haxx.se/bug/view.cgi?id=1757328) and submitted a patch. It
2471 turns out we broke login to FTP servers that don't require (nor understand)
2472 PASS after the USER command. The breakage was done as part of the krb5
2473 commit so a krb-using person needs to verify that the current version now
2474 works or if we need to fix it (in a different way of course).
2476 Dan F (17 July 2007)
2477 - Fixed test cases 613 and 614 by improving the log postprocessor to handle
2478 a new directory listing format that newer libssh2's can provide. This
2479 is probably NOT sufficient to handle all directory listing formats that
2480 server's can provide, and should be revisited.
2482 Daniel S (17 July 2007)
2483 - Daniel Johnson fixed a bug in how libssh2_session_last_error() was used, in
2486 - Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
2487 a control connection that was deemed "dead" to yet be re-used in a following
2490 Daniel S (13 July 2007)
2491 - Colin Hogben filed bug report #1750274
2492 (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
2493 case where libcurl did a connect attempt to a non-listening port and didn't
2494 provide a human readable error string back.
2496 - Daniel Cater fixes:
2497 1 - made 'make vc8' work on windows.
2498 2 - made libcurl itself built with CURL_NO_OLDIES defined (which doesn't
2499 define the symbols for backwards source compatibility)
2500 3 - updated libcurl-errors.3
2501 4 - added CURL_DISABLE_TFTP to docs/INSTALL
2503 Daniel S (12 July 2007)
2504 - Made the krb5 code build with Heimdal's GSSAPI lib.
2506 Dan F (12 July 2007)
2507 - Compile most of the example apps in docs/examples when doing a 'make check'.
2508 Fixed some compile warnings and errors in those examples.
2510 - Removed the example program ftp3rdparty.c since libcurl doesn't support
2511 3rd party FTP transfers any longer.
2513 Daniel S (12 July 2007)
2514 - Shmulik Regev found an (albeit rare) case where the proxy CONNECT operation
2515 could in fact get stuck in an endless loop.
2517 - Made CURLOPT_SSL_VERIFYHOST set to 1 acts as described in the documentation:
2518 fail to connect if there is no Common Name field found in the remote cert.
2519 We should deprecate the support for this set to 1 anyway soon, since the
2520 feature is pointless and most likely never really used by anyone.
2522 Daniel S (11 July 2007)
2523 - Shmulik Regev fixed a bug with transfer-encoding skipping during the 407
2524 error pages for proxy authentication.
2526 - Giancarlo Formicuccia reported and fixed a problem with a closed connection
2527 to a proxy during CONNECT auth negotiation.
2529 Dan F (10 July 2007)
2530 - Fixed a curl memory leak reported by Song Ma with a modified version
2531 of the patch he suggested. Added his test case as test289 to verify.
2533 - Force the time zone to GMT in the cookie tests in case the user is
2534 using one of the so-called 'right' time zones that take into account
2535 leap seconds, which causes the tests to fail (as reported by
2536 Daniel Black in bug report #1745964).
2538 Version 7.16.4 (10 July 2007)
2540 Daniel S (10 July 2007)
2541 - Kees Cook notified us about a security flaw
2542 (http://curl.haxx.se/docs/adv_20070710.html) in which libcurl failed to
2543 properly reject some outdated or not yet valid server certificates when
2544 built with GnuTLS. Kees also provided the patch.
2546 James H (5 July 2007)
2547 - Gavrie Philipson provided a patch that will use a more specific error
2548 message for an scp:// upload failure. If libssh2 has his matching
2549 patch, then the error message return by the server will be used instead
2550 of a more generic error.
2552 Daniel S (1 July 2007)
2553 - Thomas J. Moore provided a patch that introduces Kerberos5 support in
2554 libcurl. This also makes the options change name to --krb (from --krb4) and
2555 CURLOPT_KRBLEVEL (from CURLOPT_KRB4LEVEL) but the old names are still
2557 - Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5
2560 Daniel S (27 June 2007)
2561 - James Housley: Add two new options for the SFTP/SCP/FILE protocols:
2562 CURLOPT_NEW_FILE_PERMS and CURLOPT_NEW_DIRECTORY_PERMS. These control the
2563 premissions for files and directories created on the remote
2564 server. CURLOPT_NEW_FILE_PERMS defaults to 0644 and
2565 CURLOPT_NEW_DIRECTORY_PERMS defaults to 0755
2567 - I corrected the 10-at-a-time.c example and applied a patch for it by James
2570 Daniel S (26 June 2007)
2571 - Robert Iakobashvili re-arranged the internal hash code to work with a custom
2572 hash function for different hashes, and also expanded the default size for
2573 the socket hash table used in multi handles to greatly enhance speed when
2574 very many connections are added and the socket API is used.
2576 - James Housley made the CURLOPT_FTPLISTONLY mode work for SFTP directory
2579 Daniel S (25 June 2007)
2580 - Adjusted how libcurl treats HTTP 1.1 responses without content-lenth or
2581 chunked encoding (that also lacks "Connection: close"). It now simply
2582 assumes that the connection WILL be closed to signal the end, as that is how
2583 RFC2616 section 4.4 point #5 says we should behave.
2585 Version 7.16.3 (25 June 2007)
2587 Daniel S (23 June 2007)
2588 - As reported by "Tro" in http://curl.haxx.se/mail/lib-2007-06/0161.html and
2589 http://curl.haxx.se/mail/lib-2007-06/0238.html, libcurl didn't properly do
2590 no-body requests on FTP files on re-used connections properly, or at least
2591 it didn't provide the info back in the header callback properly in the
2592 subsequent requests.
2594 Daniel S (21 June 2007)
2595 - Gerrit Bruchhäuser pointed out a warning that the Intel(R) Thread Checker
2596 tool reports and it was indeed a legitimate one and it is one fixed. It was
2597 a use of a share without doing the proper locking first.
2599 Daniel S (20 June 2007)
2600 - Adam Piggott filed bug report #1740263
2601 (http://curl.haxx.se/bug/view.cgi?id=1740263). Adam discovered that when
2602 getting a large amount of URLs with curl, they were fetched slower and
2603 slower... which turned out to be because the --libcurl data collecting which
2604 wrongly always was enabled, but no longer is...
2606 Daniel S (18 June 2007)
2607 - Robson Braga Araujo filed bug report #1739100
2608 (http://curl.haxx.se/bug/view.cgi?id=1739100) that mentioned that libcurl
2609 could not actually list the contents of the root directory of a given FTP
2610 server if the login directory isn't root. I fixed the problem and added
2611 three test cases (one is disabled for now since I identified KNOWN_BUGS #44,
2612 we cannot use --ftp-method nocwd and list ftp directories).
2614 Daniel S (14 June 2007)
2617 I've encountered (and hopefully fixed) a problem involving proxy CONNECT
2618 requests and easy handles state management. The problem isn't simple to
2619 reproduce since it depends on socket state. It only manifests itself when
2620 working with non-blocking sockets.
2622 Here is the scenario:
2624 1. in multi_runsingle the easy handle is in the CURLM_STATE_WAITCONNECT and
2625 calls Curl_protocol_connect
2627 2. in Curl_proxyCONNECT, line 1247, if the socket isn't ready the function
2628 returns and conn->bits.tunnel_connecting is TRUE
2630 3. when the call to Curl_protocol_connect returns the protocol_connect flag
2631 is false and the easy state is changed to CURLM_STATE_PROTOCONNECT which
2632 isn't correct if a proxy is used. Rather CURLM_STATE_WAITPROXYCONNECT
2635 I discovered this while performing an HTTPS request through a proxy (squid)
2636 on my local network. The problem caused openssl to fail as it read the proxy
2637 response to the CONNECT call ('HTTP/1.0 Established') rather than the SSL
2638 handshake (the exact openssl error was 'wrong ssl version' but this isn't
2641 - Dave Vasilevsky filed bug report #1736875
2642 (http://curl.haxx.se/bug/view.cgi?id=1736875) almost simultanouesly as Dan
2643 Fandrich mentioned a related build problem on the libcurl mailing list:
2644 http://curl.haxx.se/mail/lib-2007-06/0131.html. Both problems had the same
2645 reason: the definitions of the POLL* defines and the pollfd struct in the
2646 libcurl code was depending on HAVE_POLL instead of HAVE_SYS_POLL_H.
2648 Daniel S (13 June 2007)
2649 - Tom Regner provided a patch and worked together with James Housley, so now
2650 CURLOPT_FTP_CREATE_MISSING_DIRS works for SFTP connections as well as FTP
2653 - Rich Rauenzahn filed bug report #1733119
2654 (http://curl.haxx.se/bug/view.cgi?id=1733119) and we collaborated on the
2655 fix. The problem is that for 64bit HPUX builds, several socket-related
2656 functions would still assume int (32 bit) arguments and not socklen_t (64
2659 Daniel S (12 June 2007)
2660 - James Housley brought his revamped SSH code that is state-machine driven to
2661 really take advantage of the now totally non-blocking libssh2 (in CVS).
2664 - Incorporated Daniel Black's test706 and test707 SOCKS test cases.
2666 - Fixed a few problems when starting the SOCKS server.
2668 - Reverted some recent changes to runtests.pl that weren't compatible with
2671 - Fixed the test harness so that it actually kills the ssh being used as
2674 Daniel S (6 June 2007)
2675 - -s/--silent can now be used to toggle off the silence again if used a second
2678 Daniel S (5 June 2007)
2679 - Added Daniel Black's work that adds the first few SOCKS test cases. I also
2680 fixed two minor SOCKS problems to make the test cases run fine.
2682 Daniel S (31 May 2007)
2683 - Feng Tu made (lib)curl support "upload" resuming work for file:// URLs.
2685 Daniel S (30 May 2007)
2686 - I modified the 10-at-a-time.c example to transfer 500 downloads in parallel
2687 with a c-ares enabled build only to find that it crashed miserably, and this
2688 was due to some select()isms left in the code. This was due to API
2689 restrictions in c-ares 1.3.x, but with the upcoming c-ares 1.4.0 this is no
2690 longer the case so now libcurl runs much better with c-ares and the multi
2691 interface with > 1024 file descriptors in use.
2693 Extra note: starting now we require c-ares 1.4.0 for asynchronous name
2696 - Added CURLMOPT_MAXCONNECTS which is a curl_multi_setopt() option for setting
2697 the maximum size of the connection cache maximum size of the multi handle.
2699 Daniel S (27 May 2007)
2700 - When working with a problem Stefan Becker had, I found an off-by-one buffer
2701 overwrite in Curl_select(). While fixing it, I also improved its performance
2702 somewhat by changing calloc to malloc and breaking out of a loop earlier
2705 Daniel S (25 May 2007)
2706 - Rob Crittenden fixed bug #1705802
2707 (http://curl.haxx.se/bug/view.cgi?id=1705802), which was filed by Daniel
2708 Black identifying several FTP-SSL test cases fail when we build libcurl with
2709 NSS for TLS/SSL. Listed as #42 in KNOWN_BUGS.
2711 Daniel S (24 May 2007)
2712 - Song Ma filed bug report #1724016
2713 (http://curl.haxx.se/bug/view.cgi?id=1724016) noticing that downloading
2714 glob-ranges for TFTP was broken in CVS. Fixed now.
2716 - 'mytx' in bug report #1723194 (http://curl.haxx.se/bug/view.cgi?id=1723194)
2717 pointed out that the warnf() function in the curl tool didn't properly deal
2718 with the cases when excessively long words were used in the string to chop
2721 Daniel S (22 May 2007)
2722 - Andre Guibert de Bruet fixed a memory leak in the function that verifies the
2723 peer's name in the SSL certificate when built for OpenSSL. The leak happens
2724 for libcurls with CURL_DOES_CONVERSIONS enabled that fail to convert the CN
2725 name from UTF8. He also fixed a leak when PKCS #12 parsing failed.
2727 Daniel S (18 May 2007)
2728 - Feng Tu reported that curl -w did wrong on TFTP transfers in bug report
2729 #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the
2730 transfer-related info "variables" were indeed overwritten with zeroes
2731 wrongly and have now been adjusted. The upload size still isn't accurate.
2733 Daniel S (17 May 2007)
2734 - Feng Tu pointed out a division by zero error in the TFTP connect timeout
2735 code for timeouts less than five seconds, and also provided a fix for it.
2736 Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
2739 - Added support for compiling under Minix 3.1.3 using ACK.
2742 - Added SFTP directory listing test case 613.
2744 - Added support for quote commands before a transfer using SFTP and test
2747 - Changed the post-quote commands to occur after the transferred file is
2750 - Allow SFTP quote commands chmod, chown, chgrp to set a value of 0.
2753 - Kristian Gunstone fixed a problem where overwriting an uploaded file with
2754 sftp didn't truncate it first, which would corrupt the file if the new
2755 file was shorter than the old.
2758 - Added FTPS test cases 406 and 407
2760 Daniel S (8 May 2007)
2761 - CURLE_FTP_COULDNT_STOR_FILE is now known as CURLE_UPLOAD_FAILED. This is
2762 because I just made SCP uploads return this value if the file size of
2763 the upload file isn't given with CURLOPT_INFILESIZE*. Docs updated to
2764 reflect this news, and a define for the old name was added to the public
2767 Daniel S (7 May 2007)
2768 - James Bursa fixed a bug in the multi handle code that made the connection
2769 cache grow a bit too much, beyond the normal 4 * easy_handles.
2771 Daniel S (2 May 2007)
2772 - Anders Gustafsson remarked that requiring CURLOPT_HTTP_VERSION set to 1.0
2773 when CURLOPT_HTTP200ALIASES is used to avoid the problem mentioned below is
2774 not very nice if the client wants to be able to use _either_ a HTTP 1.1
2775 server or one within the aliases list... so starting now, libcurl will
2776 simply consider 200-alias matches the to be HTTP 1.0 compliant.
2778 - Tobias Rundström reported a problem they experienced with xmms2 and recent
2779 libcurls, which turned out to be the 25-nov-2006 change which treats HTTP
2780 responses without Content-Length or chunked encoding as without bodies. We
2781 now added the conditional that the above mentioned response is only without
2782 body if the response is HTTP 1.1.
2784 - Jeff Pohlmeyer improved the hiperfifo.c example to use the
2785 CURLMOPT_TIMERFUNCTION callback option.
2787 - Set the timeout for easy handles to expire really soon after addition or
2788 when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform,
2789 to make applications using only curl_multi_socket() to properly function
2790 when adding easy handles "on the fly". Bug report and test app provided by
2793 Dan F (30 April 2007)
2794 - Improved the test harness to allow running test servers on other than
2795 the default port numbers, allowing more than one test suite to run
2796 simultaneously on the same host.
2798 Daniel S (28 April 2007)
2799 - Peter O'Gorman fixed libcurl to not init GnuTLS as early as we did before,
2800 since it then inits libgcrypt and libgcrypt is being evil and EXITS the
2801 application if it fails to get a fine random seed. That's really not a nice
2802 thing to do by a library.
2804 - Frank Hempel fixed a curl_easy_duphandle() crash on a handle that had
2805 been removed from a multi handle, and then fixed another flaw that prevented
2806 curl_easy_duphandle() to work even after the first fix - the handle was
2807 still marked as using the multi interface.
2809 Daniel S (26 April 2007)
2810 - Peter O'Gorman found a problem with SCP downloads when the downloaded file
2811 was 16385 bytes (16K+1) and it turned out we didn't properly always "suck
2812 out" all data from libssh2. The effect being that libcurl would hang on the
2813 socket waiting for data when libssh2 had in fact already read it all...
2815 Dan F (25 April 2007)
2816 - Added support in runtests.pl for "!n" test numbers to disable individual
2817 tests. Changed -t to only keep log files around when -k is specified,
2818 to have the same behaviour as without -t.
2820 Daniel S (25 April 2007)
2821 - Sonia Subramanian brought our attention to a problem that happens if you set
2822 the CURLOPT_RESUME_FROM or CURLOPT_RANGE options and an existing connection
2823 in the connection cache is closed to make room for the new one when you call
2824 curl_easy_perform(). It would then wrongly free range-related data in the
2825 connection close funtion.
2827 Yang Tse (25 April 2007)
2828 - Steve Little fixed compilation on VMS 64-bit mode
2830 Daniel S (24 April 2007)
2831 - Robert Iakobashvili made the 'master_buffer' get allocated first once it is
2832 can/will be used as it then makes the common cases save 16KB of data for each
2833 easy handle that isn't used for pipelining.
2835 Dan F (23 April 2007)
2836 - Added <postcheck> support to the test harness.
2838 - Added tests 610-612 to test more SFTP post-quote commands.
2840 Daniel S (22 April 2007)
2841 - Song Ma's warning if -r/--range is given with a "bad" range, also noted in
2844 - Daniel Black filed bug #1705177
2845 (http://curl.haxx.se/bug/view.cgi?id=1705177) where --without-ssl
2846 --with-gnutl outputs a warning about SSL not being enabled even though GnuTLS
2849 Daniel S (21 April 2007)
2850 - Daniel Black filed bug #1704675
2851 (http://curl.haxx.se/bug/view.cgi?id=1704675) identifying a double-free
2852 problem in the SSL-dealing layer, telling GnuTLS to free NULL credentials on
2853 closedown after a failure and a bad #ifdef for NSS when closing down SSL.
2855 Yang Tse (20 April 2007)
2856 - Save one call to curlx_tvnow(), which calls gettimeofday(), in each of
2857 Curl_socket_ready(), Curl_poll() and Curl_select() when these are called
2858 with a zero timeout or a timeout value indicating a blocking call should
2861 Daniel S (18 April 2007)
2862 - James Housley made SFTP uploads use libssh2's non-blocking API
2864 - Prevent the internal progress meter from updating more frequently than once
2867 Dan F (17 April 2007)
2868 - Added test cases 296, 297 and 298 to test --ftp-method handling
2870 Daniel S (16 April 2007)
2871 - Robert Iakobashvil added curl_multi_socket_action() to libcurl, which is a
2872 function that deprecates the curl_multi_socket() function. Using the new
2873 function the application tell libcurl what action that was found in the
2874 socket that it passes in. This gives a significant performance boost as it
2875 allows libcurl to avoid a call to poll()/select() for every call to
2876 curl_multi_socket*().
2878 I added a define in the public curl/multi.h header file that will make your
2879 existing application automatically use curl_multi_socket_action() instead of
2880 curl_multi_socket() when you recompile. But of course you'll get better
2881 performance if you adjust your code manually and actually pass in the
2882 correct action bitmask to this function.
2884 Daniel S (14 April 2007)
2885 - Jay Austin added "DH PARAMETERS" to the stunnel.pem certificate for the test
2886 suite to make stunnel run better in some (most?) environments.
2888 Dan F (13 April 2007)
2889 - Added test cases 294 and 295 to test --ftp-account handling
2891 - Improved handling of out of memory in ftp.
2893 Yang Tse (13 April 2007)
2894 - Fix test case 534 which started to fail 2007-04-13 due to the existance
2895 of a new host on the net with the same silly domain the test was using
2896 for a host which was supposed not to exist.
2898 Daniel S (12 April 2007)
2899 - Song Ma found a memory leak in the if2ip code if you pass in an interface
2900 name longer than the name field of the ifreq struct (typically 6 bytes), as
2901 then it wouldn't close the used dummy socket. Bug #1698974
2902 (http://curl.haxx.se/bug/view.cgi?id=1698974)
2904 Version 7.16.2 (11 April 2007)
2906 Yang Tse (10 April 2007)
2907 - Ravi Pratap provided some fixes for HTTP pipelining
2909 - configure script will ignore --enable-sspi option for non-native Windows.
2911 Daniel S (9 April 2007)
2912 - Nick Zitzmann did ssh.c cleanups
2914 Daniel S (3 April 2007)
2915 - Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
2917 Daniel S (2 April 2007)
2918 - Nick Zitzmann made the CURLOPT_POSTQUOTE option work for SFTP as well. The
2919 accepted commands are as follows:
2922 Changes the group ID of the file or directory at (path) to (gid). (gid)
2925 chmod (perms) (path)
2926 Changes the permissions of the file or directory at (path) to
2927 (perms). (perms) must be a number in the format used by the chmod Unix
2931 Changes the user ID of the file or directory at (path) to (uid). (uid)
2935 Creates a symbolic link at (dest) that points to the file located at
2939 Creates a new directory at (path).
2941 rename (source) (dest)
2942 Moves the file or directory at (source) to (dest).
2945 Deletes the file located at (path).
2948 Deletes the directory located at (path). This command will raise an error
2949 if the directory is not empty.
2951 symlink (source) (dest)
2954 Daniel S (1 April 2007)
2955 - Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
2956 easy handles are added to a multi handle, by avoiding the looping over all
2957 the handles to find which one to remove.
2959 - Matt Kraai provided a patch that makes curl build on QNX 6 fine again.
2961 Daniel S (31 March 2007)
2962 - Fixed several minor issues detected by the coverity.com scanner.
2964 - "Pixel" fixed a problem that appeared when you used -f with user+password
2965 embedded in the URL.
2967 Dan F (29 March 2007)
2968 - Don't tear down the ftp connection if the maximum filesize was exceeded
2969 and added tests 290 and 291 to check.
2971 - Added ftps upload and SSL required tests 401 and 402.
2973 - Send an EOF message before closing an SCP channel, as recommended by
2974 RFC4254. Enable libssh2 tracing when ssh debugging is turned on.
2976 Yang Tse (27 March 2007)
2977 - Internal function Curl_select() renamed to Curl_socket_ready()
2979 New Internal wrapper function Curl_select() around select (2), it
2980 uses poll() when a fine poll() is available, so now libcurl can be
2981 built without select() support at all if a fine poll() is available.
2983 Daniel S (25 March 2007)
2984 - Daniel Johnson fixed multi code to traverse the easy handle list properly.
2985 A left-over bug from the February 21 fix.
2987 Dan F (23 March 2007)
2988 - Added --pubkey option to curl and made --key also work for SCP/SFTP,
2989 plus made --pass work on an SSH private key as well.
2991 - Changed the test harness to attempt to gracefully shut down servers
2992 before resorting to the kill -9 hammer.
2994 - Added test harness infrastructure to support scp/sftp tests, using
2995 OpenSSH as the server.
2997 - Fixed a memory leak when specifying a proxy with a file: URL.
2999 Yang Tse (20 March 2007)
3000 - Fixed: When a signal was caught awaiting for an event using Curl_select()
3001 or Curl_poll() with a non-zero timeout both functions would restart the
3002 specified timeout. This could even lead to the extreme case that if a
3003 signal arrived with a frecuency lower to the specified timeout neither
3004 function would ever exit.
3006 Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
3007 Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
3008 defined both functions will return as soon as a signal is caught. Use it
3009 at your own risk, all calls to these functions in the library should be
3010 revisited and checked before fully supporting this feature.
3012 Yang Tse (19 March 2007)
3013 - Bryan Henderson fixed the progress function so that it can get called more
3014 frequently allowing same calling frecuency for the client progress callback.
3016 Dan F (15 March 2007)
3017 - Various memory leaks plugged and NULL pointer fixes made in the ssh code.
3019 Daniel (15 March 2007)
3020 - Nick made the curl tool accept globbing ranges that only is one number, i.e
3021 you can now use [1-1] without curl complaining.
3023 Daniel (10 March 2007)
3026 The problem is the following: when we're calling Curl_done and it decides to
3027 keep the connection opened ('left intact'), then the caller is not notified
3028 that the connection was done via the NULLifying of the pointer, so some easy
3029 handle is keeping the pointer to this connection.
3031 Later ConnectionExists can select such connection for reuse even if we're
3032 not pipelining: pipeLen is zero, so the (pipeLen > 0 && !canPipeline) is
3033 false and we can reuse this connection for another easy handle. But thus the
3034 connection will be shared between two easy handles if the handle that wants
3035 to take the ownership is not the same as was not notified of the connection
3036 was done in Curl_done. And when some of these easy handles will get their
3037 connection really freed the another one will still keep the pointer.
3039 My fix was rather trivial: I just added the NULLification to the 'else'
3040 branch in the Curl_done. My tests with Git and ElectricFence showed no
3041 problems both for HTTP pulling and cloning. Repository size is about 250 Mb,
3042 so it was a considerable amount of Curl's work.
3044 Dan F (9 March 2007)
3045 - Updated the test harness to add a new "crypto" feature check and updated the
3046 appropriate test case to use it. For now, this is treated the same as the
3047 "SSL" feature because curl doesn't list it separately.
3049 Daniel (9 March 2007)
3050 - Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
3052 - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
3055 - Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
3056 upload a file it couldn't open. Bug #1676581
3057 (http://curl.haxx.se/bug/view.cgi?id=1676581)
3059 Dan F (9 March 2007)
3060 - Updated the test harness to check for protocol support before running each
3061 test, fixing KNOWN_BUGS #11.
3063 Dan F (7 March 2007)
3064 - Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
3065 harness. It is very limited as it supports only ftps:// URLs with
3066 --ftp-ssl-control specified, which implicitly encrypts the control
3067 channel but not the data channels. That allows stunnel to be used with
3068 an unmodified ftp server in exactly the same way that the test https
3071 Dan F (7 March 2007)
3072 - Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
3073 unencrypted data connections.
3075 Dan F (6 March 2007)
3076 - Fixed a couple of improper pointer uses detected by valgrind in test
3079 Daniel (2 March 2007)
3080 - Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
3081 makefiles that are included in the source release archives, generated from
3082 the Makefile.vc6 files by the maketgz script. I also modified the root
3083 Makefile to have a VC variable that defaults to vc6 but can be overridden to
3084 allow it to be used for vc8 as well. Like this:
3088 Daniel (27 February 2007)
3089 - Hang Kin Lau found and fixed: When I use libcurl to connect to an https
3090 server through a proxy and have the remote https server port set using the
3091 CURLOPT_PORT option, protocol gets reset to http from https after the first
3094 User defined URL was modified internally by libcurl and subsequent reuse of
3095 the easy handle may lead to connection using a different protocol (if not
3098 I found that libcurl hardcoded the protocol to "http" when it tries to
3099 regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
3100 follows and it's working fine so far
3102 Daniel (25 February 2007)
3103 - Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
3104 the multi interface. Note that it still does a part of the connection in a
3107 Daniel (23 February 2007)
3108 - Added warning outputs if the command line uses more than one of the options
3109 -v, --trace and --trace-ascii, since it could really confuse the user.
3110 Clarified this fact in the man page.
3112 Daniel (21 February 2007)
3113 - Ravi Pratap provided work on libcurl making pipelining more robust and
3115 o Don't mix GET and POST requests in a pipeline
3116 o Fix the order in which requests are dispatched from the pipeline
3117 o Fixed several curl bugs with pipelining when the server is returning
3119 * Added states to chunked parsing for final CRLF
3120 * Rewind buffer after parsing chunk with data remaining
3121 * Moved chunked header initializing to a spot just before receiving
3124 Daniel (20 February 2007)
3125 - Linus Nielsen Feltzing changed the CURLOPT_FTP_SSL_CCC option to handle
3126 active and passive CCC shutdown and added the --ftp-ssl-ccc-mode command
3129 Daniel (19 February 2007)
3130 - Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
3132 - Shmulik Regev found a memory leak in re-used HTTPS connections, at least
3133 when the multi interface was used.
3135 - Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
3138 Daniel (18 February 2007)
3139 - Jeff Pohlmeyer identified two problems: first a rather obscure problem with
3140 the multi interface and connection re-use that could make a
3141 curl_multi_remove_handle() ruin a pointer in another handle.
3143 The second problem was less of an actual problem but more of minor quirk:
3144 the re-using of connections wasn't properly checking if the connection was
3147 Daniel (16 February 2007)
3148 - Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
3149 CURLOPT_RANGE back to no range on an easy handle when using FTP.
3151 Dan F (14 February 2007)
3152 - Fixed curl-config --libs so it doesn't list unnecessary libraries (and
3153 therefore introduce unnecessary dependencies) when it's not needed.
3154 Also, don't bother adding a library path of /usr/lib
3156 Daniel (13 February 2007)
3157 - The default password for anonymous FTP connections is now changed to be
3160 - Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
3161 gmtime_r() like the older VC versions. He also made use of some machine-
3162 specific defines to differentiate the "OS" define.
3164 Daniel (12 February 2007)
3165 - Rob Crittenden added support for NSS (Network Security Service) for the
3166 SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
3168 This is the fourth supported library for TLS/SSL that libcurl supports!
3170 - Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
3171 to the debug callback.
3173 - Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
3174 CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
3175 internal decoding of content or transfer encoded content. This may be
3176 preferable in cases where you use libcurl for proxy purposes or similar. The
3177 command line tool got a --raw option to disable both at once.
3179 - release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
3180 define set to hold the exact date and time of when the tarball was built, as
3181 a human readable string using the UTC time zone.
3183 - Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
3184 that has an easy handle present in the "closure" list pending closure.
3186 Daniel (6 February 2007)
3187 - Regular file downloads wiht SFTP and SCP are now done using the non-blocking
3188 API of libssh2, if the libssh2 headers seem to support them. This will make
3189 SCP and SFTP much more responsive and better libcurl citizens when used with
3190 the multi interface etc.
3192 Daniel (5 February 2007)
3193 - Michael Wallner added support for CURLOPT_TIMEOUT_MS and
3194 CURLOPT_CONNECTTIMEOUT_MS that, as their names suggest, do the timeouts with
3195 millisecond resolution. The only restriction to that is the alarm()
3196 (sometimes) used to abort name resolves as that uses full seconds. I fixed
3197 the FTP response timeout part of the patch.
3199 Internally we now count and keep the timeouts in milliseconds but it also
3200 means we multiply set timeouts with 1000. The effect of this is that no
3201 timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
3202 equals 24.86 days. We probably couldn't before either since the code did
3203 *1000 on the timeout values on several places already.
3205 Daniel (3 February 2007)
3206 - Yang Tse fixed the cookie expiry date in several test cases that started to
3207 fail since they used "1 feb 2007"...
3209 - Manfred Schwarb reported that socks5 support was broken and help us pinpoint
3210 the problem. The code now tries harder to use httproxy and proxy where
3211 apppropriate, as not all proxies are HTTP...
3213 Version 7.16.1 (29 January 2007)
3215 Daniel (29 January 2007)
3216 - Michael Wallner reported that when doing a CONNECT with a custom User-Agent
3217 header, you got _two_ User-Agent headers in the CONNECT request...! Added
3218 test case 287 to verify the fix.
3220 Daniel (28 January 2007)
3221 - curl_easy_reset() now resets the CA bundle path correctly.
3223 - David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
3226 Daniel (25 January 2007)
3227 - Added the --libcurl [file] option to curl. Append this option to any
3228 ordinary curl command line, and you will get a libcurl-using source code
3229 written to the file that does the equivalent operation of what your command
3230 line operation does!
3232 Dan F (24 January 2007)
3233 - Fixed a dangling pointer problem that prevented the http_proxy environment
3234 variable from being properly used in many cases (and caused test case 63
3237 Daniel (23 January 2007)
3238 - David McCreedy did NTLM changes mainly for non-ASCII platforms:
3241 There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
3242 defined. I noticed this while testing various configurations. Line 867 of
3243 the current http_ntlm.c is a closing bracket for an if/else pair that only
3244 gets compiled in if USE_NTLM2SESSION is defined. But this closing bracket
3245 wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
3246 defined. Lines 198 and 140 of my patch wraps that closing bracket in an
3247 #ifdef USE_NTLM2SESSION.
3250 I noticed several picky compiler warnings when DEBUG_ME is defined. I've
3251 fixed them with casting. By the way, DEBUG_ME was a huge help in
3252 understanding this code.
3255 Hopefully the last non-ASCII conversion patch for libcurl in a while. I
3256 changed the "NTLMSSP" literal to hex since this signature must always be in
3259 Conversion code was strategically added where necessary. And the
3260 Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
3261 creates are NOT translated on non-ASCII platforms.
3263 Dan F (22 January 2007)
3264 - Converted (most of) the test data files into genuine XML. A handful still
3265 are not, due mainly to the lack of support for XML character entities
3266 (e.g. & => & ). This will make it easier to validate test files using
3267 tools like xmllint, as well as to edit and view them using XML tools.
3269 Daniel (16 January 2007)
3270 - Armel Asselin improved libcurl to behave a lot better when an easy handle
3271 doing an FTP transfer is removed from a multi handle before completion. The
3272 fix also fixed the "alive counter" to be correct on "premature removal" for
3275 Dan F (16 January 2007)
3276 - Fixed a small memory leak in tftp uploads discovered by curl's memory leak
3277 detector. Also changed tftp downloads to URL-unescape the downloaded
3280 Daniel (14 January 2007)
3281 - David McCreedy provided libcurl changes for doing HTTP communication on
3282 non-ASCII platforms. It does add some complexity, most notably with more
3283 #ifdefs, but I want to see this supported added and I can't see how we can
3284 add it without the extra stuff added.
3286 - Setting CURLOPT_COOKIELIST to "ALL" when no cookies at all was present,
3287 libcurl would crash when trying to read a NULL pointer.
3289 Daniel (12 January 2007)
3290 - Toby Peterson found a nasty bug that prevented (lib)curl from properly
3291 downloading (most) things that were larger than 4GB on 32 bit systems. Matt
3292 Witherspoon helped as narrow down the problem.
3294 Daniel (5 January 2007)
3295 - Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
3296 curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
3297 will make libcurl shutdown SSL/TLS after the authentication is done on a
3300 Daniel (4 January 2007)
3301 - David McCreedy made changes to allow base64 encoding/decoding to work on
3302 non-ASCII platforms.
3304 Daniel (3 January 2007)
3305 - Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
3306 downloaded data in two buffers, just to be able to deal with a special HTTP
3307 pipelining case. That is now only activated for pipelined transfers. In
3308 Matt's case, it showed as a considerable performance difference,
3310 Daniel (2 January 2007)
3311 - Victor Snezhko helped us fix bug report #1603712
3312 (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
3313 (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
3314 on Windows (since 7.16.0, but that's when they were introduced as previous
3315 to that the limiting logic was made in the application only and not in the
3316 library). It was actually also broken on select()-based systems (as apposed
3317 to poll()) but we haven't had any such reports. We now use select(), Sleep()
3318 or delay() properly to sleep a while without waiting for anything input or
3319 output when the rate limiting is activated with the easy interface.
3321 - Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
3322 to get built static. It has been mentioned before and was again brought to
3323 our attention by Nathanael Nerode who filed debian bug report #405226
3324 (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
3326 Daniel (29 December 2006)
3327 - Make curl_easy_duphandle() set the magic number in the new handle.
3329 Daniel (22 December 2006)
3330 - Robert Foreman provided a prime example snippet showing how libcurl would
3331 get confused and not acknowledge the 'no_proxy' variable properly once it
3332 had used the proxy and you re-used the same easy handle. I made sure the
3333 proxy name is properly stored in the connect struct rather than the
3334 sessionhandle/easy struct.
3336 - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
3337 variable to point to when it should be a socklen_t.
3339 - When setting a proxy with environment variables and (for example) running
3340 'curl [URL]' with a URL without a protocol prefix, curl would not send a
3341 correct request as it failed to add the protocol prefix.
3343 Daniel (21 December 2006)
3344 - Robson Braga Araujo reported bug #1618359
3345 (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
3346 patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
3347 enters an infinite loop, while curl 7.16.1-20061218 does one additional
3348 unnecessary request.
3350 Fix: During the "Major overhaul introducing http pipelining support and
3351 shared connection cache within the multi handle." change, headerbytecount
3352 was moved to live in the Curl_transfer_keeper structure. But that structure
3353 is reset in the Transfer method, losing the information that we had about
3354 the header size. This patch moves it back to the connectdata struct.
3356 Daniel (16 December 2006)
3357 - Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
3358 during certain conditions when GnuTLS is used.
3360 Daniel (11 December 2006)
3361 - Alexey Simak found out that when doing FTP with the multi interface and
3362 something went wrong like it got a bad response code back from the server,
3363 libcurl would leak memory. Added test case 538 to verify the fix.
3365 I also noted that the connection would get cached in that case, which
3366 doesn't make sense since it cannot be re-use when the authentication has
3367 failed. I fixed that issue too at the same time, and also that the path
3368 would be "remembered" in vain for cases where the connection was about to
3371 Daniel (6 December 2006)
3372 - Sebastien Willemijns reported bug #1603712
3373 (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
3374 getting cut off prematurely when --limit-rate is used. While I found no such
3375 problems in my tests nor in my reading of the code, I found that the
3376 --limit-rate code was severly flawed (since it was moved into the lib, since
3377 7.15.5) when used with the easy interface and it didn't work as documented
3378 so I reworked it somewhat and now it works for my tests.
3380 Daniel (5 December 2006)
3381 - Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
3382 passing a curl_off_t argument to the Curl_read_rewind() function which takes
3383 an size_t argument. Curl_read_rewind() also had debug code left in it and it
3384 was put in a different source file with no good reason when only used from
3387 - Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
3388 no code present in the library that receives the option. Since it was not
3389 possible to use, we know that no current users exist and thus we simply
3390 removed it from the docs and made the code always use the default path of
3393 - Jared Lundell filed bug report #1604956
3394 (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
3395 CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
3396 will always internally use no less than 1 entry in the connection cache.
3398 - Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
3401 - Martin Skinner brought back bug report #1230118 to haunt us once again.
3402 (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
3403 properly for all input dates on Windows. It was mostly seen on some TZ time
3404 zones using DST. Luckily, Martin also provided a fix.
3406 - Alexey Simak filed bug report #1600447
3407 (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
3408 FTP connections don't work with the multi interface. The problem is here
3409 that the multi interface state machine has a state during which it can wait
3410 for the data connection to connect, but the active connection is not done in
3411 the same step in the sequence as the passive one is so it doesn't quite work
3412 for active. The active FTP code still use a blocking function to allow the
3413 remote server to connect.
3415 The fix (work-around is a better word) for this problem is to set the
3416 boolean prematurely that the data connection is completed, so that the "wait
3417 for connect" phase ends at once.
3419 The proper fix, left for the future, is of course to make the active FTP
3420 case to act in a non-blocking way too.
3422 - Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
3423 HTTP upload was disconnected:
3425 "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
3426 setting *only* POLLHUP on poll() when the conditions in my previous mail
3427 occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
3428 basically what was happening, is poll() was returning immediately (with
3429 POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
3430 POLLOUT was set. This still caused Curl_readwrite() to be called, which
3431 quickly returned. Then the transfer() loop kept continuing at full speed
3434 Daniel (1 December 2006)
3435 - Toon Verwaest reported that there are servers that send the Content-Range:
3436 header in a third, not suppported by libcurl, format and we agreed that we
3437 could make the parser more forgiving to accept all the three found
3440 Daniel (25 November 2006)
3441 - Venkat Akella found out that libcurl did not like HTTP responses that simply
3442 responded with a single status line and no headers nor body. Starting now, a
3443 HTTP response on a persistent connection (i.e not set to be closed after the
3444 response has been taken care of) must have Content-Length or chunked
3445 encoding set, or libcurl will simply assume that there is no body.
3447 To my horror I learned that we had no less than 57(!) test cases that did bad
3448 HTTP responses like this, and even the test http server (sws) responded badly
3449 when queried by the test system if it is the test system. So although the
3450 actual fix for the problem was tiny, going through all the newly failing test
3451 cases got really painful and boring.
3453 Daniel (24 November 2006)
3454 - James Housley did lots of work and introduced SFTP downloads.
3456 Daniel (13 November 2006)
3457 - Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
3458 out a stack overwrite (and the corresponding fix) on 64bit Windows when
3459 dealing with HTTP chunked encoding.
3461 Daniel (9 November 2006)
3462 - Nir Soffer updated libcurl.framework.make:
3463 o fix symlinks, should link to Versions, not to ./Versions
3464 o indentation improvments
3466 - Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
3467 2006. It turned out we wrongly assumed that the connection cache was present
3468 when tearing down a connection.
3470 - Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
3471 multi interface, but I could also repeat it doing multiple sequential ones
3472 with the easy interface. Using Ciprian's test case, I could fix it.
3474 Daniel (8 November 2006)
3475 - Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
3476 CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
3477 SSL handshake. This is now stopped.
3479 Daniel (7 November 2006)
3480 - Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
3481 wrong error message in the error message buffer.
3483 Daniel (3 November 2006)
3484 - Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
3485 KNOWN_BUGS #25, which happens when a proxy closes the connection when
3486 libcurl has sent CONNECT, as part of an authentication negotiation. Starting
3487 now, libcurl will re-connect accordingly and continue the authentication as
3490 Daniel (2 November 2006)
3491 - James Housley brought support for SCP transfers, based on the libssh2 library
3492 for the actual network protocol stuff.
3494 Added these new curl_easy_setopt() options:
3496 CURLOPT_SSH_AUTH_TYPES
3497 CURLOPT_SSH_PUBLIC_KEYFILE
3498 CURLOPT_SSH_PRIVATE_KEYFILE
3500 Version 7.16.0 (30 October 2006)
3502 Daniel (25 October 2006)
3503 - Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
3504 case when 401 or 407 are returned, *IF* no auth credentials have been given.
3505 The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
3506 and 407 cases when auth credentials is given, but we've now covered this
3509 You might get some amounts of headers transferred before this situation is
3510 detected, like for when a "100-continue" is received as a response to a
3511 POST/PUT and a 401 or 407 is received immediately afterwards.
3513 Added test 281 to verify this change.
3515 Daniel (23 October 2006)
3516 - Ravi Pratap provided a major update with pipelining fixes. We also no longer
3517 re-use connections (for pipelining) before the name resolving is done.
3519 Daniel (21 October 2006)
3520 - Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
3521 the single test applications' link and dependences, so that you easier can
3522 override those from the command line when using make.
3524 - Armel Asselin separated CA cert verification problems from problems with
3525 reading the (local) CA cert file to let users easier pinpoint the actual
3526 problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
3528 Daniel (18 October 2006)
3529 - Removed the "protocol-guessing" for URLs with host names starting with FTPS
3530 or TELNET since they are practically non-existant. This leaves us with only
3531 three different prefixes that would assume the protocol is anything but
3532 HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
3534 Daniel (17 October 2006)
3535 - Bug report #1579171 pointed out code flaws detected with "prefast", and they
3536 were 1 - a too small memory clear with memset() in the threaded resolver and
3537 2 - a range of potentially bad uses of the ctype family of is*() functions
3538 such as isdigit(), isalnum(), isprint() and more. The latter made me switch
3539 to using our own set of these functions/macros using uppercase letters, and
3540 with some extra set of crazy typecasts to avoid mistakingly passing in
3541 negative numbers to the underlying is*() functions.
3543 - With Jeff Pohlmeyer's help, I fixed the expire timer when using
3544 curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
3545 options now work fine with curl_multi_socket() as well.
3547 Daniel (16 October 2006)
3548 - Added a check in configure that simply tries to run a program (not when
3549 cross-compiling) in order to detect problems with run-time libraries that
3550 otherwise would occur when the sizeof tests for curl_off_t would run and
3551 thus be much more confusing to users. The check of course should run after
3552 all lib-checks are done and before any other test is used that would run an
3553 executable built for testing-purposes.
3555 Dan F (13 October 2006)
3556 - The tagging of application/x-www-form-urlencoded POST body data sent
3557 to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
3558 included as part of the header). A message was also added to the
3559 command line tool to show when data is being sent, enabled when
3562 Daniel (12 October 2006)
3563 - Starting now, adding an easy handle to a multi stack that was already added
3564 to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
3566 - Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
3567 and while doing so it became apparent that the current timeout system for
3568 the socket API really was a bit awkward since it become quite some work to
3569 be sure we have the correct timeout set.
3571 Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
3572 callback the app can set to get to know when the general timeout time
3573 changes and thus for an application like hiperfifo.c it makes everything a
3574 lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
3575 good old libcurl tradition.
3577 Jeff has also updated the hiperfifo.c example code to use this news.
3579 Daniel (9 October 2006)
3580 - Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
3581 case 535 and it now runs fine. Again a problem with the pipelining code not
3582 taking all possible (error) conditions into account.
3584 Daniel (6 October 2006)
3585 - Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
3586 test case 533 and the test now runs fine.
3588 Daniel (4 October 2006)
3589 - Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
3590 but that worked nicely in 7.15.5. I converted it into test case 532 and
3593 Daniel (29 September 2006)
3594 - Removed a few other no-longer present options from the header file.
3596 - Support for FTP third party transfers was removed. Here's why:
3598 o The recent multi interface changes broke it and the design of the 3rd party
3599 transfers made it very hard to fix the problems
3600 o It was still blocking and thus nasty for the multi interface
3601 o It was a lot of extra code for a very rarely used feature
3602 o It didn't use the same code as for "plain" FTP transfers, so it didn't work
3603 fine for IPv6 and it didn't properly re-use connections and more
3604 o There's nobody around who's willing to work on and improve the existing
3607 This does not mean that third party transfers are banned forever, only that
3608 they need to be done better if they are to be re-added in the future.
3610 The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
3611 options from the command line tool. For this reason, I also bumped the
3612 version info for the lib.
3614 Daniel (28 September 2006)
3615 - Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
3616 would crash if a bad function sequence was used when shutting down after
3617 using the multi interface (i.e using easy_cleanup after multi_cleanup) so
3618 precautions have been added to make sure it doesn't any more - test case 529
3619 was added to verify.
3621 Daniel (27 September 2006)
3622 - The URL in the cookie jar file is now changed since it was giving a 404.
3623 Reported by Timothy Stone. The new URL will take the visitor to a curl web
3624 site mirror with the document.
3626 Daniel (24 September 2006)
3627 - Bernard Leak fixed configure --with-gssapi-libs.
3629 - Cory Nelson made libcurl use the WSAPoll() function if built for Windows
3630 Vista (_WIN32_WINNT >= 0x0600)
3632 Daniel (23 September 2006)
3633 - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
3634 encrypt the control connection and use the data connection "plain".
3636 - Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
3637 as it now will read the full data sent from servers. The SOCKS-related code
3638 was also moved to the new lib/socks.c source file.
3640 Daniel (21 September 2006)
3641 - Added test case 531 in an attempt to repeat bug report #1561470
3642 (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
3643 FTP upload fails with the multi interface. It did not, but I made a failed
3644 upload still assume the control connection to be fine.
3646 Daniel (20 September 2006)
3647 - Armel Asselin fixed problems when you gave a proxy URL with user name and
3648 empty password or no password at all. Test case 278 and 279 were added to
3651 Daniel (12 September 2006)
3652 - Added docs/examples/10-at-a-time.c by Michael Wallner
3654 - Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
3656 Daniel (11 September 2006)
3657 - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
3658 handle that is part of a multi handle first removes the handle from the
3661 - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
3662 session-ID re-use on demand since there obviously are broken servers out
3663 there that misbehave with session-IDs used.
3665 - Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
3666 problem with it (SIGSEGV-style). It clearly showed that the existing
3667 socket-state and state-difference function wasn't good enough so I rewrote
3668 it and could then re-run Jeff's program without any crash. The previous
3669 version clearly could miss to tell the application when a handle changed
3670 from using one socket to using another.
3672 While I was at it (as I could use this as a means to track this problem
3673 down), I've now added a 'magic' number to the easy handle struct that is
3674 inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
3675 we can use internally to detect that an easy handle seems to be fine, or at
3676 least not closed or freed (freeing in debug builds fill the area with 0x13
3677 bytes but in normal builds we can of course not assume any particular data
3678 in the freed areas).
3680 Daniel (9 September 2006)
3681 - Michele Bini fixed how the hostname is put in NTLM packages. As servers
3682 don't expect fully qualified names we need to cut them off at the first dot.
3684 - Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
3685 of them can be completetly removed though...
3687 Daniel (6 September 2006)
3688 - Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
3689 multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
3690 handle will be attempted to get pipelined instead of done in parallell as
3691 they are performed otherwise.
3693 As a side-effect from this work, connections are now shared between all easy
3694 handles within a multi handle, so if you use N easy handles for transfers,
3695 each of them can pick up and re-use a connection that was previously used by
3696 any of the handles, be it the same or one of the others.
3698 This separation of the tight relationship between connections and easy
3699 handles is most noticable when you close easy handles that have been used in
3700 a multi handle and check amount of used memory or watch the debug output, as
3701 there are times when libcurl will keep the easy handle around for a while
3702 longer to be able to close it properly. Like for sending QUIT to close down
3705 This is a major change.
3707 Daniel (4 September 2006)
3708 - Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
3709 patch that while not fixing things very nicely, it does make the SOCKS5
3710 proxy connection slightly better as it now acknowledges the timeout for
3711 connection and it no longer segfaults in the case when SOCKS requires
3712 authentication and you did not specify username:password.
3714 Daniel (31 August 2006)
3715 - Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
3716 name resolves. It could get stuck in the wrong state.
3718 Gisle (29 August 2006)
3719 - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
3720 compiler now uses the same config.dos file (renamed to config.h by
3721 make). libcurl now builds fine using Watcom and Metaware's High-C
3722 using the Watt-32 tcp/ip-stack.
3724 Daniel (29 August 2006)
3725 - David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
3726 allow applications to set their own socket options.
3728 Daniel (25 August 2006)
3729 - Armel Asselin reported that the 'running_handles' counter wasn't updated
3730 properly if you removed a "live" handle from a multi handle with
3731 curl_multi_remove_handle().
3733 Daniel (22 August 2006)
3734 - David McCreedy fixed a remaining mistake from the August 19 TYPE change.
3736 - Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
3737 code when doing pure ipv6 EPRT connections.
3739 Daniel (19 August 2006)
3740 - Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
3741 command on subsequent requests on a re-used connection unless it has to.
3743 - Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
3744 files in the root directory.
3746 - Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
3747 send the whole request at once, even though the Expect: header was disabled
3748 by the application. An effect of this change is also that small (< 1024
3749 bytes) POSTs are now always sent without Expect: header since we deem it
3750 more costly to bother about that than the risk that we send the data in
3753 Daniel (9 August 2006)
3754 - Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
3755 CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
3756 in the command sequence as it would have run if there would've been a
3759 Daniel (8 August 2006)
3760 - Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
3761 on a persistent connection and allowed the first to use that header, you
3762 could not disable it for the second request.
3764 Daniel (7 August 2006)
3765 - Domenico Andreolfound a quick build error which happened because
3766 src/config.h.in was not a proper duplcate of lib/config.h.in which it
3767 should've been and this was due to the maketgz script not doing the cp
3770 Version 7.15.5 (7 August 2006)
3772 Daniel (2 August 2006)
3773 - Mark Lentczner fixed how libcurl was not properly doing chunked encoding
3774 if the header "Transfer-Encoding: chunked" was set by the application.
3775 http://curl.haxx.se/bug/view.cgi?id=1531838
3777 Daniel (1 August 2006)
3778 - Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
3779 an unknown error number on glibc systems.
3780 http://curl.haxx.se/bug/view.cgi?id=1532289
3782 Daniel (31 July 2006)
3783 - *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
3784 prototypes: they both now provide the number of running handles back to the
3785 calling function. It makes the functions resemble the good old
3786 curl_multi_perform() more and provides a nice way to know when the multi
3789 ALERT2: don't use the curl_multi_socket*() functionality in anything
3790 production-like until I say it's somewhat settled, as I suspect there might
3791 be some further API changes before I'm done...
3793 Daniel (28 July 2006)
3794 - Yves Lejeune fixed so that replacing Content-Type: when doing multipart
3795 formposts work exactly the way you want it (and the way you'd assume it
3798 Daniel (27 July 2006)
3799 - David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
3800 control and data connection, as the existing --ftp-ssl option only requests
3803 - [Hiper-related work] Added a function called curl_multi_assign() that will
3804 set a private pointer added to the internal libcurl hash table for the
3805 particular socket passed in to this function:
3807 CURLMcode curl_multi_assign(CURLM *multi_handle,
3808 curl_socket_t sockfd,
3811 'sockp' being a custom pointer set by the application to be associated with
3812 this socket. The socket has to be already existing and in-use by libcurl,
3813 like having already called the callback telling about its existance.
3815 The set hashp pointer will then be passed on to the callback in upcoming
3816 calls when this same socket is used (in the brand new 'socketp' argument).
3818 Daniel (26 July 2006)
3819 - Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
3820 tool option named --ftp-alternative-to-user. It provides a mean to send a
3821 particular command if the normal USER/PASS approach fails.
3823 - Michael Jerris added magic that builds lib/curllib.vcproj automatically for
3826 Daniel (25 July 2006)
3827 - Georg Horn made the transfer timeout error message include more details.
3829 Daniel (20 July 2006)
3830 - David McCreedy fixed a build error when building libcurl with HTTP disabled,
3831 problem added with the curl_formget() patch.
3833 Daniel (17 July 2006)
3834 - Jari Sundell did some excellent research and bug tracking, figured out that
3835 we did wrong and patched it: When nodes were removed from the splay tree,
3836 and we didn't properly remove it from the splay tree when an easy handle was
3837 removed from a multi stack and thus we could wrongly leave a node in the
3838 splay tree pointing to (bad) memory.
3840 Daniel (14 July 2006)
3841 - David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
3842 for FTP ASCII transfers.
3844 Daniel (8 July 2006)
3845 - Ates Goral pointed out that libcurl's cookie parser did case insensitive
3846 string comparisons on the path which is incorrect and provided a patch that
3847 fixes this. I edited test case 8 to include details that test for this.
3849 - Ingmar Runge provided a source snippet that caused a crash. The reason for
3850 the crash was that libcurl internally was a bit confused about who owned the
3851 DNS cache at all times so if you created an easy handle that uses a shared
3852 DNS cache and added that to a multi handle it would crash. Now we keep more
3853 careful internal track of exactly what kind of DNS cache each easy handle
3854 uses: None, Private (allocated for and used only by this single handle),
3855 Shared (points to a cache held by a shared object), Global (points to the
3856 global cache) or Multi (points to the cache within the multi handle that is
3857 automatically shared between all easy handles that are added with private
3860 Daniel (4 July 2006)
3861 - Toshiyuki Maezawa fixed a problem where you couldn't override the
3862 Proxy-Connection: header when using a proxy and not doing CONNECT.
3864 Daniel (24 June 2006)
3865 - Michael Wallner added curl_formget(), which allows an application to extract
3866 (serialise) a previously built formpost (as with curl_formadd()).
3868 Daniel (23 June 2006)
3869 - Arve Knudsen found a flaw in curl_multi_fdset() for systems where
3870 curl_socket_t is unsigned (like Windows) that could cause it to wrongly
3871 return a max fd of -1.
3873 Daniel (20 June 2006)
3874 - Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
3875 CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
3876 to send or receive data. This kind of adds the the command line tool's
3877 option --limit-rate to the library.
3879 The rate limiting logic in the curl app is now removed and is instead
3880 provided by libcurl itself. Transfer rate limiting will now also work for -d
3881 and -F, which it didn't before.
3883 Daniel (19 June 2006)
3884 - Made -K on a file that couldn't be read cause a warning to be displayed.
3886 Daniel (13 June 2006)
3887 - Dan Fandrich implemented --enable-hidden-symbols configure option to enable
3888 -fvisibility=hidden on gcc >= 4.0. This reduces the size of the libcurl
3889 binary and speeds up dynamic linking by hiding all the internal symbols from
3892 Version 7.15.4 (12 June 2006)
3894 Daniel (8 June 2006)
3895 - Brian Dessent fixed the code for cygwin in three distinct ways:
3897 The first modifies {lib,src}/setup.h to not include the winsock headers
3898 under Cygwin. This fixes the reported build problem. Cygwin attempts as
3899 much as possible to emulate a posix environment under Windows. This means
3900 that WIN32 is *not* #defined and (to the extent possible) everything is done
3901 as it would be on a *ix type system. Thus <sys/socket.h> is the proper
3902 include, and even though winsock2.h is present, including it just introduces
3903 a whole bunch of incompatible socket API stuff.
3905 The second is a patch I've included in the Cygwin binary packages for a
3906 while. It skips two unnecessary library checks (-lwinmm and -lgdi32). The
3907 checks are innocuous and they do succeed, but they pollute LIBS with
3908 unnecessary stuff which gets recorded as such in the libcurl.la file, which
3909 brings them into the build of any libcurl-downstream. As far as I know
3910 these libs are really only necessary for mingw, so alternatively they could
3911 be designed to only run if $host matches *-*-mingw* but I took the safer
3912 route of skipping them for *-*-cygwin*.
3914 The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
3915 with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
3917 Daniel (7 June 2006)
3918 - Mikael Sennerholm provided a patch that added NTLM2 session response support
3919 to libcurl. The 21 NTLM test cases were again modified to comply...
3921 Daniel (27 May 2006)
3922 - Óscar Morales Vivó updated the libcurl.framework.make file.
3924 Daniel (26 May 2006)
3925 - Olaf Stüben fixed a bug that caused Digest authentication with md5-sess to
3926 fail. When using the md5-sess, the result was not Md5 encoded and Base64
3929 Daniel (25 May 2006)
3930 - Michael Wallner provided a patch that allows "SESS" to be set with
3931 CURLOPT_COOKIELIST, which then makes all session cookies get cleared.
3933 Daniel (24 May 2006)
3934 - Tor Arntsen made test 271 run fine again since the TFTP path fix.
3936 Daniel (23 May 2006)
3937 - Martin Michlmayr filed debian bug report #367954, but the same error also
3938 showed up in the autobuilds. It seems a rather long-since introduced shell
3939 script flaw in the configure script suddenly was detected by the bash
3940 version in Debian Unstable. It had previously passed undetected by all
3941 shells used so far...
3943 - David McCreedy updated lib/config-tpf.h
3945 Daniel (11 May 2006)
3946 - Fixed the configure's check for old-style SSLeay headers since I fell over a
3947 case with a duplicate file name (a krb4 implementation with an err.h
3948 file). I converted the check to manually make sure three of the headers are
3949 present before considering them fine.
3951 - David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
3952 checks on the to-be-returned socket to make sure it truly seems to be alive
3953 and well. For SSL connection it (only) uses OpenSSL functions.
3955 Daniel (10 May 2006)
3956 - Fixed DICT in two aspects:
3958 1 - allow properly URL-escaped words, like using %20 for spaces
3960 2 - properly escape certain letters within a word to comply to the RFC2229
3963 - Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
3964 autotools project, which optionally (default=yes) uses libcurl on a system
3965 without a (usable) libcurl installation, but not specifying
3966 `--without-libcurl', configure determines correctly that no libcurl is
3967 available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
3968 in the resulting Makefiles.
3970 David Shaw fixed the flaw.
3972 - Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
3973 connects. The state machine was not reset properly so that subsequent
3974 connects using the same handle would fail, and there were two memory leaks.
3976 - Robson Braga Araujo fixed a memory leak when you added an easy handle to a
3977 multi stack and that easy handle had already been used to do one or more
3978 easy interface transfers, as then the code threw away the previously used
3979 DNS cache without properly freeing it.
3982 - Dan Fandrich went over the TFTP code and he pointed out and fixed numerous
3985 * The received file is corrupted when a packet is lost and retransmitted
3986 (this is a serious problem!)
3988 * Transmitting a file aborts if a block is lost and retransmitted
3990 * Data is stored in the wrong location in the buffer for uploads, so uploads
3991 always fail (I don't see how it could have ever worked, but it did on x86
3994 * A number of calls are made to strerror instead of Curl_strerror, making
3995 the code not thread safe
3997 * There are references to errno instead of Curl_sockerrno(), causing
3998 incorrect error messages on Windows
4000 * The file name includes a leading / which violates RFC3617. Doing something
4001 similar to ftp, where two slashes after the host name means an absolute
4002 reference seems a reasonable extension to fix this.
4004 * Failures in EBCDIC conversion are not propagated up to the caller but are
4007 - Fixed known bug #28. The TFTP code no longer assumes a packed struct and
4008 thus works reliably on more platforms.
4011 - Roland Blom filed bug report #1481217
4012 (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
4013 Bini and David Byron. libcurl previously wrongly used GetLastError() on
4014 windows to get error details after socket-related function calls, when it
4015 really should use WSAGetLastError() instead.
4017 When changing to this, the former function Curl_ourerrno() is now instead
4018 called Curl_sockerrno() as it is necessary to only use it to get errno from
4019 socket-related functions as otherwise it won't work as intended on Windows.
4022 - Mark Eichin submitted bug report #1480821
4023 (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
4024 problem with how libcurl dealt with GnuTLS and a case where gnutls returned
4025 GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
4026 return code, making Curl_ssl_send() confuse the upper layer - causing random
4027 28 bytes trash data to get inserted in the transfered stream.
4029 The proper fix was to make the Curl_gtls_send() function return the proper
4030 return codes that the callers would expect. The Curl_ossl_send() function
4034 - Added a --checkfor option to curl-config to allow users to easier
4035 write for example shell scripts that test for the presence of a
4036 new-enough libcurl version. If --checkfor is given a version string
4037 newer than what is currently installed, curl-config will return a
4038 non-zero exit code and output a string about the unfulfilled
4041 Daniel (26 April 2006)
4042 - David McCreedy brought initial line end conversions when doing FTP ASCII
4043 transfers. They are done on non-windows systems and translate CRLF to LF.
4045 I modified the 15 LIST-using test cases accordingly. The downside is that now
4046 we'll have even more trouble to get the tests to run on Windows since they
4047 should get CRLF newlines left intact which the *nix versions don't. I figure
4048 the only sane thing to do is to add some kind of [newline] macro for the test
4049 case files and have them expanded to the proper native line ending when the
4050 test cases are run. This is however left to implement.
4052 Daniel (25 April 2006)
4053 - Paul Querna fixed libcurl to better deal with deflate content encoding
4054 when the stream (wrongly) lacks a proper zlib header. This seems to be the
4055 case on too many actual server implementations.
4057 Daniel (21 April 2006)
4058 - Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
4060 Daniel (19 April 2006)
4061 - Based on previous info from Tor Arntsen, I made configure detect the Intel
4062 ICC compiler to add a compiler option for it, in order for configure to
4063 properly be able to detect function prototypes.
4065 - Robson Braga Araujo provided a patch that makes libcurl less eager to close
4066 the control connection when using FTP, for example when you remove an easy
4067 handle from a multi stack.
4069 - Applied a patch by Ates Goral and Katie Wang that corrected my bad fix
4070 attempt from April 10.
4072 Daniel (11 April 2006)
4073 - #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
4074 typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
4075 since the struct timeval field tv_sec is an int while time_t is 64bit.
4077 Daniel (10 April 2006)
4078 - Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
4079 CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
4080 connection time-out!
4082 - I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
4083 sources. See the lib/README.multi_socket for implementation story with
4084 details. Don't expect it to work fully yet. I don't intend to blow any
4085 whistles or ring any bells about it until I'm more convinced it works at
4086 least somewhat reliably.
4088 Daniel (7 April 2006)
4089 - David McCreedy's EBCDIC and TPF changes. Three new curl_easy_setopt()
4090 options (callbacks) were added:
4092 CONV_FROM_NETWORK_FUNCTION
4093 CONV_TO_NETWORK_FUNCTION
4094 CONV_FROM_UTF8_FUNCTION
4096 Daniel (5 April 2006)
4097 - Michele Bini modified the NTLM code to work for his "weird IIS case"
4098 (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
4099 function in addition to the LM one and making some other adjustments in the
4100 order the different parts of the data block are sent in the Type-2 reply.
4101 Inspiration for this work was taken from the Firefox NTLM implementation.
4103 I edited the existing 21(!) NTLM test cases to run fine with these news. Due
4104 to the fact that we now properly include the host name in the Type-2 message
4105 the test cases now only compare parts of that chunk.
4107 Daniel (28 March 2006)
4108 - #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
4109 occurred when asking libcurl to follow HTTP redirects and the original URL
4110 had more than one question mark (?). Added test case 276 to verify.
4112 Daniel (27 March 2006)
4113 - David Byron found a problem multiple -d options when libcurl was built with
4114 --enable-debug, as then curl used free() on memory allocated both with
4115 normal malloc() and with libcurl-provided functions, when the latter MUST be
4116 freed with curl_free() in debug builds.
4118 Daniel (26 March 2006)
4119 - Tor Arntsen figured out that TFTP was broken on a lot of systems since we
4120 called bind() with a too big argument in the 3rd parameter and at least
4121 Tru64, AIX and IRIX seem to be very picky about it.
4123 Daniel (21 March 2006)
4124 - David McCreedy added CURLINFO_FTP_ENTRY_PATH.
4126 - Xavier Bouchoux made the SSL connection non-blocking for the multi interface
4127 (when using OpenSSL).
4129 - Tor Arntsen fixed the AIX Toolbox RPM spec
4131 Daniel (20 March 2006)
4132 - David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
4133 reacts properly according to the CURLOPT_FTP_SSL setting.
4135 - Dan Fandrich fixed two TFTP problems: Fixed a bug whereby a received file
4136 whose length was a multiple of 512 bytes could have random garbage
4137 appended. Also, stop processing TFTP packets which are too short to be
4140 - Ilja van Sprundel reported a possible crash in the curl tool when using
4141 "curl hostwithoutslash -d data -G"
4143 Version 7.15.3 (20 March 2006)
4145 Daniel (20 March 2006)
4146 - VULNERABILITY reported to us by Ulf Harnhammar.
4148 libcurl uses the given file part of a TFTP URL in a manner that allows a
4149 malicious user to overflow a heap-based memory buffer due to the lack of
4152 This overflow happens if you pass in a URL with a TFTP protocol prefix
4153 ("tftp://"), using a valid host and a path part that is longer than 512
4156 The affected flaw can be triggered by a redirect, if curl/libcurl is told to
4157 follow redirects and an HTTP server points the client to a tftp URL with the
4158 characteristics described above.
4160 The Common Vulnerabilities and Exposures (CVE) project has assigned the name
4161 CVE-2006-1061 to this issue.
4163 Daniel (16 March 2006)
4164 - Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
4165 in the release archive.
4167 Daniel (14 March 2006)
4168 - David McCreedy fixed:
4170 a bad SSL error message when OpenSSL certificates are verified fine.
4172 a missing return code assignment in the FTP code
4174 Daniel (7 March 2006)
4175 - Markus Koetter filed debian bug report #355715 which identified a problem
4176 with the multi interface and multi-part formposts. The fix from February
4177 22nd could make the Curl_done() function get called twice on the same
4178 connection and it was not designed for that and thus tried to call free() on
4179 an already freed memory area!
4181 - Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
4184 Daniel (6 March 2006)
4185 - Lots of users on Windows have reported getting the "SSL: couldn't set
4186 callback" error message so I've now made the setting of that callback not be
4187 as critical as before. The function is only used for additional loggging/
4188 trace anyway so a failure just means slightly less data. It should still be
4189 able to proceed and connect fine to the server.
4191 Daniel (4 March 2006)
4192 - Thomas Klausner provided a patch written by Todd Vierling in bug report
4193 #1442471 that fixes a build problem on Interix.
4195 Daniel (2 March 2006)
4196 - FTP upload without a file name part in the URL now causes
4197 curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
4198 upload but named the file "(nil)" (without the quotes). Test case 524
4201 - Added a check for getprotobyname in configure so that it'll be used, thanks
4202 to Gisle Vanem's change the other day.
4204 Daniel (28 February 2006)
4205 - Dan Fandrich prevented curl from getting stuck in an endless loop in case we
4206 are out of file handles very early in curl's code where it makes sure that
4207 0, 1 and 2 aren't gonna be used by the lib for transfers.
4209 Daniel (27 February 2006)
4210 - Marty Kuhrt pointed out that there were two VMS-specific files missing in
4211 the release archive.
4213 Version 7.15.2 (27 February 2006)
4215 Daniel (22 February 2006)
4216 - Lots of work and analysis by "xbx___" in bug #1431750
4217 (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
4218 different but related bugs:
4220 1) Removing an easy handle from a multi handle before the transfer is done
4221 could leave a connection in the connection cache for that handle that is
4222 in a state that isn't suitable for re-use. A subsequent re-use could then
4223 read from a NULL pointer and segfault.
4225 2) When an easy handle was removed from the multi handle, there could be an
4226 outstanding c-ares DNS name resolve request. When the response arrived,
4227 it caused havoc since the connection struct it "belonged" to could've
4230 Now Curl_done() is called when an easy handle is removed from a multi handle
4231 pre-maturely (that is, before the transfer was complteted). Curl_done() also
4232 makes sure to cancel all (if any) outstanding c-ares requests.
4234 Daniel (21 February 2006)
4235 - Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
4236 type to the already provided type CURLPROXY_SOCKS4.
4238 I added a --socks4 option that works like the current --socks5 option but
4239 instead use the socks4 protocol.
4241 Daniel (20 February 2006)
4242 - Shmulik Regev fixed an issue with multi-pass authentication and compressed
4243 content when libcurl didn't honor the internal ignorebody flag.
4245 Daniel (18 February 2006)
4246 - Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
4247 code. It should however not be the cause of any troubles. He also fixed a
4248 few similar problems in the HTTP test server code.
4250 Daniel (17 February 2006)
4251 - Shmulik Regev provided a fix for the DNS cache when using short life times,
4252 as previously it could be holding on to old cached entries longer than
4255 Daniel (11 February 2006)
4256 - Karl Moerder added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options
4257 that an app can use to let libcurl only connect to a remote host and then
4258 extract the socket from libcurl. libcurl will then not attempt to do any
4259 transfer at all after the connect is done.
4261 - Kent Boortz improved the configure check for GnuTLS to properly set LIBS
4264 Daniel (8 February 2006)
4265 - Philippe Vaucher provided a brilliant piece of test code that show a problem
4266 with re-used FTP connections. If the second request on the same connection
4267 was set not to fetch a "body", libcurl could get confused and consider it an
4268 attempt to use a dead connection and would go acting mighty strange.
4270 Daniel (2 February 2006)
4271 - Make --limit-rate [num] mean bytes. It used to be that but it broke in my
4272 change done in November 2005.
4274 Daniel (30 January 2006)
4275 - Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
4276 curl tool with --local-port. Plain and simply set the range of ports to bind
4277 the local end of connections to. Implemented on to popular demand.
4279 - Based on an error report by Philippe Vaucher, we no longer count a retried
4280 connection setup as a follow-redirect. It turns out 1) this fails when a FTP
4281 connection is re-setup and 2) it does make the max-redirs counter behave
4284 Daniel (24 January 2006)
4285 - Michal Marek provided a patch for FTP that makes libcurl continue to try
4286 PASV even after EPSV returned a positive response code, if libcurl failed to
4287 connect to the port number the EPSV response said. Obviously some people are
4288 going through protocol-sensitive firewalls (or similar) that don't
4289 understand EPSV and then they don't allow the second connection unless PASV
4290 was used. This also called for a minor fix of test case 238.
4292 Daniel (20 January 2006)
4293 - Duane Cathey was one of our friends who reported that curl -P [IP]
4294 (CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
4295 "native" IP while it works fine for ipv6-disabled builds!
4297 In the process of fixing this, I removed the support for LPRT since I can't
4298 think of many reasons to keep doing it and asking on the mailing list didn't
4299 reveal anyone else that could either. The code that sends EPRT and PORT is
4300 now also a lot simpler than before (IMHO).
4302 Daniel (19 January 2006)
4303 - Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
4304 (built ipv4-only) didn't work.
4306 Daniel (18 January 2006)
4307 - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
4308 the configure script complained about a missing "missing" script if you ran
4309 configure within a path whose name included one or more spaces. This is due
4310 to a flaw in automake (1.9.6 and earlier). I've now worked around it by
4311 including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
4312 be used instead of the one automake ships with. This kludge needs to be
4313 removed once we get an automake version with this problem corrected.
4314 Possibly we'll then need to convert this into a kludge depending on what
4315 automake version that is used and that is gonna be painful and I don't even
4316 want to think about that now...!
4318 Daniel (17 January 2006)
4319 - David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
4320 the latest features and protocols that libcurl supports and has a minor fix
4321 to better deal with the obscure case where someone has more than one libcurl
4322 installed at the same time.
4324 Daniel (16 January 2006)
4325 - David Shaw finally removed all traces of Gopher and we are now officially
4326 not supporting it. It hasn't been functioning for years anyway, so this is
4327 just finally stating what already was true. And a cleanup at the same time.
4329 - Bryan Henderson turned the 'initialized' variable for curl_global_init()
4330 into a counter, and thus you can now do multiple curl_global_init() and you
4331 are then supposed to do the same amount of calls to curl_global_cleanup().
4332 Bryan has also updated the docs accordingly.
4334 Daniel (13 January 2006)
4335 - Andrew Benham fixed a race condition in the test suite that could cause the
4336 test script to kill all processes in the current process group!
4338 Daniel (12 January 2006)
4341 Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
4344 Fixed PROXYTUNNEL to work fine when you do ftp through a proxy. It would
4345 previously overwrite internal memory and cause unpredicted behaviour!
4347 Daniel (11 January 2006)
4348 - I decided to document the "secret option" here now, as I've received *NO*
4349 feedback at all on my mailing list requests from November 2005:
4351 I'm looking for feedback and comments. I added some experimental code the
4352 other day, that allows a libcurl user to select what method libcurl should
4353 use to reach a file on a FTP(S) server.
4355 This functionality is available in CVS code and in recent daily snapshots.
4359 The current name for the option is CURLOPT_FTP_FILEMETHOD (--ftp-method for
4360 the command line tool) and you set it to a long (there are currenly no
4361 defines for the argument values, just plain numericals). You can set three
4362 different "methods" that do this:
4364 1 multicwd - like today, curl will do a single CWD operation for each path
4365 part in the given URL. For deep hierarchies this means very many
4366 commands. This is how RFC1738 says it should be done. This is the
4369 2 nocwd - no CWD at all is done, curl will do SIZE, RETR, STOR etc and give
4370 a full path to the server.
4372 3 singlecwd - make one CWD with the full target directory and then operate
4373 on the file "normally".
4375 (With the command line tool you do --ftp-method [METHOD], where [METHOD] is
4376 one of "multicwd", "nocwd" or "singlecwd".)
4378 What feedback I'm interested in:
4380 1 - Do they work at all? Do you find servers where one of these don't work?
4382 2 - What would proper names for the option and its arguments be, if we
4383 consider this feature good enough to get included and documented in
4386 3 - Should we make libcurl able to "walk through" these options in case of
4387 (path related) failures, or should it fail and let the user redo any
4390 (This option is not documented in any man page just yet since I'm not sure
4391 these names will be used or if the functionality will end up exactly like
4392 this. And for the same reasons we have no test cases for these yet.)
4394 Daniel (10 January 2006)
4395 - When using a bad path over FTP, as in when libcurl couldn't CWD into all
4396 given subdirs, libcurl would still "remember" the full path as if it is the
4397 current directory libcurl is in so that the next curl_easy_perform() would
4398 get really confused if it tried the same path again - as it would not issue
4399 any CWD commands at all, assuming it is already in the "proper" dir.
4401 Starting now, a failed CWD command sets a flag that prevents the path to be
4402 "remembered" after returning.
4404 Daniel (7 January 2006)
4405 - Michael Jahn fixed so that the second CONNECT when doing FTP over a HTTP
4406 proxy actually used a new connection and not sent the second request on the
4409 Daniel (6 January 2006)
4410 - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
4411 is present instead of trying to mimic that script in curl's buildconf
4414 Daniel (3 January 2006)
4415 - Andres Garcia made the TFTP test server build with mingw.
4416 Daniel (16 December 2005)
4417 - Jean Jacques Drouin pointed out that you could only have a user name or
4418 password of 127 bytes or less embedded in a URL, where actually the code
4419 uses a 255 byte buffer for it! Modified now to use the full buffer size.
4421 Daniel (12 December 2005)
4422 - Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
4424 Version 7.15.1 (7 December 2005)
4426 Daniel (6 December 2005)
4427 - Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
4432 libcurl's URL parser function can overflow a malloced buffer in two ways, if
4433 given a too long URL.
4435 These overflows happen if you
4437 1 - pass in a URL with no protocol (like "http://") prefix, using no slash
4438 and the string is 256 bytes or longer. This leads to a single zero byte
4439 overflow of the malloced buffer.
4441 2 - pass in a URL with only a question mark as separator (no slash) between
4442 the host and the query part of the URL. This leads to a single zero byte
4443 overflow of the malloced buffer.
4445 Both overflows can be made with the same input string, leading to two single
4446 zero byte overwrites.
4448 The affected flaw cannot be triggered by a redirect, but the long URL must
4449 be passed in "directly" to libcurl. It makes this a "local" problem. Of
4450 course, lots of programs may still pass in user-provided URLs to libcurl
4451 without doing much syntax checking of their own, allowing a user to exploit
4454 There is no known exploit at the time of this writing.
4457 Daniel (2 December 2005)
4458 - Jamie Newton pointed out that libcurl's file:// code would close() a zero
4459 file descriptor if given a non-existing file.
4461 Daniel (24 November 2005)
4462 - Doug Kaufman provided a set of patches to make curl build fine on DJGPP
4463 again using configure.
4465 - Yang Tse provided a whole series of patches to clear up compiler warnings on
4468 Daniel (17 November 2005)
4469 - I extended a patch from David Shaw to make libcurl _always_ provide an error
4470 string in the given error buffer to address the flaw mention on 21 sep 2005.
4472 Daniel (16 November 2005)
4473 - Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
4474 installed on 'make install' time.
4476 Daniel (14 November 2005)
4477 - Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
4478 properly for a case, and so we did. We raised it even for non-SSPI builds
4479 but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
4481 - Jan Kunder's debian bug report
4482 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
4483 error message for when you try to upload a file and the requested directory
4484 doesn't exist on the target server.
4486 - Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
4487 lib/memdebug.h that showed up in his msvc builds.
4489 Daniel (13 November 2005)
4490 - Debian bug report 338681 by Jan Kunder: make curl better detect and report
4491 bad limit-rate units:
4492 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
4493 error if a bad unit is used.
4495 - Thanks to this nice summary of poll() implementations:
4496 http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
4497 Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
4498 connectin closure so we check for that case (too) and re-enable poll for
4501 Daniel (12 November 2005)
4502 - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
4503 right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
4504 poll() and use select() on cygwin too (we already do the same choice on Mac
4507 - Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
4508 client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
4510 Daniel (10 November 2005)
4511 - David Lang fixed IPv6 support for TFTP!
4513 - Introducing range stepping to the curl globbing support. Now you can specify
4514 step counter by adding :[num] within the brackets when specifying a range:
4519 If no step counter is set, it defaults to 1 as before:
4524 Daniel (8 November 2005)
4525 - Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
4526 we really have no use for reverse lookups of the address.
4528 I truly hope these are the last reverse lookups we had lingering in the
4531 - Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
4532 version of libcurl with different Windows versions. Current version of
4533 libcurl imports SSPI functions from secur32.dll. However, under Windows NT
4534 4.0 these functions are located in security.dll, under Windows 9x - in
4535 secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
4536 just forwards calls to secur32.dll).
4538 Dmitry's patch loads proper library dynamically depending on Windows
4539 version. Function InitSecurityInterface() is used to obtain pointers to all
4540 of SSPI function in one structure.
4542 Daniel (31 October 2005)
4543 - Vilmos Nebehaj improved libcurl's LDAP abilities:
4545 The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
4546 attributes in LDAP objects. So, I made a quick patch to address these
4549 The solution is simple: if we connect to an LDAP server, first try LDAPv3
4550 (which is the preferred protocol as of now) and then fall back to LDAPv2.
4551 In case of binary attributes, we first convert them to base64, just like the
4552 openldap client does. It uses ldap_get_values_len() instead of
4553 ldap_get_values() to be able to retrieve binary attributes correctly. I
4554 defined the necessary LDAP macros in lib/ldap.c to be able to compile
4555 libcurl without the presence of libldap
4557 Daniel (27 October 2005)
4558 - Nis Jorgensen filed bug report #1338648
4559 (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
4560 feature request, but anyway. It pointed out that --max-redirs did not allow
4561 it to be set to 0, which then would return an error code on the first
4562 Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
4563 set to 0, or -1 for infinity. Added test case 274 to verify.
4565 - tommink[at]post.pl reported in bug report #1337723
4566 (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
4567 binary data from stdin on Windows if the data contained control-Z (hex 1a)
4568 since that is treated as end-of-file when read in text mode. Gisle Vanem
4569 pointed out the fix, and I made both -T and --data-binary take advantage of
4572 - Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
4573 in the man page, curl would send an invalid HTTP Range: header. The correct
4574 way would be to use "-r [number]-" or even "-r -[number]". Starting now,
4575 curl will warn if this is discovered, and automatically append a dash to the
4576 range before passing it to libcurl.
4578 Daniel (25 October 2005)
4579 - Amol Pattekar reported a bug with great detail and a fine example in bug
4580 #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
4581 interface and connecting to a host with multiple IP addresses, and one of
4582 the addresses fails to connect (the server must exist and respond, just not
4583 accept connections) libcurl leaks a socket descriptor. Thanks to the fine
4584 report, I could find and fix this.
4586 Daniel (22 October 2005)
4587 - Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
4588 #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
4589 stream from a server and the server requests a "rehandshake", the current
4590 code simply returns this as an error. I have no good way to test this, but
4591 I've added a crude attempt of dealing with this situation slightly better -
4592 it makes a blocking handshake if this happens. Done like this because fixing
4593 this the "proper" way (that would handshake asynchronously) will require
4594 quite some work and I really need a good way to test this to do such a
4597 Daniel (21 October 2005)
4598 - "Ofer" reported a problem when libcurl re-used a connection and failed to do
4599 it, it could then accidentally actually crash. Presumably, this concerns FTP
4600 connections. http://curl.haxx.se/bug/view.cgi?id=1330310
4602 - Temprimus improved the MSVC makefile so that the static debug SSL libs are
4603 linked to the executable and not to the libcurld.lib
4604 http://curl.haxx.se/bug/view.cgi?id=1326676
4606 - Bradford Bruce made the windows resolver code properly return
4607 CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
4608 errors (as documented).
4610 Daniel (20 October 2005)
4611 - Dave Dribin made libcurl understand and handle cases when the server
4612 (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
4613 never happen in a sane world, libcurl previously got into an infinite loop
4614 when this occurred. Dave added test 273 to verify this.
4616 - Temprimus improved the MSVC makefile: "makes a build option available so if
4617 you set rtlibcfg=static for the make, then it would build with /MT. The
4618 default behaviour is /MD (the original)."
4619 http://curl.haxx.se/bug/view.cgi?id=1326665
4621 Daniel (14 October 2005)
4622 - Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
4623 reported, the define is used by the configure script and is assumed to use
4624 the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
4627 Version 7.15.0 (13 October 2005)
4629 Daniel (12 October 2005)
4630 - Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
4631 code that would overflow a buffer if given a too long user name or domain
4632 name. This would happen if you enable NTLM authentication and either
4634 A - pass in a user name and domain name to libcurl that together are longer
4637 B - allow (lib)curl to follow HTTP "redirects" (Location: and the
4638 appropriate HTTP 30x response code) and the new URL contains a URL with
4639 a user name and domain name that together are longer than 192 bytes
4641 See http://curl.haxx.se/docs/security.html for further details and updates
4643 Daniel (5 October 2005)
4644 - Darryl House reported a problem with using -z to download files from FTP.
4645 It turned out that if the given time stamp was exact the same as the remote
4646 time stamp, the file would still wrongly be downloaded. Added test case 272
4649 Daniel (4 October 2005)
4650 - Domenico Andreoli fixed a man page malformat and removed odd (0xa0) bytes
4651 from the configure script.
4653 - Michael Wallner reported that the date parser had wrong offset stored for
4654 the MEST and CEST time zones.
4656 Daniel (27 September 2005)
4657 - David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
4658 that identified a silly problem with Content-Range: headers with the 'bytes'
4659 keyword written in a different case than all lowercase! It would cause a
4662 - TJ Saunders of the proftpd project identified and pointed out problems with
4663 the modified FTPS negotiation change of August 19 2005. Thus, we revert the
4664 change back to pre-7.14.1 status.
4666 Daniel (21 September 2005)
4667 - Fixed "cut off" sentence in the libcurl-tutorial man page:
4668 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
4670 - Clarified in the curl_easy_setopt man page what the default
4671 CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
4672 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
4674 - Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
4675 sometimes doesn't fill in the buffer even though it is supposed to:
4676 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
4678 - When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
4681 Daniel (19 September 2005)
4682 - Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
4684 Daniel (15 September 2005)
4685 - Added a TFTP server to the test suite and made the test suite capable of
4688 Daniel (7 September 2005)
4689 - Ben Madsen's detailed reports that funnily enough only occurred with certain
4690 glibc versions turned out to be curl using an already closed file handle
4691 during certain conditions (like when saving FTP server "headers").
4693 - Scott Davis helped me track down a problem in the test HTTP server that made
4694 test case 56 wrongly fail at times. It turned out it was due to the server
4695 finding the end of a chunked-encoded POST too early.
4697 Daniel (6 September 2005)
4698 - Now curl warns if an unknown variable is used in the -w/--writeout argument.
4700 Daniel (4 September 2005)
4701 - I applied Nicolas François' man page patch he posted to the Debian bug
4702 tracker. It corrected two lines that started with apostrophes, which isn't
4703 legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
4705 - Added --ftp-skip-pasv-ip to the command line tool, that sets the new
4706 CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
4707 connection's IP address when setting up the data connection instead of
4708 extractting the IP address from the PASV response. It has turned out this
4709 feature is frequently needed by people to circumvent silly servers and silly
4710 firewalls, especially when FTPS is used and the PASV command-response is
4713 Sponsored by CU*Answers
4715 Daniel (1 September 2005)
4716 - John Kelly added TFTP support to libcurl. A bunch of new error codes was
4717 added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
4718 list of protocols whereever those are mentioned.
4720 Version 7.14.1 (1 September 2005)
4722 Daniel (29 August 2005)
4723 - Kevin Lussier pointed out a problem with curllib.dsp and how to fix it.
4725 - Igor Polyakov fixed a rather nasty problem with the threaded name resolver
4726 for Windows, that could lead to an Access Violation when the multi interface
4727 was used due to an issue with how the resolver thread was and was not
4730 - Simon Josefsson brought a patch that allows curl to get built to use GNU GSS
4731 instead of MIT/Heimdal for GSS capabilities.
4733 Daniel (24 August 2005)
4734 - Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
4735 from the command line tool with --ignore-content-length. This will make it
4736 easier to download files from Apache 1.x (and similar) servers that are
4737 still having problems serving files larger than 2 or 4 GB. When this option
4738 is enabled, curl will simply have to wait for the server to close the
4739 connection to signal end of transfer. I wrote test case 269 that runs a
4740 simple test to verify that this works.
4742 - (Trying hard to exclude emotions now.) valgrind version 3 suddenly renamed
4743 the --logfile command line option to --log-file, and thus the test script
4744 valgrind autodetection now has yet another version check to do and then it
4745 alters the valgrind command line accordingly.
4747 - Fixed CA cert verification using GnuTLS with the default bundle, which
4748 previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
4749 Ralph Mitchell reported.
4751 Daniel (19 August 2005)
4752 - Norbert Novotny had problems with FTPS and he helped me work out a patch
4753 that made curl run fine in his end. The key was to make sure we do the
4754 SSL/TLS negotiation immediately after the TCP connect is done and not after
4755 a few other commands have been sent like we did previously. I don't consider
4756 this change necessary to obey the standards, I think this server is pickier
4757 than what the specs allow it to be, but I can't see how this modified
4758 libcurl code can add any problems to those who are interpreting the
4759 standards more liberally.
4761 Daniel (17 August 2005)
4762 - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
4763 CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
4764 write the result to a given cookie jar and then never actually call
4765 curl_easy_perform() - the given file(s) to read was never read but the
4766 output file was written and thus it caused a "funny" result.
4768 - While doing some tests for the bug above, I noticed that Firefox generates
4769 large numbers (for the expire time) in the cookies.txt file and libcurl
4770 didn't treat them properly. Now it does.
4772 Daniel (15 August 2005)
4773 - Added more verbose "warning" messages to the curl client for cases where it
4774 fails to open/read files etc to help users diagnose why it doesn't do what
4775 you'd expect it to. Converted lots of old messages to use the new generic
4776 function I wrote for this purpose.
4778 Daniel (13 August 2005)
4779 - James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
4780 site responds with bad HTTP response that doesn't contain any header at all,
4781 only a response body, and the write callback returns 0 to abort the
4782 transfer, it didn't have any real effect but the write callback would be
4783 called once more anyway.
4785 Daniel (12 August 2005)
4786 - Based on Richard Clayton's reports, I found out that using curl -d @filename
4787 when 'filename' was not possible to access made curl use a GET request
4790 - The time condition illegal syntax warning is now inhibited if -s is used.
4792 Daniel (10 August 2005)
4793 - Mario Schroeder found out that one of the debug callbacks calls that regards
4794 SSL data with the CURLINFO_TEXT type claimed that the data was one byte
4795 larger than it actually is, thus falsely telling the application that the
4796 terminating zero was part of the data.
4798 Daniel (9 August 2005)
4799 - Christopher R. Palmer fixed the offsets used for date parsings when the time
4800 zone name of a daylight savings time was used. For example, PDT vs PDS. This
4801 flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
4802 Fortunately, no web server or cookie string etc should be using such time
4803 zone names thus limiting the effect of this bug.
4805 Daniel (8 August 2005)
4806 - Jon Grubbs filed bug report #1249962
4807 (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
4808 with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
4809 switches to pure HTTP internally when an HTTP proxy is used, even for FTP
4810 URLs. The problem would also occur with other multi-pass auth methods.
4812 Daniel (7 August 2005)
4813 - When curl is built with GnuTLS, curl-config didn't include "SSL" when
4814 --features was used.
4816 Daniel (28 July 2005)
4817 - If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
4818 set to 1, CURLOPT_NOBODY will now automatically be set to 0.
4820 Daniel (27 July 2005)
4821 - Dan Fandrich changes over the last week: fixed numerous minor configure
4822 option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
4823 and --without-krb4. Spellfixed several error messages.
4825 - Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
4826 simple interface to extracting and setting cookies in libcurl's internal
4827 "cookie jar". See the new cookie_interface.c example code.
4829 Daniel (13 July 2005)
4830 - Diego Casorran provided patches to make curl build fine on Amiga again.
4832 Daniel (12 July 2005)
4833 - Adrian Schuur added trailer support in the chunked encoding stream. The
4834 trailer is then sent to the normal header callback/stream. I wrote up test
4835 case 266 to verify the basic functionality. Do note that test case 34
4836 contains a flawed chunked encoding stream that still works the same.
4838 Daniel (5 July 2005)
4839 - Gisle Vanem came up with a nice little work-around for bug #1230118
4840 (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
4841 libc time functions may return data one hour off if TZ is not set and
4842 automatic DST adjustment is enabled. This made curl_getdate() return wrong
4843 value, and it also concerned internal cookie expirations etc.
4845 Daniel (4 July 2005)
4846 - Andrew Bushnell provided enough info for me to tell that we badly needed to
4847 fix the CONNECT authentication code with multi-pass auth methods (such as
4848 NTLM) as it didn't previously properly ignore response-bodies - in fact it
4849 stopped reading after all response headers had been received. This could
4850 lead to libcurl sending the next request and reading the body from the first
4851 request as response to the second request. (I also renamed the function,
4852 which wasn't strictly necessary but...)
4854 The best fix would to once and for all make the CONNECT code use the
4855 ordinary request sending/receiving code, treating it as any ordinary request
4856 instead of the special-purpose function we have now. It should make it
4857 better for multi-interface too. And possibly lead to less code...
4859 Added test case 265 for this. It doesn't work as a _really_ good test case
4860 since the test proxy is too stupid, but the test case helps when running the
4863 Daniel (30 June 2005)
4864 - Dan Fandrich improved the configure script's ability to figure out what kind
4865 of strerror_r() API that is used when cross-compiling. If __GLIB__ is
4866 defined, it assumes the glibc API. If not, it issues a notice as before that
4867 the user needs to manually edit lib/config.h for this.
4869 Daniel (23 June 2005)
4870 - David Shaw's fix that unifies proxy string treatment so that a proxy given
4871 with CURLOPT_PROXY can use a http:// prefix and user + password. The user
4872 and password fields are now also URL decoded properly. Test case 264 added
4875 Daniel (22 June 2005)
4876 - David Shaw updated libcurl.m4
4878 Daniel (14 June 2005)
4879 - Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
4880 (http://curl.haxx.se/bug/view.cgi?id=1216500). Comment in
4881 http://curl.haxx.se/mail/lib-2005-06/0059.html
4883 Daniel (13 June 2005)
4884 - Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
4887 Daniel (9 June 2005)
4888 - Incorporated Tupone's findtool fix in buildconf (slightly edited)
4890 - Incorporated Tupone's head -n fix in buildconf.
4892 Daniel (8 June 2005)
4893 - Reverted Tupone's patch again, it broke numerous autobuilds. Let's apply it
4894 in pieces, one by one and see what we need to adjust to work all over.
4896 Daniel (6 June 2005)
4897 - Tupone Alfredo fixed three problems in buildconf:
4899 1) findtool does look per tool in PATH and think ./perl is the perl
4900 executable, while is just a local directory (I have . in the PATH)
4902 2) I got several warning for head -1 deprecated in favour of head -n 1
4904 3) ares directory is missing some file (missing is missing :-) ) because
4905 automake and friends is not run.
4907 Daniel (3 June 2005)
4908 - Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
4909 http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
4911 - Andres Garcia provided yet another text mode patch for several test cases so
4912 that they do text comparisions better on Windows (newline-wise).
4914 Daniel (1 June 2005)
4915 - The configure check for c-ares now adds the cares lib before the other libs,
4916 to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
4917 and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
4919 Daniel (31 May 2005)
4920 - Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
4921 address was not possible to use. It is now, but requires it written
4922 RFC2732-style, within brackets - which incidently is how you enter numerical
4923 IPv6 addresses in URLs. Test case 263 added to verify.
4925 Daniel (30 May 2005)
4926 - Eric Cooper reported about a problem with HTTP servers that responds with
4927 binary zeroes within the headers. They confused libcurl to do wrong so the
4928 downloaded headers become incomplete. The fix is now verified with test case
4929 262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
4931 Daniel (25 May 2005)
4932 - Fixed problems with the test suite, and in particular the FTP test cases
4933 since it previously was failing every now and then in a nonsense manner.
4935 - --trace-time now outputs the full microsecond, all 6 digits.
4937 Daniel (24 May 2005)
4938 - Andres Garcia provided a text mode patch for several test cases so that they
4939 do text comparisions better on Windows (newline-wise).
4941 - Any 2xx response (and not just 200) is now considered a fine response to
4942 TYPE, as some servers obviously sends a 226 there. Added test case 261 to
4943 verify. Based on a question/report by Georg Wicherski.
4945 Daniel (20 May 2005)
4946 - Improved runtests.pl to allow stdout tests to be mode=text as well, just
4947 as file comparisons already supports. Added this info to the FILEFORMAT
4950 Daniel (18 May 2005)
4951 - John McGowan identified a problem in bug report #1204435
4952 (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
4953 "http://somehost?data" as it added a slash too much in the request ("GET
4954 /?data/"...). Added test case 260 to verify.
4956 - The configure check for strerror_r() failed to detect the proper API at
4957 times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
4958 version if the posix define wasn't set (since it _had_ found a strerror_r).
4960 Daniel (16 May 2005)
4961 - The gmtime_r() function in HP-UX 10.20 is broken. About 13 test cases fail
4962 due to this. There's now a configure check that attempts to detect the bad
4963 function and not use it on such systems.
4965 Version 7.14.0 (16 May 2005)
4967 Daniel (13 May 2005)
4968 - Grigory Entin reported that curl's configure detects a fine poll() for Mac
4969 OS X 10.4 (while 10.3 or later detected a "bad" one), but the executable
4970 doesn't work as good as if built without poll(). I've adjusted the configure
4971 to always skip the fine-poll() test on Mac OS X (darwin).
4973 Daniel (12 May 2005)
4974 - When doing a second request (after a disconnect) using the same easy handle,
4975 over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
4976 properly (the auth method was accidentally reset to the same as had been set
4977 for host auth, which defaults to Basic). Bug report #1200661
4978 (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
4981 - If -z/--time-cond is used with an invalid date syntax, this is no longer
4982 silently discarded. Instead a proper warning message is diplayed that
4983 informs about it. But it still continues without the condition.
4985 Version 7.14.0-pre2 (11 May 2005)
4987 Daniel (11 May 2005)
4988 - Starting now, libcurl sends a little different set of headers in its default
4991 A) Normal non-proxy HTTP:
4992 - no more "Pragma: no-cache" (this only makes sense to proxies)
4994 B) Non-CONNECT HTTP request over proxy:
4995 - "Pragma: no-cache" is used (like before)
4996 - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)
4998 C) CONNECT HTTP request over proxy:
4999 - "Host: [name]:[port]"
5000 - "Proxy-Connection: Keep-alive"
5002 The A) case is mostly to reduce the default header size and remove a
5005 The B) is to address (rare) problems with HTTP 1.0 proxies
5007 The C) headers are both to address (rare) problems with some proxies. The
5008 code in libcurl that deals with CONNECT requests need a rewrite, but it
5009 feels like a too big a job for me to do now. Details are added in the code
5012 Updated a large amount of test cases to reflect the news.
5014 Daniel (10 May 2005)
5015 - Half-baked attempt to bail out if select() returns _only_ errorfds when the
5016 transfer is in progress. An attempt to fix Allan's problem. See
5017 http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
5020 I'm still not sure this is the right fix, but...
5022 Version 7.14.0-pre1 (9 May 2005)
5025 - Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
5026 least it should no longer cause a compiler error. However, it does not have
5027 AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it
5028 (we use that for FTP PORT/EPRT)! So, I modified the configure check that
5029 checks if the getaddrinfo() is working, to use AI_NUMERICHOST since then
5030 it'll fail on AIX 4.3 and it will automatically build with IPv6 support
5033 - Added --trace-time that when used adds a time stamp to each trace line that
5034 --trace, --trace-ascii and --verbose output. I also made the '>' display
5035 separate each line on the linefeed so that HTTP requests etc look nicer in
5038 - Made curl recognize the environment variables Lynx (and others?) support for
5039 pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
5040 CURL_CA_BUNDLE is not set, they are checked afterwards.
5042 Like before: on windows if none of these are set, it checks for the ca cert
5045 1. application's directory
5046 2. current working directory
5047 3. Windows System directory (e.g. C:\windows\system32)
5048 4. Windows Directory (e.g. C:\windows)
5049 5. all directories along %PATH%
5052 - The runtests.pl script now starts test servers by doing fork() and exec()
5053 instead of the previous approach. This is less complicated and should
5054 hopefully lead to less "leaked" servers (servers that aren't stopped
5055 properly when the tests are stopped).
5057 - Alexander Zhuravlev found a case when you did "curl -I [URL]" and it
5058 complained on the chunked encoding, even though a HEAD should never return a
5059 body and thus it cannot be a chunked-encoding problem!
5061 Daniel (30 April 2005)
5062 - Alexander Zhuravlev found out that (lib)curl SIGSEGVed when using
5063 --interface on an address that can't be bound.
5065 Daniel (28 April 2005)
5066 - Working on fixing up test cases to mark sections as 'mode=text' for things
5067 that curl writes as text files, since then they can get different line
5068 endings depending on OS. Andrés GarcÃa helps me work this out.
5070 Did lots of other minor tweaks on the test scripts to work better and more
5071 reliably find test servers and also kill test servers.
5073 - Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
5074 instead of the HTTPS server when closing it down.
5076 Daniel (27 April 2005)
5077 - Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
5078 more places. First, CURL_HOME is a new environment variable that is used
5079 instead of HOME if it is set, to point out where the default config file
5080 lives. If there's no config file in the dir pointed out by one of the
5081 environment variables, the Windows version will instead check the same
5082 directory the executable curl is located in.
5084 Daniel (26 April 2005)
5085 - Cory Nelson's work on nuking compiler warnings when building on x64 with
5088 Daniel (25 April 2005)
5089 - Fred New reported a bug where we used Basic auth and user name and password
5090 in .netrc, and when following a Location: the subsequent requests didn't
5091 properly use the auth as found in the netrc file. Added test case 257 to
5094 - Based on feedback from Cory Nelson, I added some preprocessor magic in
5095 */setup.h and */config-win32.h to build fine with VS2005 on x64.
5097 Daniel (23 April 2005)
5098 - Alex Suykov made the curl tool now assume that uploads using HTTP:// or
5099 HTTPS:// are the only ones that show output and thus motivates a switched
5100 off progress meter if the output is sent to the terminal. This makes FTP
5101 uploads without '>', -o or -O show the progress meter.
5103 Daniel (22 April 2005)
5104 - Dave Dribin's MSVC makefile fix: set CURL_STATICLIB when it builds static
5107 - Andres Garcia fixed configure to set the proper define when building static
5110 - --retry-delay didn't work.
5112 Daniel (18 April 2005)
5113 - Olivier reported that even though he used CURLOPT_PORT, libcurl clearly
5114 still used the default port. He was right. I fixed the problem and added the
5115 test cases 521, 522 and 523 to verify the fix.
5117 - Toshiyuki Maezawa reported that when doing a POST with a read callback,
5118 libcurl didn't properly send an Expect: 100-continue header. It does now.
5120 - I committed by mig change in the test suite's FTP server that moves out all
5121 socket/TCP code to a separate C program named sockfilt. And added 4 new
5122 test cases for FTP over IPv6.
5124 Daniel (8 April 2005)
5125 - Cory Nelson reported a problem with a HTTP server that responded with a 304
5126 response containing an "illegal" Content-Length: header, which was not
5127 properly ignored by libcurl. Now it is. Test case 249 verifies.
5129 Daniel (7 April 2005)
5130 - Added ability to build and run with GnuTLS as an alternative to OpenSSL for
5131 the secure layer. configure --with-gnutls enables with. Note that the
5132 previous OpenSSL check still has preference and if it first detects OpenSSL,
5133 it will not check for GnuTLS. You may need to explictly diable OpenSSL with
5136 This work has been sponsored by The Written Word.
5138 Daniel (5 April 2005)
5139 - Christophe Legry fixed the post-upload check for FTP to not complain if the
5140 upload was skipped due to a time-condition as set with
5141 CURLOPT_TIMECONDITION. I added test case 247 and 248 to verify.
5143 Version 7.13.2 (5 April 2005)
5145 Daniel (4 April 2005)
5146 - Marcelo Juchem fixed the MSVC makefile for libcurl
5148 - Gisle Vanem fixed a crash in libcurl, that could happen if the easy handle
5149 was killed before the threading resolver (windows only) still hadn't
5152 - Hardeep Singh reported a problem doing HTTP POST with Digest. (It was
5153 actually also affecting NTLM and Negotiate.) It turned out that if the
5154 server responded with 100 Continue before the initial 401 response, libcurl
5155 didn't take care of the response properly. Test case 245 and 246 added to
5158 Daniel (30 March 2005)
5159 - Andres Garcia modified the configure script to check for libgdi32 before
5160 libcrypto, to make the SSL check work fine on msys/mingw.
5162 Daniel (29 March 2005)
5163 - Tom Moers identified a flaw when you sent a POST with Digest authentication,
5164 as in the first request when curl sends a POST with Content-Length: 0, it
5165 still forcibly closed the connection before doing the next step in the auth
5168 - Jesper Jensen found out that FTP-SSL didn't work since my FTP
5169 rewrite. Fixing that was easy, but it also revealed a much worse problem:
5170 the FTP server response reader function didn't properly deal with reading
5171 responses in multiple tiny chunks properly! I modified the FTP server to
5172 allow it to produce such split-up responses to make sure curl deals with
5175 - Based on Augustus Saunders' comments and findings, the HTTP output auth
5176 function was fixed to use the proper proxy authentication when multiple ones
5177 are accepted. test 239 and test 243 were added to repeat the problems and
5180 --proxy-anyauth was added to the curl tool
5182 Daniel (16 March 2005)
5183 - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
5184 inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
5185 address which makes a different failure... Now I've modified the ipv4
5186 resolve code to use inet_pton() instead in an attempt to make these systems
5187 better detect this as a bad IP address rather than creating a toally bogus
5188 address that is then passed on and used.
5190 Daniel (15 March 2005)
5191 - Dan Fandrich made the code properly use the uClibc's version of
5192 inet_ntoa_r() when built with it.
5194 - Added test 237 and 238: test EPSV and PASV response handling when they get
5195 well- formated data back but using illegal values. In 237 PASV gets an IP
5196 address that is way bad. In 238 EPSV gets a port that is way out of range.
5198 Daniel (14 March 2005)
5199 - Added a few missing features to the curl-config --features list
5201 - Modified testcurl.pl to now offer
5202 1 - command line options for all info it previously only read from
5203 file: --name, --email, --desc and --configure
5204 2 - --nocvsup makes it not attempt to do cvs update
5205 3 - --crosscompile informs it and makes it not attempt things it can't do
5207 - Fixed numerous win32 compiler warnings.
5209 - Removed the lib/security.h file since it shadowed the mingw/win32 header
5210 with the same name which is needed for SSPI builds. The contents of the
5211 former security.h is now i krb4.h
5213 - configure --enable-sspi now enables SSPI in the build. It only works for
5214 windows builds (including cross-compiles for windows).
5216 Daniel (12 March 2005)
5217 - David Houlder added --form-string that adds that string to a multipart
5218 formpost part, without special characters having special meanings etc like
5221 Daniel (11 March 2005)
5222 - curl_version_info() returns the feature bit CURL_VERSION_SSPI if it was
5223 built with SSPI support.
5225 - Christopher R. Palmer made it possible to build libcurl with the
5226 USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the
5227 native way to do NTLM. SSPI also allows libcurl to pass on the current user
5228 and its password in the request.
5230 Daniel (9 March 2005)
5231 - Dan F improved the SSL lib setup in configure.
5233 - Nodak Sodak reported a crash when using a SOCKS4 proxy.
5235 - Jean-Marc Ranger pointed out an embarassing debug printf() leftover in the
5236 multi interface code.
5238 - Adjusted the man page for the curl_getdate() return value for dates after
5239 year 2038. For 32 bit time_t it returns 0x7fffffff but for 64bit time_t it
5240 returns either the correct value or even -1 on some systems that still seem
5241 to not deal with this properly. Tor Arntsen found a 64bit AIX system for us
5242 that did the latter. Gwenole Beauchesne's Mandrake patch put the lights on
5243 this problem in the first place.
5245 Daniel (8 March 2005)
5246 - Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
5247 file got a Last-Modified: header written to the data stream, corrupting the
5248 actual data. This was because some conditions from the previous FTP code was
5249 not properly brought into the new FTP code. I fixed and I added test case
5250 520 to verify. (This bug was introduced in 7.13.1)
5252 - Dan Fandrich fixed the configure --with-zlib option to always consider the
5253 given path before any standard paths.
5255 Daniel (6 March 2005)
5256 - Randy McMurchy was the first to report that valgrind.pm was missing from the
5257 release archive and thus 'make test' fails.
5259 Daniel (5 March 2005)
5260 - Dan Fandrich added HAVE_FTRUNCATE to several config-*.h files.
5262 - Added test case 235 that makes a resumed upload of a file that isn't present
5263 on the remote side. This then converts the operation to an ordinary STOR
5264 upload. This was requested/pointed out by Ignacio Vazquez-Abrams.
5266 It also proved (and I fixed) a bug in the newly rewritten ftp code (and
5267 present in the 7.13.1 release) when trying to resume an upload and the
5268 servers returns an error to the SIZE command. libcurl then loops and sends
5269 SIZE commands infinitely.
5271 - Dan Fandrich fixed a SSL problem introduced on February 9th that made
5272 libcurl attempt to load the whole random file to seed the PRNG. This is
5273 really bad since this turns out to be using /dev/urandom at times...
5275 Version 7.13.1 (4 March 2005)
5277 Daniel (4 March 2005)
5278 - Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
5279 the cookie "engine" without having to provide an empty or non-existing file.
5281 - Rene Rebe fixed a -# crash when more data than expected was retrieved.
5283 Daniel (22 February 2005)
5284 - NTLM and ftp-krb4 buffer overflow fixed, as reported here:
5285 http://www.securityfocus.com/archive/1/391042 and the CAN report here:
5286 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
5288 If these security guys were serious, we'd been notified in advance and we
5289 could've saved a few of you a little surprise, but now we weren't.
5291 Daniel (19 February 2005)
5292 - Ralph Mitchell reported a flaw when you used a proxy with auth, and you
5293 requested data from a host and then followed a redirect to another
5294 host. libcurl then didn't use the proxy-auth properly in the second request,
5295 due to the host-only check for original host name wrongly being extended to
5296 the proxy auth as well. Added test case 233 to verify the flaw and that the
5297 fix removed the problem.
5299 Daniel (18 February 2005)
5300 - Mike Dobbs reported a mingw build failure due to the lack of
5301 BUILDING_LIBCURL being defined when libcurl is built. Now this is defined by
5302 configure when mingw is used.
5304 Daniel (17 February 2005)
5305 - David in bug report #1124588 found and fixed a socket leak when libcurl
5306 didn't close the socket properly when returning error due to failing
5309 Daniel (16 February 2005)
5310 - Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
5311 that picks NTLM. Thanks to David Byron letting me test NTLM against his
5312 servers, I could quickly repeat and fix the problem. It turned out to be:
5314 When libcurl POSTs without knowing/using an authentication and it gets back
5315 a list of types from which it picks NTLM, it needs to either continue
5316 sending its data if it keeps the connection alive, or not send the data but
5317 close the connection. Then do the first step in the NTLM auth. libcurl
5318 didn't send the data nor close the connection but simply read the
5319 response-body and then sent the first negotiation step. Which then failed
5320 miserably of course. The fixed version forces a connection if there is more
5321 than 2000 bytes left to send.
5323 Daniel (14 February 2005)
5324 - The configure script didn't check for ENGINE_load_builtin_engines() so it
5327 Daniel (11 February 2005)
5328 - Removed all uses of strftime() since it uses the localised version of the
5329 week day names and month names and servers don't like that.
5331 Daniel (10 February 2005)
5332 - Now the test script disables valgrind-testing when the test suite runs if
5333 libcurl is built shared. Otherwise valgrind only tests the shell that runs
5334 the wrapper-script named 'curl' that is a front-end to curl in this case.
5335 This should also fix the huge amount of reports of false positives when
5336 valgrind has identified leaks in (ba)sh and not in curl and people report
5337 that as curl bugs. Bug report #1116672 is one example.
5339 Also, the valgrind report parser has been adapted to check that at least one
5340 of the sources in a stack strace is one of (lib)curl's source files or
5341 otherwise it will not consider the problem to concern (lib)curl.
5343 - Marty Kuhrt streamlined the VMS build.
5345 Daniel (9 February 2005)
5346 - David Byron fixed his SSL problems, initially mentioned here:
5347 http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
5348 SSL_pending() as we should.
5350 - Converted lots of FTP code to a statemachine, so that the multi interface
5351 doesn't block while communicating commands-responses with an FTP server.
5353 I've added a comment like BLOCKING in the code on all spots I could find
5354 where we still have blocking operations. When we change curl_easy_perform()
5355 to use the multi interface, we'll also be able to simplify the code since
5356 there will only be one "internal interface".
5358 While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
5359 new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
5360 like changing directory or retrieving a file, while the second means that we
5363 The CVS tag 'before_ftp_statemachine' was set just before this went in, in
5364 case of future need.
5366 - Gisle made the DICT code send CRLF and not just LF as the spec says so.
5368 Daniel (8 February 2005)
5369 - Gisle fixed problems when libcurl runs out of memory, and worked on making
5370 sure the proper error code is returned for those occations.
5372 Daniel (7 February 2005)
5373 - Maruko pointed out a problem with inflate decompressing exactly 64K
5376 Daniel (5 February 2005)
5377 - Eric Vergnaud found a use of an uninitialised variable in the ftp when doing
5378 PORT on ipv6-enabled hosts.
5380 - David Byron pointed out we could use BUFSIZE to read data (in
5381 lib/transfer.c) instead of using BUFSIZE -1.
5383 Version 7.13.0 (1 February 2005)
5385 Daniel (31 January 2005)
5386 - Added Lars Nilsson's htmltitle.cc example
5388 Daniel (30 January 2005)
5389 - Fixed a memory leak when using the multi interface and the DO operation
5390 failed (as in test case 205).
5392 - Fixed a valgrind warning for file:// operations.
5394 - Fixed a valgrind report in the url globbing code for the curl command line
5397 - Bugfixed the parser that scans the valgrind report outputs (in runtests.pl).
5398 I noticed that it previously didn't detect and report the "Conditional jump
5399 or move depends on uninitialised value(s)" error. When I fixed this, I
5400 caught a few curl bugs with it. And then I had to spend time to make the
5401 test suite IGNORE these errors when OpenSSL is used since it produce massive
5402 amounts of valgrind warnings (but only of the "Conditional..." kind it
5403 seems). So, if a test that requires SSL is run, it ignores the
5404 "Conditional..." errors, and you'll get a "valgrind PARTIAL" output instead
5407 Daniel (29 January 2005)
5408 - Using the multi interface, and doing a requsted a re-used connection that
5409 gets closed just after the request has been sent failed and did not re-issue
5410 a request on a fresh reconnect like the easy interface did. Now it does!
5412 - Define CURL_MULTIEASY when building libcurl (lib/easy.c to be exact), to use
5413 my new curl_easy_perform() that uses the multi interface to run the
5414 request. It is a great testbed for the multi interface and I believe we
5415 shall do it this way for real in the future when we have a successor to
5416 curl_multi_fdset(). I've used this approach to detect and fix several of the
5417 recent multi-interfaces issues.
5419 - Adjusted the KNOWN_BUGS #17 fix a bit more since the FTP code also did some
5422 - multi interface: when a request is denied due to "Maximum redirects
5423 followed" libcurl leaked the last Location: URL.
5425 - Connect failures with the multi interface was often returned as "connect()
5426 timed out" even though the reason was different.
5428 Daniel (28 January 2005)
5429 - KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
5430 curl_easy_perform() invokes. It was previously unlocked at disconnect, which
5431 could mean that it remained locked between multiple transfers. The DNS cache
5432 may not live as long as the connection cache does, as they are separate.
5434 To deal with the lack of DNS (host address) data availability in re-used
5435 connections, libcurl now keeps a copy of the IP adress as a string, to be
5436 able to show it even on subsequent requests on the same connection.
5438 The problem could be made to appear with this stunt:
5440 1. create a multi handle
5441 2. add an easy handle
5442 3. fetch a URL that is persistent (leaves the connection alive)
5443 4. remove the easy handle from the multi
5444 5. kill the multi handle
5445 6. create a multi handle
5446 7. add the same easy handle to the new multi handle
5447 8. fetch a URL from the same server as before (re-using the connection)
5449 - Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
5450 when built ipv6-enabled. I've now made a fix for it. Writing test cases for
5451 custom port hosts turned too tricky so unfortunately there's none.
5453 Daniel (25 January 2005)
5454 - Ian Ford asked about support for the FTP command ACCT, and I discovered it
5455 is present in RFC959... so now (lib)curl supports it as well. --ftp-account
5456 and CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an
5457 account string after PASS have been sent away. The client responds
5458 with "ACCT [account string]".) Added test case 228 and 229 to verify the
5459 functionality. Updated the test FTP server to support ACCT somewhat.
5461 - David Shaw contributed a fairly complete and detailed autoconf test you can
5462 use to detect libcurl and setup variables for the protocols the installed
5463 libcurl supports: docs/libcurl/libcurl.m4
5465 Daniel (21 January 2005)
5466 - Major FTP third party transfer overhaul.
5468 These four options are now obsolete: CURLOPT_SOURCE_HOST,
5469 CURLOPT_SOURCE_PATH, CURLOPT_SOURCE_PORT (this option didn't work before)
5470 and CURLOPT_PASV_HOST.
5472 These two options are added: CURLOPT_SOURCE_URL and CURLOPT_SOURCE_QUOTE.
5474 The target-side didn't use the proper path with RETR, and thus this only
5475 worked correctly in the login path (i.e without doing any CWD). The source-
5476 side still uses a wrong path, but the fix for this will need to wait. Verify
5477 the flaw by using a source URL with included %XX-codes.
5479 Made CURLOPT_FTPPORT control weather the target operation should use PORT
5480 (or not). The other side thus uses passive (PASV) mode.
5482 Updated the ftp3rdparty.c example source to use the updated options.
5484 Added support for a second FTP server in the test suite. Named... ftp2.
5485 Added test cases 230, 231 and 232 as a few first basic tests of very simple
5486 3rd party transfers.
5488 Changed the debug output to include 'target' and 'source' when a 3rd party
5489 is being made, to make it clearer what commands/responses came on what
5492 Added three new command line options: --3p-url, --3p-user and --3p-quote.
5494 Documented the command line options and the curl_easy_setopt options related
5495 to third party transfers.
5497 (Temporarily) disabled the ability to re-use an existing connection for the
5498 source connection. This is because it needs to force a new in case the
5499 source and target is the same host, and the host name check is trickier now
5500 when the source is identified with a full URL instead of a plain host name
5503 TODO (short-term) for 3rd party transfers: quote support. The options are
5504 there, we need to add test cases to verify their functionality.
5506 TODO (long-term) for 3rd party transfers: IPv6 support (EPRT and EPSV etc)
5507 and SSL/TSL support.
5509 Daniel (20 January 2005)
5510 - Philippe Hameau found out that -Q "+[command]" didn't work, although some
5511 code was written for it. I fixed and added test case 227 to verify it.
5512 The curl.1 man page didn't mention the '+' so I added it.
5514 Daniel (19 January 2005)
5515 - Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
5516 contains %0a or %0d in the user, password or CWD parts. (A future fix would
5517 include doing it for %00 as well - see KNOWN_BUGS for details.) Test case
5518 225 and 226 were added to verify this
5520 - Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
5522 1) the proxy environment variables are still read and used to set HTTP proxy
5524 2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
5525 disabled). This is important since apps may want to disable HTTP proxy
5526 without actually knowing if libcurl was built to disable HTTP or not.
5528 Based on Stephan's patch, both these issues should now be fixed.
5530 Daniel (18 January 2005)
5531 - Cody Jones' enhanced version of Samuel DÃaz GarcÃa's MSVC makefile patch was
5534 Daniel (16 January 2005)
5535 - Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
5536 assumed this used the DICT protocol. While guessing protocols will remain
5537 fuzzy, I've now made sure that the host names must start with "[protocol]."
5538 for them to be a valid guessable name. I also removed "https" as a prefix
5539 that indicates HTTPS, since we hardly ever see any host names using that.
5541 Daniel (13 January 2005)
5542 - Inspired by Martijn Koster's patch and example source at
5543 http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
5544 select() and poll() calls properly loop if they return -1 and errno is
5545 EINTR. glibc docs for this is found here:
5546 http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
5548 This last link says BSD doesn't have this "effect". Will there be a problem
5549 if we do this unconditionally?
5551 Daniel (11 January 2005)
5552 - Dan Torop cleaned up a few no longer used variables from David Phillips'
5553 select() overhaul fix.
5555 - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
5556 using a custom Host: header and curl fails to send a request on a re-used
5557 persistent connection and thus creates a new connection and resends it. It
5558 then sent two Host: headers. Cyrill's analysis was posted here:
5559 http://curl.haxx.se/mail/archive-2005-01/0022.html
5561 - Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
5562 problem with the version byte and the check for bad versions. Bruce has lots
5563 of clues on this, and based on his suggestion I've now removed the check of
5564 that byte since it seems to be able to contain 1 or 5.
5566 Daniel (10 January 2005)
5567 - Pavel Orehov reported memory problems with the multi interface in bug report
5568 #1098843. In short, a shared DNS cache was setup for a multi handle and when
5569 the shared cache was deleted before the individual easy handles, the latter
5570 cleanups caused read/writes to already freed memory.
5572 - Hzhijun reported a memory leak in the SSL certificate code, that leaked the
5573 remote certificate name when it didn't match the used host name.
5575 Gisle (8 January 2005)
5576 - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
5578 Daniel (7 January 2005)
5579 - Improved the test script's valgrind log parser to actually work! Also added
5580 the ability to disable the log scanner for specific test cases. Test case
5581 509 results in numerous problems and leaks in OpenSSL and has to get it
5584 Daniel (6 January 2005)
5585 - Fixed a single-byte read out of bounds in test case 39 in the curl tool code
5586 (i.e not in the library).
5588 - Bug report #1097019 identified a problem when doing -d "data" with -G and
5589 sending it to two URLs with {}. Added test 199 to verify the fix.
5591 Daniel (4 January 2005)
5592 - Marty Kuhrt adjusted a VMS build script slightly
5594 - Kai Sommerfeld and Gisle Vanem fixed libcurl to build with IPv6 support on
5597 Daniel (2 January 2005)
5598 - Alex Neblett updated the MSVC makefiles slightly.
5599 Daniel (25 December 2004)
5600 - Removed src/config.h.in from CVS, it is now copied from the (generated)
5601 lib/config.h.in instead, as they can very well be the same. This removes a
5602 "manual hassle". You may want to re-run buildconf now.
5604 - Werner Koch filed Debian bug report #286794, mentioning that curl contained
5605 non-free (by Debian's view) source code. This was Angus Mackay's
5606 src/getpass.c source code. I tried to contact him about it to quickly solve
5607 this issue, but his email addresses bounce and I got some time "over" and
5608 reimplemented the functionality once brought by Angus. We no longer use any
5609 of Angus' original code and the new function is much simpler (IMO). Issue
5612 Daniel (24 December 2004)
5613 - David Shaw added --protocols to curl-config, so that it now lists all
5614 protocols libcurl was built to support. --feature no longer lists disabled
5617 Daniel (23 December 2004)
5618 - David Shaw fixed the configure --disable-[protocol] variables so that
5619 curl-config --feature now works correctly!
5621 Daniel (22 December 2004)
5622 - Rune Kleveland fixed a minor memory leak for received cookies with the
5623 (rare) version attribute set.
5625 - Marcin Konicki provided two configure fixes and a source fix to make curl
5626 build out-of-the-box on BeOS.
5628 Daniel (21 December 2004)
5629 - Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
5630 -w option support 'http_connect' to make it easier to verify!
5632 - Fixed lib/select.c include order to build fine on FreeBSD
5634 - Fixed failf()'s reuse of the va_list variable that crashed on FreeBSD.
5635 Pointed out by Peter Pentchev.
5637 Version 7.12.3 (20 December 2004)
5639 Daniel (19 December 2004)
5640 - I investigated our PKCS12 build problem on Solaris 2.7 with OpenSSL 0.9.7e,
5641 and it turned out to be the fault of the zlib 1.1.4 headers doing a typedef
5642 named 'free_func' and the OpenSSL headers have a prototype that uses
5643 'free_func' in one of its arguments. This is why the compile errors out.
5645 In other words, we need to include the openssl/pkcs12.h header before the
5646 zlib.h header and it builds fine. The configure script now checks for this
5647 file and it then gets included early in lib/urldata.h.
5649 Daniel (18 December 2004)
5650 - Samuel Listopad added support for PKCS12 formatted certificates.
5652 - Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well.
5654 Daniel (16 December 2004)
5655 - Gisle found and fixed a problem in the directory re-use for FTP.
5657 I added test case 215 and 216 to better verify the functionality.
5659 - Dinar in bug report #1086121, found a file handle leak when a multipart
5660 formpost (including a file upload part) was aborted before the whole file
5663 Daniel (15 December 2004)
5664 - Tom Lee found out that globbing of strings with backslashes didn't work as
5665 you'd expect. Backslashes are such a central part of windows file names that
5666 forcing backslashes to have to be escaped with backslashes is a bit too
5667 awkward to users. Starting now, you only need to escape globbing characters
5668 such as the five letters: "[]{},". Added test case 214 to verify this.
5670 Daniel (14 December 2004)
5671 - Harshal Pradhan patched a HTTP persistent connection flaw: if the user name
5672 and/or password were modified between two requests on a persistent
5673 connection, the second request were still made with the first setup!
5675 I added test case 519 to verify the fix.
5677 Daniel (13 December 2004)
5678 - Gisle added CURLINFO_SSL_ENGINES to curl_easy_getinfo() to allow an app
5679 to list all available crypto ENGINES.
5681 - Gisle fixed bug report #1083542, which pointed out a problem with resuming
5682 large file (>4GB) file:// transfers on windows.
5684 Daniel (11 December 2004)
5685 - Made the test suite HTTP server (sws) capable of using IPv6, and then
5686 extended the test environment to support that and also added three test
5687 cases (240, 241, 242) that run tests using IPv6. Test 242 uses a URL that
5688 didn't work before the 10 dec fix by Kai Sommerfeld.
5690 - Made a failed file:// resume output an error message
5692 - Corrected the CURLE_BAD_DOWNLOAD_RESUME error message in lib/strerror.c
5696 simplified and consolidated the SSL checks in configure and the usage of the
5697 defines in lib/setup.h
5699 provided a first libcurl.pc.in file for pkg-config (but the result is not
5700 installed anywhere at this point)
5702 extended the cross compile section in the docs/INSTALL file
5704 Daniel (10 December 2004)
5705 - When providing user name in the URL and a IPv6-style IP-address (like in
5706 "ftp://user@[::1]/tmp"), the URL parser didn't get the host extracted
5707 properly. Reported and fixed by Kai Sommerfeld.
5709 Daniel (9 December 2004)
5710 - Ton Voon provided a configure fix that should fix the notorious (mostly
5711 reported on Solaris) problem where the size_t check fails due to the SSL
5712 libs being found in a dir not searched through by the run-time linker.
5713 patch-tracker entry #1081707.
5715 - Bryan Henderson pointed out in bug report #1081788 that the curl-config
5716 --vernum output wasn't zero prefixed properly (as claimed in documentation).
5717 This is fixed in maketgz now.
5719 Daniel (8 December 2004)
5720 - Matt Veenstra updated the mach-O framework files for Mac OS X.
5722 - Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
5723 libcurl always and unconditionally overwrote a stack-based array with 3 zero
5724 bytes. This is not an exploitable buffer overflow. No need to get alarmed.
5726 Daniel (7 December 2004)
5727 - Fixed so that the final error message is sent to the verbose info "stream"
5728 even if no errorbuffer is set.
5730 Daniel (6 December 2004)
5731 - Dan Fandrich added the --disable-cookies option to configure to build
5732 libcurl without cookie support. This is mainly useful if you want to build a
5733 minimalistic libcurl with no cookies support at all. Like for embedded
5736 - Richard Atterer fixed libcurl's way of dealing with the EPSV
5737 response. Previously, libcurl would re-resolve the host name with the new
5738 port number and attempt to connect to that, while it should use the IP from
5739 the control channel. This bug made it hard to EPSV from an FTP server with
5740 multiple IP addresses!
5742 Daniel (3 December 2004)
5743 - Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
5744 at a chunk boundary it was not considered an error and thus went unnoticed.
5745 Fixed by Maurice Barnum.
5747 Added test case 207 to verify.
5749 Daniel (2 December 2004)
5750 - Fixed the CONNECT loop to default timeout to 3600 seconds.
5752 Added test case 206 that makes CONNECT with Digest.
5754 Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
5757 Daniel (30 November 2004)
5758 - Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
5760 - Dan also helped me with input data to create three more test cases for the
5761 --compressed option.
5763 Daniel (29 November 2004)
5764 - I improved the test suite to enable binary contents in the tests (by proving
5765 it base64 encoded), like for testing decompress etc. Added test 220 and 221
5766 for this purpose. Tests can now also depend on libz to run.
5768 - As reported by Reinout van Schouwen in Mandrake's bug tracker bug 12285
5769 (http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
5770 IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
5771 the ability to transfer a file. Now, when connected to an FTP server with
5772 IPv6, these FTP commands can't be disabled even if asked to with the
5773 available libcurl options.
5775 Daniel (26 November 2004)
5776 - As reported in Mandrake's bug tracker bug 12289
5777 (http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
5778 newline to "finish" the progress meter after each redirect and not only
5779 after a completed transfer.
5781 Daniel (25 November 2004)
5784 If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
5785 the same server again even if a following request is made using a persistent
5788 If a second request is made to a server, requesting a file from the same
5789 directory as the previous request operated on, libcurl will no longer make
5790 that long series of CWD commands just to end up on the same spot. Note that
5791 this is only for *exactly* the same dir. There is still room for improvements
5792 to optimize the CWD-sending when the dirs are only slightly different.
5794 Added test 210, 211 and 212 to verify these changes. Had to improve the
5795 test script too and added a new primitive to the test file format.
5797 Daniel (24 November 2004)
5798 - Andrés GarcÃa fixed the configure script to detect select properly when run
5799 with Msys/Mingw on Windows.
5801 Daniel (22 November 2004)
5802 - Made HTTP PUT and POST requests no longer use HEAD when doing multi-pass
5803 auth negotiation (NTLM, Digest and Negotiate), but instead use the request
5804 keyword "properly". Details in lib/README.httpauth. This also introduces
5805 CURLOPT_IOCTLFUNCTION and CURLOPT_IOCTLDATA, to be used by apps that use the
5806 "any" auth alternative as then libcurl may need to send the PUT/POST data
5807 more than once and thus may need to ask the app to "rewind" the read data
5810 See also the new example using this: docs/examples/anyauthput.c
5812 - David Phillips enhanced test 518. I made it depend on a "feature" so that
5813 systems without getrlimit() won't attempt to test 518. configure now checks
5814 for getrlimit() and setrlimit() for this test case.
5816 Daniel (18 November 2004)
5817 - David Phillips fixed libcurl to not crash anymore when more than FD_SETSIZE
5818 file descriptors are in use. Test case 518 added to verify.
5820 Daniel (15 November 2004)
5821 - To test my fix for the CURLINFO_REDIRECT_TIME bug, I added time_redirect and
5822 num_redirects support to the -w writeout option for the command line tool.
5824 - Wojciech Zwiefka found out that CURLINFO_REDIRECT_TIME didn't work as
5827 Daniel (12 November 2004)
5828 - Gisle Vanem modigied the MSVC and Netware makefiles to build without
5831 - Dan Fandrich added the --disable-crypto-auth option to configure to allow
5832 libcurl to build without Digest support. (I figure it should also explicitly
5833 disable Negotiate and NTLM.)
5835 - *** Modified Behaviour Alert ***
5837 Setting CURLOPT_POSTFIELDS to NULL will no longer do a GET.
5839 Setting CURLOPT_POSTFIELDS to "" will send a zero byte POST and setting
5840 CURLOPT_POSTFIELDS to NULL and CURLOPT_POSTFIELDSIZE to zero will also make
5841 a zero byte POST. Added test case 515 to verify this.
5843 Setting CURLOPT_HTTPPOST to NULL makes a zero byte post. Added test case 516
5846 CURLOPT_POSTFIELDSIZE must now be set to -1 to signal "we don't know".
5847 Setting it to zero simply says this is a zero byte POST.
5849 When providing POST data with a read callback, setting the size up front
5850 is now made with CURLOPT_POSTFIELDSIZE and not with CURLOPT_INFILESIZE.
5852 Daniel (11 November 2004)
5853 - Dan Fandrich added --disable-verbose to the configure script to allow builds
5854 without verbose strings in the code, to save some 12KB space. Makes sense
5855 only for systems with very little memory resources.
5857 - Jeff Phillips found out that a date string with a year beyond 2038 could
5858 crash the new date parser on systems with 32bit time_t. We now check for
5859 this case and deal with it.
5861 Daniel (10 November 2004)
5862 - I installed Heimdal on my Debian box (using the debian package) and noticed
5863 that configure --with-gssapi failed to create a nice build. Fixed now.
5865 Daniel (9 November 2004)
5866 - Gisle Vanem marked all external function calls with CURL_EXTERN so that now
5867 the Windows, Netware and other builds no longer need libcurl.def or similar
5870 Daniel (8 November 2004)
5871 - Made the configure script check for tld.h if libidn was detected, since
5872 libidn 0.3.X didn't have such a header and we don't work with anything
5873 before libidn 0.4.1 anyway! Suse 9.1 apparently ships with a 0.3.X version
5874 of libidn which makes the curl 7.12.2 build fail. Jean-Philippe
5875 Barrette-LaPierre helped pointing this out.
5877 - Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
5878 environment where stderr is closed the -v output will still be sent to file
5879 descriptor 2 which then might be the network socket handle! Now we have a
5880 weird hack instead that attempts to make sure that file descriptor 2 is
5881 opened (with a call to pipe()) before libcurl is called to do the transfer.
5882 configure now checks for pipe() and systems without pipe don't get the weird
5885 Daniel (5 November 2004)
5886 - Tim Sneddon made libcurl send no more than 64K in a single first chunk when
5887 doing a huge POST on VMS, as this is a system limitation. Default on general
5890 Daniel (4 November 2004)
5891 - Andres Garcia made it build on mingw againa, my --retry code broke the build.
5893 Daniel (2 November 2004)
5894 - Added --retry-max-time that allows a maximum time that may not have been
5895 reached for a retry to be made. If not set there is no maximum time, only
5896 the amount of retries set with --retry.
5898 - Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
5900 Daniel (1 November 2004)
5901 - When cross-compiling, the configure script no longer attempts to use
5902 pkg-config on the build host in order to detect OpenSSL compiler options.
5904 Daniel (27 October 2004)
5907 An improvement to the gzip handling of libcurl. There were two problems with
5908 the old version: it was possible for a malicious gzip file to cause libcurl
5909 to leak memory, as a buffer was malloced to hold the header and never freed
5910 if the header ended with no file contents. The second problem is that the
5911 64 KiB decompression buffer was allocated on the stack, which caused
5912 unexpectedly high stack usage and overflowed the stack on some systems
5913 (someone complained about that in the mailing list about a year ago).
5915 Both problems are fixed by this patch. The first one is fixed when a recent
5916 (1.2) version of zlib is used, as it takes care of gzip header parsing
5917 itself. A check for the version number is done at run-time and libcurl uses
5918 that feature if it's present. I've created a define OLD_ZLIB_SUPPORT that
5919 can be commented out to save some code space if libcurl is guaranteed to be
5920 using a 1.2 version of zlib.
5922 The second problem is solved by dynamically allocating the memory buffer
5923 instead of storing it on the stack. The allocation/free is done for every
5924 incoming packet, which is suboptimal, but should be dwarfed by the actual
5925 decompression computation.
5927 I've also factored out some common code between deflate and gzip to reduce
5928 the code footprint somewhat. I've tested the gzip code on a few test files
5929 and I tried deflate using the freshmeat.net server, and it all looks OK. I
5930 didn't try running it with valgrind, however.
5932 - Added a --retry option to curl that takes a numerical option for the number
5933 of times the operation should be retried. It is retried if a transient error
5934 is detected or if a timeout occurred. By default, it will first wait one
5935 second between the retries and then double the delay time between each retry
5936 until the delay time is ten minutes which then will be the delay time
5937 between all forthcoming retries. You can set a static delay time with
5938 "--retry-delay [num]" where [num] is the number of seconds to wait between
5941 Daniel (25 October 2004)
5942 - Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
5943 file that was already completely downloaded caused an error, while it
5944 doesn't if you don't use --fail! I added test case 194 to verify the fix.
5945 Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
5946 libcurl v8 due to all the kludges needed to support it.
5948 - Mohun Biswas found out that formposting a zero-byte file didn't work very
5951 Daniel (19 October 2004)
5952 - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers
5953 with both source and destination being the same host. It can be useful if
5954 you want to move a file on a server or similar.
5956 - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure
5957 out how many new connects a previous transfer required.
5959 I added %{num_connects} to the curl tool and added test case 192 and 193
5960 to verify the new code.
5962 Daniel (18 October 2004)
5963 - Peter Wullinger pointed out that curl should call setlocale() properly to
5964 initiate the specific language operations, to make the IDN stuff work
5967 Version 7.12.2 (18 October 2004)
5969 Daniel (16 October 2004)
5970 - Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
5971 fine even for third party transfers.
5973 - runekl at opoint.com found out (and provided a fix) that libcurl leaked
5974 memory for cookies with the "max-age" field set.
5976 Gisle (16 October 2004)
5977 - Issue 50 in TODO-RELEASE; Added Traian Nicolescu's patches for threaded
5978 resolver on Windows. Plugged some potential handle and memory leaks.
5980 Daniel (14 October 2004)
5981 - Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user
5982 name and password fields properly in URLs, like
5983 ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
5985 Daniel (11 October 2004)
5986 - libcurl now uses SO_NOSIGPIPE for systems that support it (Mac OS X 10.2 or
5987 later is one) to inhibit the SIGPIPE signal when writing to a socket while
5988 the peer dies. The same effect is provide by the MSG_NOSIGNAL parameter to
5989 send() on other systems. Alan Pinstein verified the fix.
5991 Daniel (10 October 2004)
5992 - Systems with 64bit longs no longer use strtoll() or our strtoll- replacement
5993 to parse 64 bit numbers. strtol() works fine. Added a configure check to
5994 detect if [constant]LL works and if so, use that in the strtoll replacement
5995 code to work around compiler warnings reported by Andy Cedilnik.
5997 Gisle (6 October 2004)
5998 - For USE_LIBIDN builds: Added Top-Level-Domain (TLD) check of host-name
5999 used in fix_hostname(). Checks if characters in 'host->name' (indirectly
6000 via 'ace_hostname') are legal according to the TLD tables in libidn.
6002 Daniel (6 October 2004)
6003 - Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
6004 CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even
6005 if the new URL would provide the resumed file. Test case 188 added to verify
6006 the fix (together with existing test 99).
6008 - Dan Fandrich fixed a configure flaw for systems that need both nsl and socket
6009 libs to use gethostbyname().
6011 - Removed tabs and trailing whitespace from lots of source files.
6013 Daniel (5 October 2004)
6014 - Made configure --with-libidn=PATH try the given PATH before the default
6015 paths to make it possible to override.
6017 - If idna_strerror() is present in libidn, we can use that instead of our
6018 internal replacement. This function was added by Simon in libidn 0.5.6 and
6019 is detected by configure.
6021 - It seems basename() on IRIX is in the libgen library and since we don't use
6022 that, configure finds libgen.h but not basename and then we get a compiler
6023 error because our basename() replacement doesn't match the proto in
6024 libgen.h. Starting now, we don't include the file if basename wasn't found
6027 Daniel (4 October 2004)
6028 - Chris found a race condition resulting in CURLE_COULDNT_RESOLVE_HOST and
6029 potential crash, in the windows threaded name resolver code.
6031 Daniel (3 October 2004)
6032 - Replaced the use of isspace() in cookie.c with our own version instead since
6033 we have most data as 'char *' and that makes us pass in negative values if
6034 there is 8bit data in the string. Changing to unsigned causes too much
6035 warnings or too many required typecasts to the normal string functions.
6036 Harshal Pradhan identified this problem.
6038 Daniel (2 October 2004)
6039 - Bertrand Demiddelaer found a case where libcurl could read already freed
6040 data when CURLOPT_VERBOSE is used and a (very) persistent connection. It
6041 happened when the dns cache entry for the connection was pruned while the
6042 connection was still alive and then again re-used. We worked together on
6045 - Gisle Vanem provided code that displays an error message when the (libidn
6046 based) IDN conversion fails. This is really due to a missing suitable
6047 function in the libidn API that I hope we can remove once libidn gets a
6050 Daniel (1 October 2004)
6051 - Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
6052 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to
6053 anyone involved in the curl project! This happens when you try to curl a
6054 file from a proftpd site using SSL. It seems proftpd sends a somewhat
6055 unorthodox response code (232 instead of 230). I relaxed the response code
6056 check to deal with this and similar cases.
6058 - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
6059 formposts no longer include the path part. If you _really_ want them, you
6060 must provide your preferred full file name with CURLFORM_FILENAME.
6062 Added detection for libgen.h and basename() to configure. My custom
6063 basename() replacement function for systems without it, might be a bit too
6066 Updated 6 test cases to make them work with the stripped paths.
6068 Daniel (30 September 2004)
6069 - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
6070 app to retrieve the errno variable after a (connect) failure. It will make
6071 sense to provide this for more failures in a more generic way, but let's
6074 - Günter Knauf and Casey O'Donnell worked out an extra #if condition for the
6075 curl/multi.h header to work better in winsock-using apps.
6077 - Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
6078 properly using glibtoolize instead of plain libtoolize. (This is made if
6079 glibtool was found and used instead of plain libtool.)
6081 Daniel (29 September 2004)
6082 - Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
6083 enable the progress meter.
6085 Daniel (28 September 2004)
6086 - "Mekonikum" found out that if you built curl without SSL support, although
6087 your current SSL installation supports Engine, the compile fails.
6089 Daniel (27 September 2004)
6090 - When --with-ssl=PATH is used to the configure script, it no longer uses
6091 pkg-config to figure out extra details. That is now only done if no PATH is
6092 included or if SSL is checked for by default without the --with-ssl option.
6094 Daniel (25 September 2004)
6095 - Peter Sylvester pointed out that CURLOPT_SSLENGINE couldn't even be set to
6096 NULL when no engine was supported. It can now.
6098 Daniel (22 September 2004)
6099 - Dan Fandrich fixed three test cases to no longer use "localhost" but instead
6100 use "127.0.0.1" to avoid requiring that localhost resolves nicely.
6102 - Jean-Claude Chauve fixed an LDAP crash when more than one record was
6105 Daniel (19 September 2004)
6106 - Andreas Rieke pointed out that when attempting to connect to a host without
6107 a service on the specified port, curl_easy_perform() didn't properly provide
6108 an error message in the CURLOPT_ERRORBUFFER buffer.
6110 Daniel (16 September 2004)
6111 - Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
6112 http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
6113 when "AUTH SSL" is issued (although the server responds fine and everything)
6114 but requires that curl issues "AUTH TLS" instead. See
6115 http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
6117 Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
6118 of the AUTH strings to attempt first.
6120 - Anonymous filed bug report #1029478 which identified a bug when you 1) used
6121 a URL without properly seperating the host name and the parameters with a
6122 slash. 2) the URL had parameters to the right of a ? that contains a slash
6123 3) curl was told to follow Location:s 4) the request got a response that
6124 contained a Location: to redirect to "/dir". curl then appended the new path
6125 on the wrong position of the original URL.
6127 Test case 187 was added to verify that this was fixed properly.
6129 Daniel (11 September 2004)
6130 - Added parsedate.c that contains a rewrite of the date parser currently
6131 provided by getdate.y. The new one is MUCH smaller and will allow us to run
6132 away from the yacc/bison jungle. It is also slightly lacking in features
6133 compared to the old one, but it supports parsing of all date formats HTTP
6134 involves (and a fair bunch of others).
6136 Daniel (10 September 2004)
6137 - As found out by Jonas Forsman, curl didn't allow -F to set Content-Type on
6138 text-parts. Starting now, we can do -F "name=daniel;type=text/extra". Added
6139 test case 186 to verify.
6141 - Bug report #1025986. When following a Location: with a custom Host: header
6142 replacement, curl only replaced the Host: header on the initial request
6143 and didn't replace it on the following ones. This resulted in requests with
6146 Now, curl checks if the location is on the same host as the initial request
6147 and then continues to replace the Host: header. And when it moves to another
6148 host, it doesn't replace the Host: header but it also doesn't make the
6149 second Host: header get used in the request.
6151 This change is verified by the two new test cases 184 and 185.
6153 Daniel (8 September 2004)
6154 - Modified the test suite to be able to use and run with customized port
6155 numbers. This was always intended but never before possible. Now a simple
6156 change in the runtests.pl script can make all tests use different ports.
6157 The default ports in use from now on are 8990 to 8993.
6159 Daniel (2 September 2004)
6160 - Minor modification of an SSL-related error message.
6162 Daniel (31 August 2004)
6163 - David Tarendash found out that curl_multi_add_handle() returned
6164 CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
6166 Daniel (30 August 2004)
6167 - Make "Proxy-Connection: close" close the current proxy connection, as Roman
6170 Daniel (24 August 2004)
6171 - Fixed a getdate problem by post-replacing the getdate.c file after the
6172 bison/yacc process to add the fix Harshal Pradhan suggested. The problem
6173 caused a crash on Windows when parsing some dates.
6175 Daniel (23 August 2004)
6176 - Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs
6177 even when told to use HTTP 1.0, which is not correct. Test case 180 and
6180 - Added test case 182 to verify that zero byte transfers call the callback
6183 Daniel (20 August 2004)
6184 - Alexander Krasnostavsky made the write callback get called even when a zero
6185 byte file is downloaded.
6187 Daniel (18 August 2004)
6188 - Ling Thio pointed out that when libcurl is built ipv6-enabled, it still did
6189 reverse DNS lookups when fed with a numerical IP-address (like
6190 http://127.0.0.1/), although it doesn't when built ipv6-disabled. libcurl
6191 should never do reverse lookups.
6193 Daniel (17 August 2004)
6194 - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
6195 empty file, libcurl would return with the file still open.
6197 - Alexander Krasnostavsky pointed out that the configure script needs to define
6198 _THREAD_SAFE for AIX systems to make libcurl built really thread-safe.
6200 Also added a check for the xlc compiler on AIX, and if that is detect we use
6201 the -qthreaded compiler option
6203 Daniel (16 August 2004)
6204 - libcurl now allows a custom "Accept-Encoding:" header override the
6205 internally set one that gets set with CURLOPT_ENCODING. Pointed out by Alex.
6207 - Roland Krikava found and fixed a cookie problem when using a proxy (the
6208 path matching was wrong). I added test case 179 to verify that we now do
6211 Daniel (15 August 2004)
6212 - Casey O'Donnell fixed some MSVC makefile targets to link properly.
6214 Daniel (11 August 2004)
6215 - configure now defines _XOPEN_SOURCE to 500 on systems that need it to build
6216 warning-free (the only known one so far is non-gcc builds on 64bit SGI
6217 IRIX). (Reverted this change later as it caused compiler errors.)
6219 - the FTP code now includes the server response in the error message when the
6220 server gives back a 530 after the password is provided, as it isn't
6221 necessary because of a bad user name or password.
6223 Version 7.12.1 (10 August 2004)
6225 Daniel (10 August 2004)
6226 - In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
6227 already UTF-8 encoded. This made the certificate verification fail if the
6228 remote server used a certificate with the name UTF-8 encoded.
6230 Work-around brought by Alexis S. L. Carvalho.
6232 Daniel (9 August 2004)
6233 - I fixed the configure script for krb4 to use -lcom_err as well, as I started
6234 to get link problems with it unless I did that on my Solaris 2.7 box. I
6235 don't understand why I started to get problems with this now!
6237 Daniel (5 August 2004)
6238 - Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
6239 reported in bug report #1004105
6241 Daniel (4 August 2004)
6242 - Gisle Vanem provided a fix for the multi interface and connecting to a host
6243 using multiple IP (bad) addresses.
6245 - Dylan Salisbury made libcurl no longer accept cookies set to a TLD only (it
6246 previously allowed that on the seven three-letter domains).
6248 Daniel (31 July 2004)
6249 - Joel Chen reported that the digest code assumed quotes around the contents a
6252 Daniel (28 July 2004)
6253 - Bertrand Demiddelaer fixed the host name to get setup properly even when a
6254 connection is re-used, when a proxy is in use. Previously the wrong Host:
6255 header could get sent when re-using a proxy connection to a different target
6258 - Fixed Brian Akins' reported problems with duplicate Host: headers on re-used
6259 connections. If you attempted to replace the Host: header in the second
6260 request, you got two such headers!
6262 - src/Makefile.am now includes the Makefile.inc file to get info about files
6264 Daniel (26 July 2004)
6265 - Made "curl [URL] -o name#2" work as expected. If there's no globbing for the
6266 #-number, it will simply be used as #2 in the file name.
6268 - Bertrand Demiddelaer fixed testing with valgrind 2.1.x and added two missing
6269 newlines in the cookie informationals.
6271 Daniel (24 July 2004)
6272 - I fixed the autobuilds with ares, since they now need to have buildconf run
6273 in the ares dir before the configure script is run.
6275 - Added Casey O'Donnell's curl_easy_reset() function. It has a proto in
6276 curl/curl.h but we have no man page yet.
6278 Daniel (20 July 2004)
6279 - Added buildconf and buildconf.bat to the release archives, since they are
6280 handy for rebuilding curl when using a daily snapshot (and not a pure CVS
6283 Daniel (16 July 2004)
6284 - As suggested by Toby Peterson, libcurl now ignores Content-Length data if the
6285 given size is a negative number. Test case 178 verifies this.
6287 Daniel (14 July 2004)
6288 - Günter Knauf has made the Netware builds do without the config-netware.h
6289 files, so they are now removed from the dist packages.
6291 - Günter Knauf made curl and libcurl build with Borland again.
6293 - Andres Garcia fixed the common test 505 failures on windows.
6295 Daniel (6 July 2004)
6296 - Andrés GarcÃa found out why the windows tests failed on file:// "uploads".
6298 Daniel (2 July 2004)
6299 - Andrés GarcÃa reported a curl_share_cleanup() crash that occurs when no
6300 lock/unlock callbacks have been set and the share is cleaned up.
6302 Daniel (1 July 2004)
6303 - When using curl --trace or --trace-ascii, no trace messages that were sent
6304 by curl_easy_cleanup() were included in the trace file. This made the
6305 message "Closing connection #0" never appear in trace dumps.
6307 Daniel (30 June 2004)
6308 - Niels van Tongeren found that setting CURLOPT_NOBODY to TRUE doesn't disable
6309 a previously set POST request, making a very odd request get sent (unless
6310 you disabled the POST) a HEAD request with a POST request-body. I've now
6311 made CURLOPT_NOBODY enforce a proper HEAD. Added test case 514 for this.
6313 Daniel (29 June 2004)
6314 - Günter Knauf made the testcurl.pl script capable of using a custom setup
6315 file to easier run multiple autobuilds on the same source tree.
6317 - Gisle fixed the djgpp build and fixed a memory problem in some of the
6318 reorged name resolved code.
6320 - Fixed code to allow connects done using the multi interface to attempt the
6321 next IP when connecting to a host that resolves to multiple IPs and a
6322 connect attempt fails.
6324 Daniel (27 June 2004)
6325 - Based on Rob Stanzel's bug report #979480, I wrote a configure check that
6326 checks if poll() can be used to wait on NULL as otherwise select() should be
6327 used to do it. The select() usage was also fixed according to his report.
6329 Mac OS X 10.3 says "poll() functionality for Mac OS X is implemented via an
6330 emulation layer on top of select(), not in the kernel directly. It is
6331 recommended that programs running under OS X 10.3 prefer select() over
6332 poll(). Configure scripts should look for the _POLL_EMUL_H_ define (instead
6333 of _POLL_H_ or _SYS_POLL_H_) and avoid implementations where poll is not
6334 implemented in the kernel."
6336 Yes, we can probably use select() on most platforms but today I prefered to
6337 leave the code unaltered.
6339 Daniel (24 June 2004)
6340 - The standard curl_version() string now only includes version info about
6341 involved libraries and not about particular features. Thus it will no longer
6342 include info about ipv6 nor GSS. That info is of course still available in
6343 the feature bitmask curl_version_info() offers.
6345 - Replaced all occurances of sprintf() with snprintf(). This is mostly because
6346 it is "A Good Thing" rather than actually fixing any known problem. This
6347 will help preventing future possible mistakes to cause buffer overflows.
6349 - Major reorganization in the host resolve code (again). This time, I've
6350 modified the code to now always use a linked list of Curl_addrinfo structs
6351 to return resolved info in, no matter what resolver method or support that
6352 is available on the platform. It makes it a lot easier to write code that
6353 uses or depends on resolved data.
6355 Internally, this means amongst other things that we can stop doing the weird
6356 "increase buffer size until it works" trick when resolving hosts on
6357 ipv4-only with gethostbyname_r(), we support socks even on libcurls built
6358 with ipv6 enabled (but only to socks servers that resolve to an ipv4
6359 address) and we no longer deep-copy or relocate hostent structs (we create
6360 Curl_addrinfo chains instead).
6362 The new "hostent to Curl_addrinfo" converter function is named Curl_he2ai()
6363 and is slightly naive and simple, yet I believe it is functional enough to
6366 Daniel (22 June 2004)
6367 - David Cohen pointed out that RFC2109 says clients should allow cookies to
6368 contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
6369 to 4999 now and made the used buffer get malloc()ed instead of simply
6370 allocated on stack as before. Extended test case 46 to include a cookie with
6371 very huge content to verify the fix.
6373 - Günter Knauf fixed getdate.y to remove a few warnings. I removed the
6374 ifdef'ed test we never ever use anyway.
6376 - Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
6377 anywhere in the wildcard string, support multiple '*'-letters in the
6378 wildcard and to allow the '*'-letter to match a string that includes a dot.
6380 Daniel (21 June 2004)
6381 - testcurl.sh is now removed completely, tests/testcurl.pl is the script to
6382 use when autobuilding curl!
6384 - Kjetil Jacobsen brought my attention to the fact that you cannot properly
6385 abort an upload with the readfunction callback, since returning 0 or -1 only
6386 stops the upload and libcurl will continue waiting for downloaded data and
6387 the server often waits for the rest of the upload data to arrive.
6389 Thus, I've now added the ability for read callbacks to return
6390 CURL_READFUNC_ABORT to abort an upload from a read callback. This will stop
6391 the transfer immediately with a CURLE_ABORTED_BY_CALLBACK return code.
6393 Test case 513 was added to verify that it works. I had to improve the test
6394 HTTP server too to dump the request to a file even when the client
6395 disconnects prematurely.
6397 Daniel (19 June 2004)
6398 - Luca Alteas provided a test case with a failing curl operation: when we POST
6399 to a site with --digest (or similar) set, and the server responded with a 302
6400 Location: to the "authprobe" request, it was not treated correctly. We still
6401 will behave badly if FOLLOWLOCATION is enabled for this case, but I'm not
6402 in the mood to dive into this right now and will leave it as-is for now.
6403 Verified my fix with test case 177.
6405 Daniel (18 June 2004)
6406 - Gisle Vanem's patch that provides more details from the SSL layers (if you
6407 use an OpenSSL version that supports it). It also introduces two new types
6408 of data that can be sent to the debug callback: CURLINFO_SSL_DATA_IN and
6409 CURLINFO_SSL_DATA_OUT.
6411 - With David Byron's test server I could repeat his problem and make sure that
6412 POSTing over HTTPS:// with NTLM works fine now. There was a general problem
6413 with multi-pass authentication with non-GET operations with CONNECT.
6415 Daniel (16 June 2004)
6416 - Modified to keep the upload byte counter in an curl_off_t, not an int as
6417 before. 32bits is not enough. This is most likely the bug Jean-Louis Lemaire
6418 reported that makes 2GB FTP uploads to report error ("unaligned file sizes")
6421 Daniel (15 June 2004)
6422 - Luca Alteas reported a problem that I fixed: if you did a POST with
6423 CURLAUTH_DIGEST set but the server didn't require any authentication,
6424 libcurl would repeatedly send HEAD lots of times until it gives up. This was
6425 actually the case for all multi-pass authentications. Added test case 174,
6426 175 and 176 to verify this.
6428 Daniel (14 June 2004)
6429 - Multipart formposts uploading files no longer inserts the files themselves
6430 into the huge prebuilt chunk. This enables libcurl to formpost files that is
6431 larger than the amount of system memory. When the file given is passed on
6432 stdin, libcurl still uses the old method of reading the full fill before the
6433 upload takes place. This approach was selected in order to not alter the
6434 behavior for existing applications, as when using stdin libcurl can't know
6435 the size of the upload and chunked transfer-encoding can only be used on
6438 Daniel (13 June 2004)
6439 - Gisle found out that we did wildcard cert name checks wrong, so that parts
6440 of the check wrongly was case sensitive.
6442 Daniel (11 June 2004)
6443 - Tim Sneddon brought a minor VMS fix to make curl build properly on his VMS
6444 machine. He also had some interesting libcurl patches... they might be able
6445 to do in a slightly nicer way. Discussions are in progress.
6447 Daniel (10 June 2004)
6448 - Gisle Vanem brought code cleanupsm better verbose output and better connect
6449 timeout handling when attempting to connect to a host that resolves to
6450 multiple IP addresses.
6452 - Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
6453 path after a file:// transfer.
6455 Daniel (9 June 2004)
6456 - Alexander Krasnostavsky made 'configure --disable-http' work to build libcurl
6457 without HTTP support. I added a new return code for curl_formadd() in case
6458 libcurl is built with HTTP disable: CURL_FORMADD_DISABLED.
6460 - Alexander Krasnostavsky pointed out a missing file in the generated
6461 curllib.dsp file, and now people building with this should get a libcurl.lib
6462 file generated as it used to do before we generated this file.
6464 Daniel (8 June 2004)
6465 - Marty Kuhrt fixed a minor build problem for VMS.
6467 Daniel (7 June 2004)
6468 - Reverted the configure check from the 4th since it obviously didn't work.
6469 Remade it in a different manner that hopefully works better.
6471 Daniel (4 June 2004)
6472 - Günter Knauf brought patches to make curl build fine on NetWare again.
6474 - Made the configure checks for strerror_r() not exit the configure script
6475 when built for cross-compiling.
6477 Daniel (3 June 2004)
6478 - Chris Gaukroger pointed out that 'make test' attempts to run the tests even
6479 if curl is built cross-compiled. I've now made it output a short message
6480 instead, saying it isn't possible to do.
6482 - Alexander Krasnostavsky brought FTP 3rd party transfer support to libcurl.
6483 You can now use libcurl to transfer files between two remote hosts using
6484 FTP. There are a bunch of new options to control this with:
6486 CURLOPT_SOURCE_USERPWD
6490 CURLOPT_SOURCE_PREQUOTE
6491 CURLOPT_SOURCE_POSTQUOTE
6493 (They still remain to be documented properly in the curl_easy_setopt man
6496 When using this, the ordinary CURLOPT_URL specifies the target URL, and you
6497 specify the source data with these additional options. ftp3rdparty.c is a
6498 new example source code showing how to use this.
6500 - Vincent Bronner fixed the HTTP Digest code to use the proxy user name and
6501 password when doing proxy authentication, it previously always used the host
6502 user name and password!
6504 Daniel (2 June 2004)
6505 - CURLOPT_UPLOAD and CURLOPT_PUT now do the exact same thing internally, which
6506 fixes some old confusions on when which of these should be used and what the
6509 - Applied Gisle's fixes to make curl build fine with lcc-win32
6511 Version 7.12.0 (2 June 2004)
6513 Daniel (1 June 2004)
6514 - I clarified the --create-dirs option somewhat in the curl man page.
6516 - Renaud Duhaut corrected the curl_unescape man page.
6518 - David Byron modified one of Massimiliano Ziccardi's recent MSVC makefile
6519 changes to now again use the mm lib by default.
6521 Daniel (26 May 2004)
6522 - Mohun Biswas added release-zlib and debug-zlib targets to the MSVC libcurl
6525 - David Byron reported a problem with proxy authentication when doing CONNECT,
6526 like when accessing HTTPS sites wiht a proxy. This probably broke when I
6527 rewrote the auth stuff recently.
6529 - I added fileupload.c in the examples directory, showing how an upload to a
6530 file:// URL is made.
6532 Daniel (25 May 2004)
6533 - Massimiliano Ziccardi updated the MSVC makefiles.
6535 Daniel (24 May 2004)
6536 - libcurl now supports "uploading" to file:// URLs. Test 204 and 205 were
6539 - Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
6540 Gisle's previous mail. We now use this function, and thus we require libidn
6541 0.4.5 or later. No earlier version will do.
6543 - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
6544 not be used both in one request. Fixed it and added test case 172 to verify.
6546 Daniel (21 May 2004)
6547 - While talking to host a.b.c, libcurl did wrongly not accept cookies that
6548 were set to the domain .a.b.c (that is with a dot prefix). This is now fixed
6549 and test case 171 verifies it.
6551 Daniel (20 May 2004)
6552 - Jesse Noller reported that the upload speed info reported by libcurl was
6553 wrong. The same was true for the download speed. Fixed now.
6555 Daniel (19 May 2004)
6556 - David Byron added test case 170 - this used to crash the previous version of
6559 Daniel (17 May 2004)
6560 - Peter Sylvester's patch that addresses two flaws in the peer certificate
6562 o when multiple common names are used (as in the curl tests), the last name
6563 needs to be selected.
6564 o allow comparing with encoded values, at least with BMP and ISO latin1
6567 - All 191 test cases run through the torture test OK! 'make test-torture' is
6568 now available in the root makefile (on configure-based environments).
6570 Daniel (14 May 2004)
6571 - With a slightly modified ftpserver.pl I've now run almost all tests through
6572 with runtests.pl -t. This is goodness!
6574 - Since I have been unable to contact the CVS admins for several months, I've
6575 decided that the current CVS hosting was not good enough. I've now moved the
6576 CVS repo once again, see README for updated cvs checkout instructions.
6578 Daniel (13 May 2004)
6579 - runtests.pl -t now runs fine all the way to test 100. I believe test case
6580 100 fails because of an FTP server problem.
6582 Daniel (12 May 2004)
6583 - General cleanups all over to make libcurl survive and do well when a memory
6584 function returns NULL. runtests.pl -t now works fine for the first 26 test
6587 Daniel (11 May 2004)
6588 - Seshubabu Pasam provided a patch that introduces curl_global_init_mem() -
6589 like normal curl_global_init() but allows the app to replace all memory
6590 functions with its own set. I modified it slightly.
6592 - Based on Luca Alteas' comments, I modified the curllib.dsp generation code.
6594 Daniel (10 May 2004)
6595 - Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
6596 separate free()-function by that lib to make sure the memory is freed by the
6597 same memory subsystem that allocated it. He responded positively and this
6598 will likely cause us to require a newer version of libidn as soon as Simon
6599 releases one with such a libidn_free() function.
6601 - James Bursa made runtests.pl's -t option work for any given test case, and I
6602 edited to allow -g too. Not even test case 1 worked...
6604 - Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
6606 - Andrés GarcÃa fixed a problem in the test script that made it fail to
6607 recognize our own running HTTP server.
6610 - James Bursa fixed the memanalyze.pl script to conder malloc(0) areas OK to
6611 free() and he made two failed-resolve error messages use the new display-
6612 name instead of the internally-used name.
6614 - Gisle Vanem tried curl with
6615 www.etdomenenavnkanmaksimaltinneholdesekstitrebokstaversliksomdette.com
6616 which caused problems, and I fixed the single zero byte buffer overwrite
6617 that occurred (due to a stupid protocol buffer size and parser).
6619 - Made the lib/curllib.dsp file get generated automaticly when a distribution
6620 package is made, with the msvcproj.* files as templates and all
6621 win32-sources added. I think this can be made to work better than the always
6622 lagging-behind previous approach. I'm not sure this builds a working project
6623 file right now though!
6626 - Michael Benedict brought a fix that fills in the errorbuffer properly when
6627 ares fails to resolve a name for a case not previously dealt with like this.
6630 - Joe Halpin fixed the annoying typecast warning in lib/ldap.c
6632 - Gisle Vanem fixes:
6633 o memdebug to not access NULL on several places
6634 o libcurl.def; curl_formparse is gone.
6635 o progress.c; fixed the percent values being trunced to 0.
6636 o if2ip.*; constified the 'interface' argument.
6638 - Tor Arntsen reported that many of his autobuilds froze and I found and fixed
6639 a problem introduced with the HTTP auth overhaul that could lead to a
6640 never-ending internal request-loop due to un-initialized variables!
6642 - Removed several compiler warnings on various compilers/platforms.
6645 - curl_formparse() has been removed from the library. It has been marked and
6646 mentioned as deprecated for several years.
6649 - Rewritten HTTP authentication code. The previous code could not properly
6650 deal with the added test cases 167, 168 and 169. I've now rewritten the code
6651 to better separate host and proxy authentication and not re-use the same
6652 variables as much as before as it proved non working in the more involved
6653 cases. All the current tests run OK now, and so do the new ones. The curl
6654 tool got a new option named --proxy-digest to enable HTTP Digest
6655 authentication with the proxy. I also made the library support it.
6657 - Gisle Vanem made the LDAP code work with wldap32.dll as supplied with
6658 Win-98/ME/2000/XP, so no extra .dlls are required when curl/libcurl is used
6659 on these Windows versions.
6661 Daniel (30 April 2004)
6662 - runtests.pl now scans the valgrind log for valgrind-detected memory leaks
6663 after each test case if valgrind was found and used.
6665 - I modified the app-code in curl to include the new lib/curlx.h and only
6666 access those functions using the curlx_-prefix in preparation for the future
6667 removal of several curl_-functions from the public libcurl API.
6669 - Introduced lib/curlx.h as a single header to provide the curlx_-functions
6672 - Added notices in the man pages for curl_getenv, curl_mprintf, curl_strequal
6673 and curl_strnequal that they are subject for removal in a future release.
6674 STOP USING THESE FUNCTIONS.
6676 - Mihai Ionescu noticed he couldn't do formposts with whitespace in the file
6677 names and yes, I broke that on April 23. Sigh. I fixed it now and added
6678 test case 166 to verify it.
6680 - Luca Altea pointed out a mistake left from the Digest patch of yesterday.
6682 Daniel (29 April 2004)
6683 - Made IDN domains work when sending requsts over HTTP proxy as well. Added
6684 test case 165 to verify the functionality.
6686 - Fixed a bug in the new internal host name setup when re-using connections.
6688 - James Bursa found out that curl_easy_duphandle() with ares-built libcurl
6689 created a bad handle that would crash in the first name resolve attempt. This
6690 is now fixed and test case 512 was added to verify it.
6692 - Luca Altea provided a major HTTP Digest code fix and cleanup. We now follow
6693 the Digest RFC a lot better.
6695 - Gisle Vanem made the SSL code use ERR_error_string_n() where applicable.
6697 Daniel (27 April 2004)
6698 - I remodeled Gisle's IDN code slightly and now we convert both the host name
6699 and proxy name to the ACE encoded version to use internally for resolves and
6700 cookies etc. They are now using one 'struct hostname' each that keep both
6701 the original name and the possibly encoded name. IDN resolves work for me
6702 now using ipv6, ipv4 and ares resolving. Even cookies on IDN sites seem to
6703 do right. I got some failures at first when CHARSET wasn't set at all which
6704 confused libidn completely and it decided by encoding of choice was
6707 - made 'configure --without-libidn' work
6709 Daniel (25 April 2004)
6710 - Fixed the src/hugehelp.c file to include "setup.h" instead of "config.h" to
6711 make the problems with USE_MANUAL on windows go away.
6713 - configure --without-ssl could still wrongly include some OpenSSL info in the
6714 Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
6717 - Since we can now build and use quite a large set of 3rd party libraries, I
6718 decided I would make configure produce a summary at the end showing what
6719 libraries it uses and if not, what option to use to make it use that. I also
6720 added some other random info that is nice in a "configure summary" output.
6722 - Applied TommyTam's patch that now make curl work with telnet and stdin
6723 properly on Windows.
6725 - The changes for today below were made by me and Gisle Vanem.
6727 The file previously known as hostip.c has now undergone a huge cleanup and
6733 The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
6734 source file are these:
6736 CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
6737 that. The host may not be able to resolve IPv6, but we don't really have to
6738 take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
6741 CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
6742 name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
6743 c-ares has no ipv6 support. This can be Windows or *nix.
6745 CURLRES_THREADED - is defined if libcurl is built to run under (native)
6746 Windows, and then the name resolve will be done in a new thread, and the
6747 supported asynch API will be the same as for ares-builds.
6749 If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
6750 libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
6753 The host*.c sources files are split up like this:
6755 hostip.c - method-independent resolver functions and utility functions
6756 hostasyn.c - functions for asynchronous name resolves
6757 hostsyn.c - functions for synchronous name resolves
6758 hostares.c - functions for ares-using name resolves
6759 hostthre.c - functions for threaded name resolves
6760 hostip4.c - ipv4-specific functions
6761 hostip6.c - ipv6-specific functions
6763 The hostip.h is the single united header file for all this. It defines the
6764 CURLRES_* defines based on the config*.h and setup.h defines.
6766 - Added function header comments to many functions in an attempt to better
6767 explain the purpose of them all.
6769 - configure --with-libidn is now supported. It makes the configure script
6770 check for libidn libs and include files in the prefix path given. If you
6771 say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
6772 and the includes in /usr/local/include etc.
6774 - curl_version_info() now returns a struct aged CURLVERSION_THIRD including
6775 libidn version info. The string curl_version() returns also includes libidn
6776 version info, if available.
6778 Version 7.11.2 (26 April 2004)
6780 Daniel (25 April 2004)
6781 - Erwin Authried pointed out that configure --disable-manual didn't do right
6782 if you already had a src/hugehelp.c source file present (which most people
6783 do I guess). It now uses the USE_MANUAL define properly.
6785 Daniel (23 April 2004)
6786 - Gisle Vanem found and fixed a memory leak when doing (failing) Windows
6787 threaded name resolves.
6789 - I also added test case 163 just to make sure -F "var=<file" works fine and
6790 can pass on characters such as newlines, carriage-return and tabs.
6792 - When we added test case 162 without adding the necessary requirement field
6793 in the test meta data we could see that curl didn't complain if you used
6794 --proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
6795 now made it check this first, and it now exists with a "the installed
6796 libcurl version doesn't support this" message if it happens again.
6798 Daniel (22 April 2004)
6799 - David Byron found and fixed a small bug with the --fail and authentication
6800 stuff added a few weeks ago. Turns out that if you specify --proxy-ntlm and
6801 communicate with a proxy that requires basic authentication, the proxy
6802 properly returns a 407, but the failure detection code doesn't realize it
6803 should give up, so curl returns with exit code 0. Test case 162 added to
6804 verify the functionality.
6806 - allow newlines in the contents when doing -F "var=[contents]"
6807 Robert Marlow reported.
6809 - If a transfer is found out to be only partial, libcurl will now treat that
6810 as a problem serious enough to skip the final QUIT command before closing
6811 the control connection. To avoid the risk that it will "hang" waiting for
6812 the QUIT response. Added test case 161 to verify this.
6814 Daniel (21 April 2004)
6815 - Modified the heuristics for dealing with the test 160 scenario. When a
6816 connection is re-used and nothing at all is received from it (because the
6817 server closes the connection), we will now retry the request on a fresh new
6818 connection. The previous ECONNRESET stuff from January 30 was removed again
6819 as it didn't detect the situation good enough.
6821 Daniel (20 April 2004)
6822 - Added test case 160 to verify that curl works correctly when it gets a
6823 connection reset when trying to re-use a connection. It should then simply
6824 create a new connection and resend the request.
6826 Daniel (19 April 2004)
6827 - No more 512 byte limit for host name (inclusing name + password) in libcurl.
6828 An added bonus is that we use less memory for the typical (shorter URL)
6831 - Cleaned up the sources to better use the terms 'hostname' and 'path'
6832 internally when referring to that data. The buffers used for keep that info
6833 is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
6834 than the previous mess.
6836 Daniel (15 April 2004)
6837 - Modified runtests.pl again to remove all log files in the log/ dir between
6838 each test, and then made -p display all non-zero byte files in the log dir.
6839 It should make that data more usable and contain less rubbish.
6841 - ftpserver.pl now produces log files more similar to how the sws ones look
6842 and they now also contains a bit more details to help debugging ftp
6845 - Removed the fixed maximum amount of dir levels the FTP code supported.
6846 Previously we had a fixed array for 100 levels, now we save space in each
6847 handle by allocating only for a few level by default and then enlarging that
6848 in case of need (with no maximum depth). Adjusted test case 142 to verify
6849 that 150 dir levels work fine. An added bonus is that we use less memory
6850 for the typical (not very deep) case.
6852 Daniel (14 April 2004)
6853 - Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
6854 now cause the resolve function to return NULL immediately. This flaw was
6855 pointed out by Gisle Vanem.
6857 - Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
6859 - runtests.pl now has a new option (-p) that will display "interesting" log
6860 files to stdout in case of a test failure. This is primarily intended to be
6861 used in the 'full-test' make target that is used by the autobuild tests, as
6862 we then get a much better chance to understand (remote) test failures based
6863 on autobuild logs alone.
6865 Daniel (13 April 2004)
6866 - Gisle Vanem made the multi interface work again on Windows even when built
6867 without ares. Before this, select() would return -1 during the name resolve
6868 phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
6871 - curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
6873 Daniel (11 April 2004)
6874 - Applied David Byron's patch for the MSVC libcurl makefile for builds with
6877 Daniel (9 April 2004)
6878 - Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
6879 be down to usec if the system sypports it.
6881 Daniel (7 April 2004)
6882 - A request that sends "Expect: 100-continue" and gets nothing but a single
6883 100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
6885 - The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
6888 Daniel (6 April 2004)
6889 - Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
6890 made libcurl on Windows leak a small amount of memory in each name resolve
6891 when not used as a DLL.
6893 - New authentication code added, particularly noticable when doing POST or PUT
6894 with Digest or NTLM. libcurl will now use HEAD to negotiate the
6895 authentication and when done perform the requested POST. Previously libcurl
6896 sent POST immediately and expected the server to reply a final status code
6897 with an error and then libcurl would not send the request-body but instead
6898 send then next request in the sequence.
6900 The reason for this change is due to IIS6 barfing on libcurl when we attempt
6901 to POST with NTLM authentication. The reason for the problems is found in
6902 RFC2616 section 8.2.3 regarding how servers should deal with the 100
6903 continue request-header:
6905 If it responds with a final status code, it MAY close the transport
6906 connection or it MAY continue to read and discard the rest of the
6909 Previous versions of IIS clearly did close the connection in this case,
6910 while this newer version decided it should "read and discard". That would've
6911 forced us to send the whole POST (or PUT) data only to have it discarded and
6912 then be forced to send it again. To avoid that huge penality, we switch to
6913 using HEAD until we are authenticated and then send the POST.
6915 The only actual drawback I can think of (except for the odd sites that might
6916 treat HEAD differently than they would treat POST/PUT when given the same
6917 URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
6918 authentication, libcurl will still use a HEAD in a first round and then do a
6921 If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
6922 an un-authenticated request at once, which then is the only request if the
6923 site requires no auth.
6925 Alan Pinstein helped me work out the protocol details by figuring out why
6926 libcurl failed and what IIS6 expects.
6928 - The --limit-rate logic was corrected and now it works a lot better for
6929 higher speeds, such as '10m' or similar. Reported in bug report #930249.
6931 - Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
6932 #include "timeval.h" from the lib dir to get the protos etc. Note that
6933 these are NOT part of the libcurl API. The curl app simply uses the same
6934 source files as the library does and therefore the file needs to be compiled
6935 and linked with curl too, not just when creating libcurl.
6937 - lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
6938 isn't portable enough
6940 Daniel (2 April 2004)
6941 - In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
6942 name to work better. As pointed out by Robin Kay.
6944 - Andrés GarcÃa updated the mingw makefiles.
6946 - Dirk Manske fixed a problem I recently added in the progress meter code that
6947 broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
6948 mistake in the code that produces the final update of the progress meter
6949 that would often prevent it from actually being updated that final time.
6951 Daniel (1 April 2004)
6952 - Dirk Manske fixed a memory leak that happened when we use ares for name
6953 resolves and decides to time-out before ares does it. This fix uses the
6954 brand new ares_cancel() function which is not present in c-ares 1.1.0.
6956 When told to enable ares, the configure script now checks for presence of
6957 the ares_cancel function to alert users if they attempt to use a too old
6960 Daniel (31 March 2004)
6961 - Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
6963 - Dirk Manske found out that libcurl timed out waiting for resolves far too
6964 easy when libcurl was built to use (c-)ares for name resolving.
6966 - Further Digest fixing and a successful test case 153 now makes me believe
6967 Mitz Wark's problems are fixed.
6969 - Andres Garcia figured out that test case 63, while working, only proved a
6970 flaw in libcurl's 'http_proxy' parser when a user name and password is
6971 provided. The user name was not extracted properly (and 'http' was always
6974 - Andrés GarcÃa fixed compiler warnings in our ioctlsocket() usage.
6976 Daniel (30 March 2004)
6977 - Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
6978 particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel. I've now
6979 written a configure test that checks for a working NI_WITHSCOPEID
6980 implemenation. No code uses the result from this test yet, it is still
6981 experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
6982 (5006623) -- it's not supported and shouldn't be in the header file."
6984 - I provided Mitz Wark with a first patch in order to fix libcurl's problems
6985 to re-negotiate Digest authentication (when 'stale=true' is included in the
6988 - Roy Shan discovered that the multi interface didn't properly timeout name
6989 lookups which could make handles get stuck in that state and thus never get
6990 completed. I've produced a first test patch that attempts to correct this.
6992 - David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
6993 even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
6994 and 152 were added to verify the functionality.
6996 Daniel (29 March 2004)
6997 - Gisle Vanem updated files for the djgpp/MS-DOS build.
6999 - Andrés GarcÃa helped me work out a fix for the runtests.pl script to make
7000 the file:// tests run fine when tested with the mingw-built version of curl.
7002 - Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
7003 This also required a minor fix of the configure script.
7005 - The postit2.c source example used the wrong struct name for the post data.
7007 Daniel (26 March 2004)
7008 - Gisle Vanem improved ipv6 support on windows by making the curl build to use
7009 the correct getaddrinfo() function.
7011 Daniel (25 March 2004)
7012 - It turned out that AIX, despite having a "thread-safe libc", doesn't offer
7013 all traditional functions thread-safe. This URL is informative on this
7016 http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
7017 genprogc/thread_quick_ref.htm
7019 As a result of this, we now check for three *_r() functions on recent AIX
7020 versions as well that the URL mentions aren't thread-safe in AIX 5.1.
7022 - renamed curl_strerror.[ch] to strerror.[ch]
7024 - Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
7025 for users to disable the Nagle algorthim-usage.
7027 - Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
7028 own API which differs from the POSIX one. Daniel adjusted the configure
7029 script to detect the version in use, and the code now uses the new defines
7032 - Fixed some build flaws with the new lib/curl_strerror.c source file.
7034 Daniel (24 March 2004)
7035 - Gisle Vanem's fix to replace the bad use of strerror(). This introduces
7036 Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
7038 - Tor Arntsen spell-fixed lots of libcurl man pages.
7040 - Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
7041 made it not use chdir .. to go back, as that isn't very good when you've
7042 setup a testdir containing symlinks.
7044 - Added a check for strerror_r() in the configure script.
7046 Daniel (23 March 2004)
7047 - Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
7048 use this script for the real distributed testing just yet, but it is only
7051 - Gisle Vanem provided code that makes curl report a better error message
7052 if --interface fails on windows.
7054 - The regular progress meter is now fixed to never wrap due to long lines. All
7055 fields are now static sized. If the time in the time fields get a time value
7056 that would represent a time that is 100 hours or more (if not, it remains
7057 using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
7058 days and hours) and if that isn't enough it switches to a "NNNd" display if
7059 it is more than 999 days.
7061 Several of the calculations were also moved to fixed-point math instead of
7064 Daniel (22 March 2004)
7065 - Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
7066 used to do if CURLOPT_NOBODY is set TRUE.
7068 - Kevin Roth patched the cygwin package makefile and README to adjust to
7069 new cygwin packaging guidelines.
7071 - Enabled "NT responses" in the NTLM authentication. Doing this simply means
7072 that we provide an extra chunk of data in each "type-3 message". The only
7073 reason for doing this is that it seems that using only the "Lanmanager hash"
7074 (as we've been doing until now) doesn't support passwords longer than 14
7075 characters and it turns out there are users out there who want to use
7076 libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
7077 updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
7080 - Moved the generated libcurl version info to a new header file, named
7081 curl/curlver.h. Now interested parties can include ONLY version info, should
7082 anyone want that (and it seems at least some windows resource files would).
7083 Mentioned as issue 27 in TODO-RELEASE.
7085 Daniel (21 March 2004)
7086 - Fixed the root Makefile to use tabs for the netware target. Günter Knauf
7089 - Marty Kuhrt's VMS cleanup
7091 - Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
7092 with particular pre-determined options.
7094 Version 7.11.1 (19 March 2004)
7096 Daniel (18 March 2004)
7097 - Tor Arntsen brought some info about SGI IRIX:
7099 IRIX supports 3 different executable/object formats, -32, -n32 and -64.
7100 -n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
7101 the 64-bit format. Libraries for the different formats are in lib, lib32
7102 and lib64 respectively.
7104 We've now adjusted the configure script to adapt to this when scanning for
7105 3rd party libs, such as OpenSSL.
7107 Daniel (17 March 2004)
7108 - Watz pointed out a few missing files in the MSVC project description file.
7110 - Günter Knauf brought patches, code and makefiles to build curl on Novell
7113 Daniel (15 March 2004)
7114 - Lots of libcurl man pages were updated to contain references to other man
7115 pages the recognized way so that they appear as nice hyperlinks in the HTML
7118 - buildconf now checks the m4 version too, since autoconf requires a GNU m4
7119 version to build proper configure scripts.
7121 Daniel (12 March 2004)
7122 - Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
7123 CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
7125 - David Byron fixed an uninitialized variable case/crash.
7127 Daniel (10 March 2004)
7128 - Jeff Lawson fixed the SSL connection to deal with received signals during the
7131 - Changed the OS string for win32 to become "i386-pc-win32".
7133 Daniel (9 March 2004)
7134 - Changed the internals to use curl_socket_t for socket variable type. This
7135 should enable us to build with less warnings on Windows, where SOCKET is
7136 used which is an unsigned int, while most other platforms use a mere int.
7138 - Modified lib/config-win32.h to build fine on MSVC again.
7140 Version 7.11.1-pre1 (8 March 2004)
7142 Daniel (8 March 2004)
7143 - Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
7144 larger than 4 bytes.
7146 Daniel (4 March 2004)
7147 - Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
7149 - Modified the test HTTP server a lot to work with the upcoming changes for
7150 PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
7151 GarcÃa's win32-changes. Improved the logging.
7153 - Fixed the file:-related progress/getinfo stuff a bit more.
7155 Daniel (4 March 2004)
7156 - I corrected a problem with the multi interface when following a Location:
7157 header or when doing multiple-request authentications. A subsequent request
7158 could erroneously re-use a previous connection that was sent with
7159 Connection: close. Christopher R. Palmer reported.
7161 - Andrés GarcÃa patched curl to prevent warnings while compiling with mingw,
7162 mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
7165 - When transferring files from a file: URL, the progress meter and other
7166 transfer metrics were not updated properly.
7168 - David Byron provided a "version resource" file to the curl executable for
7171 Daniel (3 March 2004)
7172 - David Byron's work on making libcurl only require winsock 1.1 on Windows
7175 - More variable cleanups based on compiler warnings generated by Tor Arntsen's
7176 autobuilds with MIPSPro.
7178 - Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
7180 - Applied Tom Bates' patch to build on nsr-tandem-nsk.
7182 - Dan Fandrich corrected some flaws in the configure GSS detection.
7184 Daniel (2 March 2004)
7185 - Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
7186 curl_off_t types internally.
7188 Daniel (1 March 2004)
7189 - Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
7190 response, that signals if this libcurl supports >2GB files. curl -V now
7191 outputs 'Largefile' in the Features: field if this is the case. Most systems
7192 are likely to support this.
7194 - We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
7195 to printf() curl_off_t variables. We also modified the libcurl sources to
7196 use this define instead of the previous %Od approach (although I've left the
7197 O-flag functional in the code). This should also prevent compilers to warn
7198 on the home-grown option.
7200 - Fixed the resume-check code to test for a working resume at the end of the
7201 headers and not at the first body-byte.
7203 - CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
7204 you need a global DNS cache for whatever reason, use the share interface and
7205 you'll get a global cache that works the way it should work. You can even
7206 have any number of global caches, all at your command. This is now also
7207 mentioned in the docs.
7209 - Made the *printf code support the z-flag to enable size_t printf() in a
7210 manner similar to how glibc allows it. To make printfing of this work on
7211 platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
7213 - Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
7214 CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
7215 loop without succeeding to authenticate due to the new connection that was
7216 made for all round-trips in the authentication. Now, the FRESH_CONNECT is
7217 remade to only matter for the first connection made with curl_easy_perform()
7218 and all the rest that might follow due to FOLLOWLOCATION or HTTP
7219 authentication are now ignoring that option.
7221 - Adjusted the QUIT code slightly since it could core-dump.
7223 - Corrected the test suite's FTP server to provide a correct size to the
7224 'verifiedserver' request.
7226 Daniel (27 February 2004)
7227 - Joe Halpin made the FTP code send QUIT on the control connection before
7228 disconnecting the TCP connection. This is what good-behaving ftp clients
7231 Daniel (26 February 2004)
7232 - David Byron updated several files to make curl build fine on MSVC 6. He
7233 also added the 'buildconf.bat' that works like the 'buildconf + configure'
7234 combo does on unixes.
7236 - Gisle Vanem made the memdebug stuff support calloc() as well.
7238 - Tor Arntsen pointed out that testcurl.sh needed to remove the generated
7239 files in order to have them re-generated in each build.
7241 - Andy Serpa found out that the share interface did not enjoy life when not
7242 having the lock and unlock callbacks set, even though documented to be
7243 OK. It still is OK, and now the code won't segfault anymore!
7245 Daniel (25 February 2004)
7246 - Based on a patch by Greg Hewgill I modified how long long is used in the
7247 mprintf code, as we can use a 64bit type with MSVC that is a long long
7248 equivalent. This corrects some weird large file behaviors on windows.
7250 - Tor Arntsen helped me work out --enable-debug to work better with different
7251 versions of the gcc and icc compilers.
7253 - Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
7255 Daniel (22 February 2004)
7256 - Applied the final pieces of Gisle Vanem's patch that brings a working name
7257 resolve timeout to the windows versions of curl!
7259 Daniel (21 February 2004)
7260 - David Byron's fix to allow the speed-limit logic work even if you set
7261 limit-rate. It does work on the expense of the rate limiter.
7263 Daniel (20 February 2004)
7264 - configure --enable-debug with gcc now also tries to detect the icc compiler
7265 (which somehow gets treated as if it is a gcc) to stop using all the gcc
7266 options with it, and we also provide -isystem options for each extra -I
7267 option the configure script has figured out (for OpenSSL, kerberos, zlib,
7268 Heimdal etc). This of course to prevent warnings on headers we don't have
7271 Daniel (19 February 2004)
7272 - Doug Porter made libcurl use the HOME environment variable before the
7273 getpwuid results when looking for .netrc files.
7275 - If 'configure --enable-debug' is used with gcc, it now checks which gcc
7276 version it is and uses as picky compiler options as possible for the
7279 - Code that can be used in both the lib and in the curl app is now made to use
7280 the curlx_ prefix. The first function to be available like this is the
7281 curlx_strtoll() function. This is made to allow the app to use existing code,
7282 but without polluting the libcurl API. Further explanations posted here:
7284 http://curl.haxx.se/mail/lib-2004-02/0215.html
7286 Daniel (18 February 2004)
7287 - Fixed buildconf to not use "which" as AIX and Tru64 have what have been
7288 referred to as "horribly broken 'which' programs".
7290 - Made sure dns cache timeout set to -1 really means caching forever.
7292 Daniel (17 February 2004)
7293 - Made it possibly to build c-ares with the libcurl memdebug system to better
7296 Daniel (16 February 2004)
7297 - When using ares, we now initialize the ares 'channel' in curl_easy_init()
7298 and re-use that same handle during the entire curl handle's life-time. It
7299 improves performance.
7301 - Fixed a problem when displaying verbose for ipv6-enabled libcurls and
7302 re-used connections. Problem reported and fix verified by Grigory Entin.
7304 - Jeff Lawson fixed the version-check in the SOCKS5 code.
7306 Daniel (15 February 2004)
7307 - Fixed a case where a host cache entry was not flagged in-use properly when a
7308 cached entry was used.
7310 - Andrés GarcÃa's patch that checks for winmm in the configure script was
7313 Daniel (13 February 2004)
7314 - Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
7315 specific network interface.
7317 - Greg Hewgill found out that the variable holding 'contentlength' wasn't big
7318 enough to hold a large file!
7320 - Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
7321 department, and there was another potential problem in the name resolve code
7324 Daniel (11 February 2004)
7325 - Removed a few variables that were only set but never used, as some compilers
7326 warn about that and we do not like compiler warnings!
7328 - Removed the need for symlinks in the tests/data directory if curl is built
7329 outside of the source directory and the 'make test' is used. This was done
7330 by providing a "source dir path" to the scripts/servers.
7332 - Now, if the configure script can't find an nroff tool or an option to nroff
7333 to use to convert man pages with, it will completely switch off the built-in
7336 - 'configure --disable-manual' completely disables the built-in manual from
7337 the curl command tool.
7339 - Andrés GarcÃa fixed the configure script and a minor source edit, and now
7340 he has managed to get msys/mingw to run configure and then build!
7342 Daniel (9 February 2004)
7343 - The default HTTP Accept: header was modified to the much simpler
7346 - P R Schaffner updated the curl-ssl spec file for RPMs.
7348 - Dominick Meglio brought lots of documentation for the share interface's man
7349 pages that were previously missing.
7351 - Tor Arntsen provided a patch that makes libcurl work-around a bug in the
7352 AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
7353 ipv6-enabled AIX builds.
7355 - Ken Rastatter provided portability fixes for the curlgtk.c example, and now
7356 it runs on windows with GTK as well!
7358 Daniel (6 February 2004)
7359 - Andrés GarcÃa made the configure script find gethostbyname() fine when run
7360 with mingw on windows.
7362 - Modified the ldap code to use proper function pointers all over (instead of
7363 mixed data and function pointers) to work-around the picky MIPSPro compiler
7366 - A custom Host: header is only considered if the request is not made by
7367 following a location. After discussions with Tim Baker.
7369 Daniel (5 February 2004)
7370 - The libz part of the configure script now only set the two libz-related
7371 define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
7372 If one is missing, none of the defines is set.
7374 - Andrés GarcÃa fixed the Mingw makefiles.
7376 - Len Krause reported that curl 7.9.X could do uploading from stdin without
7377 doing chunked encoding, which current curl cannot do even if you disable
7378 the transfer-encoding chunked header. Now it can again, and test case 98
7379 verifies this functionality.
7381 - Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
7382 the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
7383 messages when bailing out in the that function.
7385 - Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
7386 compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
7387 numerous minor quirks to make less warnings appear.
7389 Daniel (4 February 2004)
7390 - Based on a patch by Gilad, we now use the custom timeouts when waiting for a
7391 server to connect when using FTP PORT. Previously we always waited 10
7392 seconds, no more no less. We now also changed the default (if no timeout is
7393 set) to wait 60 seconds for the connect before we fail.
7395 Daniel (3 February 2004)
7396 - Modified to link with c-ares instead of ares.
7398 Daniel (2 February 2004)
7399 - Added a configure test to check for which option the (g)nroff tool wants
7400 to extract plain text from the man pages. Tor Arntsen told us the AIX
7401 version of GNU gnroff doesn't support -man!
7403 - Added an undef of accept in memdebug.h to make curl build with --enable-debug
7404 on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
7406 - curl_version() now includes c-ares version info, and curl_version_info() now
7407 returns a struct with version SECOND that also includes that info.
7409 - We are now officially using c-ares for asynch name resolves. c-ares is the
7410 new library, based on the existing ares but with an extended and slightly
7413 - Dirk improved the ares timeout code, and now we also include the ares error
7414 string when we fail to resolve a name.
7416 - Another tweak to make test case 91 run fine. Now we have another bit on a
7417 connection that is set true if the connection is marked for 'retry'. That
7418 makes the connection get closed and re-opened and the HTTP-done code must
7419 not complain on the fact that no data was received.
7421 - Based on Dirk Manske's patch, I modified the name resolving with ares to
7422 feature a timeout for really slow lookups. It now defaults to 300 seconds,
7423 but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
7426 - Fixed the inclusion of ca-bundle.h to really use the one in the build dir
7427 before the one in the source dir. Domenico Andreoli found out and reported.
7429 - Added test case 97, a simple POST with a custom Content-Type header
7430 replacing the original application/x-www-form-urlencoded one.
7432 Daniel (30 January 2004)
7433 - Added code that attempts to fix the test 91 failure. As has been figured out
7434 by Patrick Smith, the error happens because we re-use a connection that the
7435 server is just about to close and we even manage to send away the request
7436 without seeing an error. On the first read attempt we get a ECONNRESET.
7437 Starting now, we attempt to detect this and if so, we retry the request on a
7440 - I added test case 510 which is a custom program that does a POST using a
7441 read callback, with chunked transfer-encoding.
7443 - Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
7445 - Added --socks as a recognized option. It works just like --proxy but sets a
7446 SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
7447 while, just not provided by the curl tool. This does not currently work for
7448 IPv6-enabled libcurls.
7450 Daniel (29 January 2004)
7451 - Stadler Stephan pointed out that src/hugehelp.c included config.h without
7452 checking the define if its present...
7454 - Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
7457 - Dan Fandrich compiled curl with lots of aggressively pedantic compiler
7458 options and thus found a few minor errors and did some general cleanups to
7461 - Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
7464 Daniel (28 January 2004)
7465 - Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
7466 CRLF combo properly.
7468 Daniel (27 January 2004)
7469 - Made the response-headers during a CONNECT request to a proxy get passed on
7470 as regular headers, so they appear with -i/-I options and similar.
7472 - Based on a patch by Gisle Vanem, I've made the progress meter display
7473 properly switch to a GB-display when more than 9999MB have been transfered.
7475 Daniel (23 January 2004)
7476 - Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
7477 required didn't have one and was on the last line of a file.
7479 - More Windows fixes for large files. We now build and link with
7480 ../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
7481 libcurl function... Perhaps we should consider a 'common' dir or similar
7482 where we put source code used in both the lib and the client. Or perhaps
7483 we'll just make this function available in the library...
7485 - Vincent Bronner found out the socks5 code crashed when no username was
7488 - Vincent Bronner spotted a problem with proxy username/password when re-using
7489 a persistent connection.
7491 - Fixed the progress meter display for files larger than 2^31 bytes. Gisle
7494 Daniel (22 January 2004)
7495 - Gisle Vanem made strtoll() get used when curl is built with the mingw
7498 - Gisle Vanem fixed the compressed help text code to display properly.
7500 - Removed the '#define HttpPost' from the public header file, as curl_httppost
7501 is the proper name and it has been for quite some time now. Fixes another
7502 name space pollution.
7504 - Added 'curl_off_t' typedef in the public header file, to be used to provide
7505 large file sizes to the *_LARGE options. Adjusted the code all over to use
7506 this variable type instead of 'off_t'. This is an attempt to make the large
7507 file support work on more platforms. The configure script now checks the
7508 size of the curl_off_t instead of the plain off_t.
7510 Version 7.11.0 (22 January 2004)
7512 Daniel (21 January 2004)
7513 - Removed the defines in the public header file with TIMECOND_ prefixes. They
7514 have been obsolete since April 22nd 2002, and if this causes anyone any
7515 problems now it is very easy to just add CURL_ to the names. This corrects
7516 this name space pollution.
7518 Daniel (19 January 2004)
7519 - David Byron cleaned up how --trace with no option was treated, and also
7520 arguments in a config file without a required parameter!
7522 Daniel (16 January 2004)
7523 - Gisle Vanem fixed a few issues where compilers warned about variables
7524 possibly being used unassigned.
7526 - Minor Interix build problem fixed.
7528 Daniel (15 January 2004)
7529 - Peter Sylvester pointed out some necessary escaping needed in the
7530 acinclude.m4 file when automake 1.8 or later is used.
7532 Daniel (14 January 2004)
7533 - Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
7534 Steve Green provided on december 3...
7536 Daniel (13 January 2004)
7537 - Luke Call made the win32 version of the password prompting function support
7540 - Dan Fandrich fixed the hugehelp source file to contain both a compressed and
7541 an uncompressed version in the distribution, so that more people easier can
7542 build curl with the compressed version.
7544 - Diego Casorran brought another AmigaOS build patch for native Amiga builds.
7546 - Matt Veenstra updated the Mac OS X framework files.
7548 - Brian R Duffy brought a section to the INSTALL file on how to build a
7549 SSL-enabled curl using the free Borland C++ compiler. He also updated the
7550 Borland lib/Makefile.b32.
7552 - I fixed the test case 509 which I broke yesterday. Now the libtest are
7553 compiled with an include path that points to the library's source dir, so
7554 that the libtests can include files from the source tree. This was made to
7555 make it possible to use the USE_SSLEAY define in the library test files.
7557 Daniel (12 January 2004)
7558 - Peter Sylvester brought code that now allows a callback to modified the URL
7559 even when the multi interface is used, and then libcurl will simulate a
7560 "follow location" to that new URL. Test 509 was added to test this feature.
7562 - Extended the time we retry servers in the test script, and I also made it
7563 retry the https and ftps servers before they are considered bad. I believe
7564 the previous approach could turn problematic on really slow hosts.
7566 Version 7.11.0-pre1 (12 January 2004)
7568 Daniel (11 January 2004)
7569 - Dominick Meglio pointed out FTPS should use default port 990 according to
7572 Daniel (8 January 2004)
7573 - Fixed the SPNEGO configure check to not use -R or other non-portable options
7574 in the LDFLAGS. Reported by Pierre in bug report #872930.
7576 Daniel (5 January 2004)
7577 - Dan Fandrich provided a fix on our zlib usage.
7579 - David J Meyer's patch that introduce large file support to libcurl was
7580 applied. New curl_easy_setopt options that accept 'off_t' arguments are:
7586 Daniel (4 January 2004)
7587 - Based on Dominick Meglio's comments, I made our private version of
7588 gettimeofday() declared static. This would otherwise collide with the same
7589 function in other libs (like ares for example).
7591 - Added Dominick Meglio's description on how to build libcurl with ares
7593 Daniel (19 December)
7594 - CURLOPT_IPRESOLVE was not possible to set.
7596 - Gisle Vanem updated the djgpp build files.
7598 Daniel (18 December)
7599 - John McGowan reported a redirect-problem that happened if a site used a URL
7600 like "url.com?var=content" (without a proper slash) and from that address
7601 redirected the user-agent to an absolute directory.
7603 - David Byron made libcurl build fine with both the .NET and VC6 versions of
7606 Daniel (16 December)
7607 - Updated test 506 since it started to fail after the cache prune change
7608 yesterday. I also changed it slightly to feature a counter in each debug
7609 output for easier tracing.
7611 Daniel (15 December)
7612 - Old DNS cache entries are now only pruned after curl is done with a request,
7613 and not in the actual name resolve call.
7615 - corrected the --enable-ares patch
7617 - Giuseppe Attardi found and fixed a problem within libcurl that re-used
7618 already freed memory.
7620 Daniel (10 December)
7621 - Gisle Vanem reported that the dict support was broken. I broke it during my
7622 ftps-changes overhaul. I've now added a 'curlassert' function that can be
7623 used to verify expressions, to prevent future errors of the same
7624 kind. They're only present in debug-builds.
7626 - Diego Casorran made curl and libcurl possible to build natively (no more
7627 need for the ixemul library) on AmigaOS.
7629 - Dominick Meglio made configure --enable-ares support a given path to the
7630 installed ares lib, instead of always using it in the curl source tree.
7631 This also fixed the curl-config --libs output.
7633 - Eric S. Raymond patched a very minor man page format error in
7637 - Fixed the flaw that made -lz appear twice on the link command line.
7639 - After correspondence with Gisle Vanem, I changed the 'connection aborted'
7640 error text when the FTP response reader failed to more specificly identify
7641 what the problem is.
7643 - Based on a patch from Dominick Meglio, curl-config --feature now outputs
7644 'AsynchDNS' as a feature if libcurl was built with ares. The feature name
7645 is the same that 'curl -V' outputs, for simplicity.
7648 - Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
7649 specific stuff in the client code to a separate header file.
7651 - Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
7654 - swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
7655 when Transfer-Encoding: chunked is used, as mandated by RFC2616.
7658 - --ftp-pasv was added, which serves the only purpose of overriding a
7659 previously set --ftpport option. Starting now, --ftp-port is a recognized
7660 alias for --ftpport for consistency.
7662 - Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
7663 send() and recv(). I added checks for the define in the configure script and
7664 adjusted the code accordingly. If the symbol is present, we won't attempt
7665 to ignore the SIGPIPE signal.
7668 - Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
7669 run fine against its FTPS implementation. Now these FTPS-related things
7671 o explicit and implicit FTPS
7672 o active (PORT) and passive (PASV)
7673 o upload and download
7674 o verified against bsdftpd-ssl and RaidenFTPD
7676 Daniel (27 November)
7677 - James Clancy made the Borland Makefiles up to date.
7679 - Markus Moeller improved the SPNEGO detection in the configure script.
7681 Daniel (25 November)
7682 - Dave May filed bug report #848371, identifying that if you'd do POST over a
7683 proxy to a https server, libcurl didn't POST at all, it just made a GET! It
7684 turned out to be because libcurl wrongly didn't consider the authentication
7685 "negotiation phase" to be complete yet.
7687 I added test case 95 to verify my fix for this.
7689 Daniel (24 November)
7690 - Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
7691 seems to work somewhat fine now.
7693 The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
7694 (version 12). There seems to exist quite a few servers that have implemented
7695 the server side of this.
7697 We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
7698 connection and the data connection (dealing with two SSL connections forced
7699 me to change a lot of stuff in libcurl).
7701 Alternatively, and what seems to be the recommended way, we can set the new
7702 option CURLOPT_FTP_SSL to one of these values:
7704 CURLFTPSSL_NOPE, - do not attempt to use SSL
7705 CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
7706 CURLFTPSSL_CONTROL - SSL for the control connection or fail
7707 CURLFTPSSL_ALL - SSL for all communication or fail
7709 Any failure to set the desired level will make libcurl fail with the error
7710 code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
7711 attempt to be made securely.
7713 I've been able to login and get files (passively) from Mathias' server using
7714 both ftps:// and CURLOPT_FTP_SSL. (I've made 'curl' understand the --ftp-ssl
7715 option that sets CURLFTPSSL_TRY.)
7717 - Gaz Iqbal fixed a range string memory leak.
7719 - Gisle Vanem fixed the Windows builds.
7721 - Added the new FTPSSL defines in curl/curl.h
7723 Daniel (20 November)
7724 - Josh Kapell filed bug report #845247 as he found an endless loop when
7725 getting a 407 back from a proxy when no user+password was given. Added test
7726 case 94 to verify the fix.
7728 Daniel (19 November)
7729 - Kevin Roth fixed a progress-bar problem on Windows.
7731 - While working with Nicolas Croiset's bug report #843739, I noticed two minor
7732 problems related to ftp partial downloads: if a partial transfer is
7733 detected, we must close the connection as we cannot know in what state it is
7734 anymore. This looks like a ProFTPD bug:
7735 http://curl.haxx.se/mail/lib-2003-11/0079.html
7737 Daniel (17 November)
7738 - Maciej W. Rozycki made the configure script use a cache variable for the
7739 writable argv test. This way, the default can be overridden better (for
7742 Daniel (15 November)
7743 - Mathias Axelsson found out libcurl sometimes freed the server certificate
7744 twice, leading to crashes!
7746 Daniel (14 November)
7747 - Siddhartha Prakash Jain found a case with a bad resolve that we didn't
7748 properly bail out from, when using ares.
7750 Daniel (13 November)
7751 - Default Content-Type for parts in multipart formposts has changed to
7752 "application/octet-stream". This seems more appropriate, and I believe
7753 mozilla and the likes do this. In the same area: .html files now get
7754 text/html as Content-Type. (Pointed out in bug report #839806)
7756 - Gisle Vanem corrected the --progress-bar output by doing a flush of the
7757 output, which apparently makes it look better on at least windows, but
7758 possibly other platforms too.
7760 - Peter Sylvester identified a problem in the connect code, which made the
7761 multi interface on a ipv6-enabled solaris box do bad. Test case 504 to be
7762 specific. I've spent some time to clean-up the Curl_connecthost() function
7763 now to use less duplicated code for the two different sections: ipv6 and
7766 Daniel (11 November)
7767 - Added CURLOPT_NETRC_FILE. Use this to tell libcurl which file to use instead
7768 of trying to find a .netrc in the current user's home directory. The
7769 existing .netrc file finder is somewhat naive and is far from perfect on
7770 several platforms that aren't unix-style. If this option isn't set when
7771 CURLOPT_NETRC is set, the previous approach will still be used.
7773 The current .netrc check code now also support longer than 256 bytes path
7776 Daniel (10 November)
7777 - Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
7778 written in the source dir if a different build dir is used.
7780 - After Sébastien Willemijns' bug report, we now check the separators properly
7781 in the 229-reply servers respond on a EPSV command and bail out better if
7782 the reply string is not RFC2428-compliant.
7785 - Based on Gisle Vanem's patch, I made curl try harder to get the home
7786 directory of the current user, in order to find the default .curlrc file.
7787 We're also considering moving out the HOME-dir code from libcurl, and
7788 instead have the app pass in the path to the .netrc file (which is the only
7789 logic left in libcurl that uses the HOME dir). Then curl can use the home
7790 dir for that purpose too.
7792 - Ralph Mitchell's updated testcurl.sh to the script to take an existing
7793 directory name and build/run/test curl in there instead of trying to update
7794 from CVS. Using this approach, the script can now be used to test daily
7797 - Gisle Vanem added a "resource file" to the Windows DLL builds, to contain
7798 information such as version number, library name, copyright info etc.
7801 - curl checks if the existing libcurl supports things like --ntlm, --negotiate
7802 and --krb4 and returns error if not.
7804 - I added three new global defines in the curl/curl.h header:
7805 LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. They
7806 are the three numbers in the library's version number, separated for easier
7807 usage. 'maketgz' was updated accordingly to generate these numbers properly
7808 when building release-archives.
7810 - Uninitialized variable fix, reported by both Marty Kuhrt and Benjamin
7813 - Matt Veenstra provided build files to build libcurl as a "framework" under
7814 Mac OS X. See the lib/libcurl.framework.make for details.
7816 - Removed the defines of TRUE and FALSE from the curl/curl.h header file.
7817 They're not in our name space so we should not fiddle with them.
7820 - Replaced the man page to HTML converter program with a new one: roffit.
7821 Makes nicer web pages.
7824 - Troels Walsted Hansen fixed the MSVC makefiles to let them build curl fine
7827 - Kevin Roth corrected the cygwin package generator and spell-fixed the
7828 comment in the ca-bundle.h file.
7830 Version 7.10.8 (1 November 2003)
7833 - Assume that MDTM on an FTP server returns the timestamp using the UTC time
7834 zone. This changes the time CURLINFO_FILETIME returns for a given file over
7835 FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make
7836 the functionality more similar to how the HTTP one is already working.
7838 - Command line options that take numerical parameters (such as -y, -Y, -C etc)
7839 now report error and exit if the parameter isn't truly a number greater than
7840 or equal to zero. This helps users to notice bad usage earlier. Before, when
7841 a user forgot or missed to add a numerical parameter to an option, the
7842 command line parser would simply "eat" the following option and it would
7843 cause great confusion.
7846 - David Hull made libcurl deal with NOBODY and HEADER for file:// the same way
7847 it already does for FTP: it provides HTTP-looking headers that provide info
7848 only about the file, without doing the actual transfer. The curl tool then
7849 lets --head do this.
7852 - runtests.pl now checks for and use valgrind if present. It will redirect the
7853 valgrind results in log/valgrind[num] but it currently doesn't scan that
7854 file for any errors or anything, that is still only made manually.
7856 - David Hull made the file: URL parser also accept the somewhat sloppy file
7857 syntax: file:/path. I added test case 203 to verify this.
7860 - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
7861 function for some specific versions (reported on 2.2.5 and 2.1.1), and
7862 provided a fix. On Linux machines with these glibc versions, non-ipv6
7863 builds of libcurl would often fail to resolve perfectly resolvable host
7867 - James Bursa found out that curl_msnprintf() could write the trailing
7868 zero-byte outside its given buffer size. This could happen if you generated
7869 a very long error message as then libcurl would overwrite the ERRORBUFFER
7870 with one byte. Using a non-existing very long local file:// name is one case
7871 that could make this occur.
7874 - David Hull filed bug report #829827. It identified a problem with -C - if
7875 the full file already was downloaded and thus the server responded with a
7876 416. libcurl would then wrongly use the Content-Length: header and expect
7877 that size to get transfer, causing a "hang" until the server closed the
7878 connection and then an error 18 ("still N bytes data left of the transfer").
7880 Now we don't return any error at all, but I think libcurl should perhaps
7881 return some kind of info since the requested range was out of the size of
7884 - Based on David Hull's fix in bug report #804599, we now check for solaris and
7885 gcc in configure and set the -mimpure-text link flag for linking the lib
7888 - I've introduced a -t option to the runtests.pl script. With that option set,
7889 the script runs special "memory torture" tests. For each test command line
7890 in that section, the script first runs the command line and counts the total
7891 amount of allocations made. It then runs the exact same command line again,
7892 forcing allocation number N to fail. It will try every N from 1 to the total
7893 number of amounts made. For every invoke, it checks that no memory was
7894 leaked as that would indicate a bad cleanup somewhere in the code.
7896 This is just beginning to work, and I've already made some corrections in
7897 libcurl code. When this code works somewhat fine, I'll make sure 'make test'
7898 in the root dir will run these tests as well.
7901 - Georg Horn fixed how the CA verification is made. Verifications can now be
7902 made while at the same time the result of it can be ignored. This also
7903 affects the curl tool as -k can now be used together with --cacert or
7907 - Gisle Vanem found out --disable-eprt didn't work and patched it.
7909 - Test case 91 was modified and could now repeat the problem Kevin Roth has
7910 reported, and the bug was fixed.
7912 - Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile
7913 to build a static libcurl that links with a shared OpenSSL using MSVC.
7916 - Andrés GarcÃa updated the mingw32 makefiles.
7918 Version 7.10.8-pre5 (21 October 2003)
7921 - Georg Horn made libcurl output more info on SSL failures when receiving
7924 Version 7.10.8-pre4 (18 October 2003)
7927 - Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
7929 - Made libcurl show verbose info about what auth type and user name that is
7930 being sent in its HTTP request-headers.
7933 - Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl
7934 no longer prompt for passwords under any circumstances. Password prompting
7935 was instead moved to curl, which now prompts for password if -u or -U lack
7936 it. This solves the problem Kevin Roth reported when curl prompted for
7937 password twice when doing NTLM authentication.
7939 - I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP-
7940 licensed derivate code.
7943 - Avoid doing getsockopt() on Windows to verify connects. It seems that this
7944 hogs Windows machines when libcurl is being used multi-threaded (with > ~50
7945 threads). Andrew Fuller helped us verify and test this.
7948 - Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set.
7950 - Gisle Vanem made libcurl build and work with IPv6 on Windows.
7953 - Giuseppe Attardi reported yet another segfault with ares and the multi
7954 interface. Me fixed.
7956 - Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am
7957 that was reported about in the debian bug report #212086.
7959 Domenico also fixed two makefiles where we used 'gnroff' instead of the more
7963 - Dirk Manske made the share locking around DNS lookups slightly different to
7964 allow the share system's DNS lookups to run somewhat more
7968 - Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
7969 an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download
7970 still has a Range header with a garbage value." bug report #820502
7972 - Dominick Meglio made the inet_pton.c file build fine using MSVC.
7974 - The 'sws' test suite web server now #include setup.h from the lib directory.
7975 This makes it more portable easier.
7977 Version 7.10.8-pre3 (8 October 2003)
7980 - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
7981 addresses, if one of them fails (ipv4-code).
7984 - Neil Dunbar provided a patch that now makes libcurl check SSL
7985 subjectAltNames when matching certs. This is apparently detailed in RFC2818
7986 as the right thing to do. I had to add configure checks for inet_pton() and
7987 our own (strictly speaking, code from BIND written by Paul Vixie) provided
7988 code for the function for platforms that miss it.
7990 - HTTP POST using the read callback didn't work, as Florian Schoppmann
7994 - Shared provided a few fixes to make libcurl build on BeOS
7995 out-of-the-box. New code for BeOS-style non-blocking sockets, provided by
7996 Shard and Jeremy Friesner. Modified the autoconf check for non-blocking
7997 sockets to check for this kind too.
8000 - Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer
8001 and then set it to NULL in a subsequent one, the previous cookie was still
8004 - Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due
8005 to a bad path, it would cause the next transfer to use a bad path as well.
8007 - Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
8008 when working on IP-only names as we then could return "wait" status when the
8009 name in fact already was resolved. I edited the patch slightly to not expose
8010 asynch details to non-ares aware source code.
8013 - Neil Spring posted the debian bug report #213180, and pointed out that using
8014 the name 'access' in a function prototype is not very wise as some compilers
8017 - Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source
8018 code that shows how they use ssl and callbacks.
8021 - James MacMillan's patch makes curl build on QNX 6.2.x.
8023 Daniel (26 September)
8024 - My daughter was born!
8026 Daniel (23 September)
8027 - Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that
8028 particular IP version. They only work for IPv6-enabled libcurls.
8030 - curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to
8033 Version 7.10.8-pre2 (22 September 2003)
8035 Daniel (22 September)
8036 - Giuseppe Attardi found a segfault in libcurl when using the multi interface
8037 with ares and doing repeated operations against a non-resolving host name.
8039 Daniel (19 September)
8040 - Added the CURLOPT_IPRESOLVE option, that allows an application to select
8041 what kind of IP addresses he wants to use when resolving host names. This
8042 is only interesting when using host names that resolve addresses using more
8043 than one version of IP.
8045 - Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
8046 is built with the FBopenssl libraries. curl_version_info() now returns
8047 info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
8048 with the MIT GSS-library (the Heimdal one still works too).
8050 Daniel (16 September)
8051 - Doing PUT with --digest failed, as reported in bug report #805853.
8053 - Using --anyauth that picked NTLM, and then a redirect closed the connection
8054 and took curl to a second NTLM page made curl fail. Bug report #806328
8055 identified the problem, test case 90 was added to verify the fix.
8057 Daniel (14 September)
8058 - codemastr brought a patch for ares to make the Windows portions of it work
8059 properly on NT4. I uploaded a new diff and updated the docs on where to get
8062 - Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a
8063 cached DNS entry even though it may be in use, which caused "random" memory
8064 to get overwritten and thus "random" crashes.
8066 Daniel (12 September)
8067 - Based on a bug report by David Kimdon, I made the runtests.pl script clear
8068 all possible proxy environment variables before the tests are run.
8070 - By default, easy handles within a multi handle now share DNS cache.
8072 - Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for
8073 Microsoft's "Negotiate" authentication as well.
8075 Daniel (11 September)
8076 - A zero-length proxy string confused FTP transfers.
8078 - Bjorn Reese found a case with an uninitialized pointer, only present when
8081 Version 7.10.8-pre1 (8 September 2003)
8083 Daniel (7 September)
8084 - Jurij Smakov found out that the non-OpenSSL MD5 code was not working on
8085 Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects
8088 Daniel (5 September)
8089 - Kevin Fisk reported that configure --enable-thread didn't work. I fixed.
8091 - De-macrofied the lib/hash.c source code somewhat.
8093 Daniel (4 September)
8094 - CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
8095 Mueller-Tolk's patch,
8098 - Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout
8099 requirements on the FTP server's ability to respond to individual commands
8100 without placing global requirements on transfer or connect time. Files
8102 - include/curl/curl.h
8103 Added option CURLOPT_FTP_RESPONSE_TIMEOUT
8105 Added branch inside Curl_GetFTPResponse to check for
8106 data->set.ftp_response_timeout
8108 Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT
8110 Added ftp_response_timeout to struct UserDefined
8112 Daniel (3 September)
8113 - Peter Pentchev found and fixed two problems in the test suite's web server
8114 code, that made it segfault at times.
8116 - Jörg Mueller-Tolk improved the proxy user+password handling, especially
8117 when providing a blank password.
8119 Daniel (2 September)
8120 - Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
8121 and similar to work.
8123 Daniel (1 September)
8124 - Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current).
8126 - Jeff Pohlmeyer added a proper error message for non-resolving hosts when
8127 using ares for lookups.
8130 - John McGowan reported that curl -k still failed if the HTTPS server's CN
8131 field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being
8132 set to 1, and libcurl failed if the CN was missing. Starting now, having it
8133 set to 1 will simply output a warning if no CN could be obtained (as having
8137 - Vincent Sanders provided a fix for name resolving when linked with uClibc.
8140 - Gerd v. Egidy provided a patch that makes libcurl store the FTP response
8141 code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE
8142 returns that data. The option is therefore now also known as
8143 CURLINFO_RESPONSE_CODE.
8145 - Antoine Calando found a segfault when doing multi-part/formpost using
8146 the multi interface.
8148 - Antoine Calando pointed out that curl_multi_info_read() didn't set the
8149 msgs_in_queue to 0 properly when returning NULL.
8152 - I made curl support multiple -T options, as well as -T "{file1,file2}"
8153 style globbing. One -T for each URL is supported.
8155 - Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the
8156 multi interface when trying a non-existing host name.
8158 - Made the libcurl printf code support long longs if available.
8160 - Loren Kirkby pointed out that we did not clean up all SSL-allocated memory
8161 in curl_global_cleanup().
8164 - Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make
8165 them get the internal defaults restored. Previously this could cause a
8166 segfault. We should aim at having all pointer-related options get restored
8167 to default/safe values when set to NULL.
8169 Version 7.10.7 (15 August 2003)
8172 - I modified the memdebug system to return failure on memory allocation
8173 functions after a set amount of successful ones. This enables us to test
8174 out-of-memory situations in a controlled manner and we can make sure that
8175 curl/libcurl behaves good in those.
8177 This made me find and fix several spots where we did not cleanup properly
8178 when bailing out due to errors (low memory).
8180 - Corrected test case 74. Made using -o with bad #[num] codes complain and
8181 bail out. Made #[num] support numbers larger than 9 as well. Added test
8182 case 86 for a proper range globbing test as well.
8184 Version 7.10.7-pre4 (12 August 2003)
8187 - curl_version_info() now returns a flag if libcurl was built with asynch DNS
8188 support, and this is now also displayed with 'curl -V'.
8190 - Added a few new man pages to the docs/libcurl dir: curl_share_init,
8191 curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share.
8194 - Mike Cherepov made the local binding code work for Windows, which makes
8195 the option CURLOPT_INTERFACE work on Windows as well.
8197 - Vincent Sanders updated the fopen.c example code a lot.
8199 - --proxy-ntlm is now supported by the curl tool. It forces the proxy
8200 authentication to be made using NTLM. It does not yet work for HTTPS over
8201 proxies (or other proxy-tunneling options). Test case 81 and 82 do some
8202 simple initial ntlm testing.
8204 - Found and fixed a minor memory leak on re-used connections with
8205 proxy-authentication.
8207 - I removed -@ and -Z as valid short options. They were very rarely used (@
8208 wasn't even documented).
8210 - Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to
8211 CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH,
8212 but is for the proxy connection only, and HTTPAUTH is for the remote host.
8214 - Fixed loading of cookies with blank contents from a cookie jar. Also made the
8215 cookie functions inform on added and skipped cookies (for cookie debugging).
8217 Version 7.10.7-pre3 (8 August 2003)
8220 - Applied David Byron's fix for file:// URLs with drive letters included.
8222 - I added the --ftp-create-dirs to the client code, which activates Early's
8223 CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify
8224 it. Added the option to the curl.1 man page too. Added the option to the
8225 curl_easy_setopt.3 man page too.
8228 - Test case 60 failed on ia64 and AMD Opteron. Fixed now.
8230 - Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the
8231 debian bug tracker). Added test case 74 to verify the fix and to discover if
8232 this breaks in the future.
8234 - "make distcheck" works again.
8236 Version 7.10.7-pre2 (6 August 2003)
8239 - Duncan Wilcox helped me verify that the latest incarnation of my ares patch
8240 builds fine on Mac OS X (see the new lib/README.ares) file for all details.
8242 - Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
8243 bug report to the libcurl list, both identifying a problem with FTP
8244 persistent connections and how the dir hierarchy was not properly reset
8247 - David Byron's thoughts on a fixed Makefile in tests/ were applied.
8249 - Jan Sundin reported a case where curl ignored a cookie that browsers don't,
8250 which turned up to be due to the number of dots in the 'domain'. I've now
8251 made curl follow the the original netscape cookie spec less strict on that
8255 - Dirk Manske added cookie support for the experimental, hidden and still
8256 undocumented share feature!
8258 - Mark Fletcher provided an excellent bug report that identified a problem
8259 with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
8260 properly ignore the body contents of 3XX response that included the
8264 - Added option CURLOPT_FTP_CREATE_MISSING_DIRS
8265 This option will force the target file's path to be created if it
8266 does not already exist on the remote system.
8269 - include/curl/curl.h
8270 Added option CURLOPT_FTP_CREATE_MISSING_DIRS
8272 Added function ftp_mkd, which issues a MKD command
8273 Added function ftp_force_cwd, which attempts a CWD,
8274 and does a MKD and retries the CWD if the original CWD
8276 Modified ftp_perform() to call its change directory function
8277 through a pointer. The pointer points to ftp_cwd by default,
8278 and is modified to point to ftp_force_cwd IFF
8279 data->set.ftp_create_missing_dirs is not 0.
8281 Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS
8283 Added ftp_create_missing_dirs to struct UserDefined
8285 - Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not
8286 present to do the time comparison, it would fail.
8289 In ftp_perform(), the call to ftp_getfiletime() used to be followed
8293 And then by the code that actually did the time comparison.
8294 The code that did the comparison handled the case where the filetime
8295 was not available (as indicated by info.filetime < 0 or set.timevalue
8296 < 0), so I replaced the if (result) return result with a switch(result)
8297 that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the
8298 normal time comparison.
8301 - When proxy authentication is used in a CONNECT request (as used for all SSL
8302 connects and otherwise enforced tunnel-thru-proxy requests), the same
8303 authentication header is also wrongly sent to the remote host.
8305 This is a rather significant info leak. I've fixed it now and mailed a patch
8306 and warning to the mailing lists.
8309 - David Byron provided a patch to make 7.10.6 build correctly with the
8310 compressed hugehelp.c source file.
8312 Version 7.10.7-pre1 (31 July 2003)
8315 - Jörg Müller-Tolk updated the VC makefile.
8317 - Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
8318 style like other faked HTTP headers when NOBODY and HEADER are used. I
8319 updated two corresponding test cases too.
8321 - Marty Kuhrt pointed out a compilation problem on VMS due to my having
8322 changed a type from long to time_t, and I'm now changing it back to work
8325 He also indicated that distributing the src/hugehelp.c in a compressed state
8326 like I accidentally did may not be the smartest move... I've now fixed the
8327 distribute procedure to automatically generate an uncompressed version when I
8328 make release archives.
8331 - Gisle Vanem brought changes to the mkhelp script for the generation of the
8332 compressed help text on some platforms.
8334 Version 7.10.6 (28 July 2003)
8337 - François Pons brought a patch that once again made curl deal with ftp and
8338 "double slash" as indicating the root directory. In the RFC1738-fix of April
8339 30, that ability was removed (since it is not the "right" way). So, starting
8340 now we can list the root dir of an ftp server both these ways:
8342 curl ftp://server.com/%2f as well as
8343 curl ftp://server.com//
8346 - Henry Bland pointed out that we included sys/resource.h without good reason
8347 in several source files. Without it included, QNX builds better...
8349 - Andrés GarcÃa updated the mingw makefiles.
8352 - Tracy Boehrer experienced DNS cache problems and did some nice debugging
8353 and tracking which made it easy for me to correct the problem and Tracy
8354 could verify that it did cure the problem! When re-using a connection we
8355 now make sure we don't re-use the 'connect_addr' struct.
8357 - Daniel Kouril corrected the GSS-Negotiate code.
8359 - Juan F. Codagnone provided fixes to allow curl to build fine on Windows
8363 - Edited the curl/curl.h include file to build on Windows properly.
8366 - Moved the proxy credentials from the SessionHandle struct to the connectdata
8367 struct, to make multiple proxy connections with differerent user names work.
8369 - Adjusted the NTLM code to support proxy functionality.
8371 - Made the krb4 stuff compile with the user+password fields moved.
8373 Version 7.10.6-pre4 (21 July 2003)
8376 - David Gardner pointed out in bug report 770755 that using the FTP command
8377 CWD with a blank argument is a bad idea and I made libcurl skip empty path
8378 segments starting now.
8381 - Cris pointed out that my fix on July 16th didn't work fully. His pointing
8382 out this (and his patch) also made me realize that we have a very similar
8383 bug in the FTP connection re-use code. We must store a separate user and
8384 password field for each connection we keep (at least for FTP and HTTP+NTLM
8385 connections, so I made us do this unconditionally).
8387 - Since NTLM authenticates connections instead of single requests, I had to
8388 re-arrange how we store the NTLM data and I had to improve the test suite to
8389 finally work properly with persistency to make the NTLM tests run fine
8390 again. This also forced me to have to update lots of HTTP test cases.
8393 - Cris Bailiff's bug report 768275 pointed out that using Basic auth with
8394 wrong user+password caused an endless loop. Fixed now. He also found out that
8395 we didn't properly authenticate connections with NTLM. Fixed too.
8397 - Dan Winship provided fixes for the NTLM code.
8400 - Doug Kaufman provided additional fixes for the DOS port.
8403 - Rick Richardson pointed out that using setvbuf() to achieve non-buffering
8404 on output is no-good for SCO Xenix and other unixes. We switched over to
8405 using plain fflush() instead.
8407 - Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in
8408 the configure script, and I had to change some build stuff to make the new
8411 - Peter Sylvester's patch was applied that introduces the following:
8413 CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the
8414 OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If
8415 anything but CURLE_OK is returned, that will also be returned by libcurl
8416 all the way back. If this function changes the CURLOPT_URL, libcurl will
8417 detect this and instead go use the new URL.
8419 CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set
8420 with CURLOPT_SSL_CTX_FUNCTION.
8423 - David Byron provided a patch that allows a client to quit the test suite's
8426 - Gisle Vanem found and patched a lib handle leak in the ldap code.
8429 - More NTLM-improvements. Less code. Smaller packets back and forth.
8432 - Eric Glass provided us with a better doc on NTLM details, and I added more
8433 comments and clarified the current code more. Using the new knowledge, we
8434 should be able to make the NTLM stuff work even better.
8435 Eric's original URL: http://davenport.sourceforge.net/ntlm.html
8436 Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
8438 - Fixed the minor compile problems pre3 had if built without GSSAPI and/or
8441 Version 7.10.6-pre3 (19 June 2003)
8444 - Made curl use curl_free() on memory returned by curl_getenv(), as this
8445 should theoreticly make it possibly to build and run curl and libcurl with
8446 different memory allocation schemes with no problems.
8449 - Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to
8450 include a better comment in the top for the gzip compressed version.
8453 - CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication
8454 type(s) you want to use. If more than one is set, libcurl will use one of
8455 the selected one and the one it considers is more secure. Test case 67 and
8456 68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
8457 fetches, and test case 69 and 70 were added for testing authentication
8458 "picking". --anyauth is the new command line tool option, and I also added
8459 --basic for completeness (that's the default type).
8461 - Fixed the runtests.pl script to use the info provided by the new curl -V
8464 - --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it
8465 is meant to be a generic debug conditional.
8467 - curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to
8468 indicate that the library was built with CURLDEBUG set.
8470 - Ralph Mitchell found out that some web applications very badly uses white
8471 spaces in Location: redirects, and apparently IE is a browser (the only
8472 one?) that supports this abomination. Based on Ralph's patch, I added code
8473 that now attempts to replace white spaces with the proper "%20" or "+".
8474 Test case 40 and 42 were added to verify my changes.
8476 - curl -V now also outputs a list of features the available library offers (if
8479 - The curl_version() string now includes "GSS" if libcurl is built with GSSAPI
8482 - David Orrell reported that libcurl still crashed when sending HUGE requests
8483 over HTTPS... I fixed.
8485 Version 7.10.6-pre2 (16 June 2003)
8488 - curl_version_info() now returns bitmasked information weather NTLM and
8489 GSSNEGOTIATE are supported, since it is doomed to vary on different
8492 - I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
8493 that is present, and only use our own MD5-code if it isn't.
8496 - More NTLM help, fixes and patches from Cris Bailiff.
8498 - Marty Kuhrt brought include fixes for making VMS builds warning-free.
8501 - NTLM authentication works somewhat against the test servers provided by
8502 Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to
8503 CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68
8504 were added for this. NTLM-support requires OpenSSL.
8506 - Dan Fandrich provided a patch, that granted that gzip and libz are available
8507 at build-time, compresses the hugehelp text in the curl command line and
8508 uncompresses it at request. Saves some ~60K in the final output executable.
8511 - Long day of fighting the NTLM demons.
8514 - Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead,
8515 and pick method. Supported ones currently are:
8516 CURLAUTH_BASIC - default selection
8517 CURLAUTH_DIGEST - formerly CURLOPT_HTTPDIGEST
8518 CURLAUTH_GSSNEGOTIATE
8520 - Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in
8521 the IETF draft draft-brezak-spnego-http-04.txt. In use already by various
8522 Microsoft web applications. --negotiate is the new family member. To take
8523 advantage of this, you need one of these packages:
8525 o Heimdal Kerberos5 http://www.pdc.kth.se/heimdal/heimdal.html
8526 o GSSAPI from Globus http://www.globus.org/
8527 o GSSAPI libraries from MIT Kerberos5 http://web.mit.edu/kerberos/www/
8529 - A missing ending bracket (']') while doing URL globbing could lead to a
8530 segfault. While fixing this, I also introduced better error reporting in the
8531 globbing code. (All this is application code outside libcurl.)
8534 - David Orrell found out that sending a huge GET request over HTTPS could
8535 make libcurl fail and return an error code.
8538 - Richard Bramante found out that "Content-Length: 0" was not properly used by
8539 libcurl if the response-headers indicated that the connection would be
8542 - David Byron's patch was applied, that makes the --progress-bar take the
8543 local size into account when doing resumed downloads.
8545 - Feedback from Serge Semashko made me change the error message returned when
8546 CURLE_HTTP_RETURNED_ERROR is returned.
8548 - Anonymous in bug report #745122 pointed out that we should really be using
8549 SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL
8553 - Andreas Ley and Rich Gray helped me point out that no version of HP-UX has
8554 the sys/select.h header file so including it unconditionally in curl/multi.h
8555 is not a good thing. Now we check for HPUX and avoid using that header on
8558 - Rudy Koento experienced problems with curl's recent habit of POSTing data in
8559 two separate send() calls, first the headers and then the data. I've now
8560 made a fix that for static and known content that is less than 100K in size,
8561 everything is now sent in one single system call again. This is also better
8562 for network performance reasons.
8564 - I modified the main makefile to not build the test suite and a few other
8565 unnecessary things by default. Now, the test suite is built when 'make test'
8566 is run. This reduces build time for those who don't care for the test
8567 suite, and it also reduces confusion for people using platforms where the
8568 test suite build fails!
8571 - Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows,
8572 which is now corrected.
8574 - Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5
8575 proxy a little too much like as if it was a http proxy.
8578 - Ricardo Cadime found a socket leak when listing directories without
8579 contents. Test cases 144 and 145 were added to verify the fix.
8581 - Rudy Koento found yet another problem when a HTTP server returns only a
8582 single-line of contents without any headers at all. libcurl then failed to
8583 count the data, thus returning error 52 "no contents". Test case 66 was
8584 added to verify that we now do right.
8586 Version 7.10.6-pre1 (23 May 2003)
8589 - Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
8592 - David Remahl set up a test-server for me providing Digest authentication,
8593 and I wrote the first working code that support it. The test suite was
8594 modified slightly as well to work better for it and --digest was added to
8595 the command line options (and CURLOPT_HTTPDIGEST to the library)... RFC2617
8596 has all the gory details.
8599 - David Balazic pointed out that curl_unescape() didn't check that %-codes
8600 were correctly followed by two hexadecimal digits when it unescape strings.
8601 Now, we do the check and only %XX codes are unescaped if the X letters are
8604 - Gisle Vanem made curl build with djgpp on DOS.
8606 - Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is
8610 - Gisle Vanem provided a fix that makes libcurl more conservative, not
8611 expecting h_aliases of the hostent struct to always be non-NULL.
8614 - As requested by Martin Michlmayr in Debian bug report #193630, libcurl now
8615 supports user name and password in the proxy environment variables. Added
8616 test case 63 to verify this.
8618 Version 7.10.5 (19 May 2003)
8621 - Changed the order for the in_addr_t testing, as 'unsigned long' seems to be
8622 a very common type inet_addr() returns.
8625 - George Comninos provided a fix that calls the progress meter when waiting
8626 for FTP command responses take >1 second. It'll make applications more
8627 "responsive" even when dealing with very slow ftp servers.
8630 - George Comninos pointed out that libcurl uploads had two quirks:
8631 o when using FTP PORT command, it used blocking sockets!
8632 o it could loop a long time without doing progress meter updates
8633 Both items are fixed now.
8636 - Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
8637 set to "". This frees the application from having to know which encodings
8638 the library supports.
8640 - Dan Fandrich pointed out we had three unnecessary files in CVS that is
8641 generated with libtoolize, so they're now removed and libtoolize is invoked
8642 accordingly in the buildconf script.
8644 - Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the
8645 given name is a network interface gave a real performance penalty on Linux,
8646 so now we more appropriately first check if it is an IP number and if so
8647 we don't check for a network interface with that name.
8649 - CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts
8650 to use EPRT and LPRT before the traditional PORT command. The command line
8651 tool sets this option with '--disable-eprt'.
8653 Version 7.10.5-pre2 (6 May 2003)
8656 - Kevin Delafield reported another case where we didn't correctly check for
8657 EAGAIN but only EWOULDBLOCK, which caused badness on HPUX.
8660 - Ben Greear noticed that the check for 'writable argv' exited the configure
8661 script when run for cross-compiling, which wasn't nice. Now it'll default to
8662 no and output a warning about the fact that it was not checked for.
8665 - Added test case 62 and fixed some more on the cookie sending with a custom
8669 - Andy Cedilnik fixed a few compiler warnings.
8671 - Made the "SSL read error: 5" error message more verbose, by adding code that
8672 queries the OpenSSL library to fill in the error buffer.
8675 - Added sys/select.h include in the curl/multi.h file, after having been
8676 reminded about this by Rich Gray.
8678 - I made each test set its own server requirements, thus abandoning the
8679 previous system where the test number implied what server(s) to use for a
8682 - David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so
8683 that libcurl now uses one CWD command for each path part. A bunch of test
8684 cases were fixed to work accordingly.
8688 A. Save domains in jars like Mozilla does. It means all domains set in
8689 Set-Cookie: headers are dot-prefixed.
8690 B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars
8691 (the second column).
8692 C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns
8693 both domains with too few dots or domains that are outside the currently
8694 operating server host's domain.
8695 D. Set the path part by default to the one used in the request, if none was
8696 set in the Set-Cookie line.
8698 To make item C really good, I also made libcurl notice custom Host: headers
8699 and extract the host name set in there and use that as the host name for the
8700 site we're getting the cookies from. This allows user to specify a site's
8701 IP-address, but still be able to receive and send its cookies properly if
8702 you provide a valid Host: name for the site.
8705 - Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
8706 when using the multi interface (too).
8708 Version 7.10.5-pre1 (23 Apr 2003)
8711 - Upgraded to libtool 1.5.
8714 - Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
8715 return CURLE_OK no matter what happens.
8717 - Dan Fandrich fixed some gzip decompression bugs and flaws.
8720 - Fixed minor typo in man page, reported in the Debian bug tracker.
8723 - Fixed some FTP tests in the test suite that failed on my Solaris host, due
8724 to the config.h not being included before the system headers. When done that
8725 way, it did get a mixed sense of if big files are supported or not and then
8726 stat() and fstat() (as used in test case 505) got confused and failed to
8727 return a proper file size.
8729 - Formposting a file using a .html suffix is now properly set to Content-Type: text/html.
8732 - Fixed the SSL error handling to return proper SSL error messages again, they
8733 broke in 7.10.4. I also attempt to track down CA cert problems and then
8734 return the CURLE_SSL_CACERT error code.
8736 - The curl tool now intercepts the CURLE_SSL_CACERT error code and displays
8737 a fairly big and explanatory error message. Kevin Roth helped me out with
8741 - Nic Hines provided a second patch for gzip decompression, and fixed a bug
8742 when deflate or gzip contents were downloaded using chunked encoding.
8744 - Dan Fandrich made libcurl support automatic decompression of gzip contents
8745 (as an addition to the previous deflate support).
8747 - I made the CWD command during FTP session consider all 2xy codes to be OK
8751 - Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash
8752 after the host name, but still had "?" and parameters appended, as in
8753 "http://hostname.com?foobar=moo", were not properly parsed by libcurl.
8756 - Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as
8757 for HTTP. This then made -z work for ftp transfers too. Added test case 139
8758 and 140 for verifying this.
8760 - Getting the file date of an ftp file used the wrong time zone when
8761 displayed. It is supposedly always GMT. Added test case 141 for this.
8763 - Made the test suite's FTP server support MDTM.
8765 - The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs
8766 CURLINFO_HEADER_IN data as well. The most notable effect from this is that
8767 using curl -v, you get to see the incoming "headers" as well. This is
8768 perhaps most useful when doing ftp.
8771 - James Bursa fixed a flaw in the Content-Type extraction code, which missed
8772 the first letter if no space followed the colon.
8774 - Magnus Nilsson pointed out that share.c was missing in the MSVC project
8778 - Ryan Weaver provided a patch that makes the CA cert bundle not get installed
8779 anymore when 'configure --without-ssl' has been used.
8782 - Martijn Broenland found another cases where a server application didn't
8783 like the boundary string used by curl when doing a multi-part/formpost. We
8784 modified the boundary string to look like the one IE uses, as this is
8785 probably gonna make curl work with more applications.
8788 - Kevin Roth reported that a bunch of tests fails on cygwin. One set fails
8789 when using perl 5.8 (and they run fine with perl 5.6), and another set
8790 failed because of an artifact in the test suite's FTP server that I
8791 corrected. It turned out the FTP server code was still having a file opened
8792 while the main test script removed it and invoked the HTTP server that
8793 attempted to create the same file name of the file the FTP server kept open.
8794 This operation works fine on unix, but not on cygwin.
8796 Version 7.10.4 (2 Apr 2003)
8799 - Added test case 505 to exercise FTP upload with rename done with libcurl,
8800 and for that I had to extend the test suite's FTP server to deal with the
8801 RNFR and RNTO commands.
8804 - Even more SSL config check modifications after Richard's testing.
8806 Version 7.10.4-pre6 (31 Mar 2003)
8809 - More fixes for the SSL session ID cache checks when SSL configs are changed
8810 between connections. Based on tests and talks with Richard Bramante.
8812 - Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH.
8813 When enabled, it will prevent libcurl from limiting to which host it sends
8814 user+password to when following locations. By default, libcurl only sends
8815 name and password to the original host used in the first URL, but with this
8816 option set it will send the auth info to all hosts it follows location
8817 headers to. The new tool command line option for this is named
8818 "--location-trusted".
8820 - Frankie Fong reported a problem with libcurl if you re-used an easy handle
8821 with a proxy, and you first made a https:// connection to a host and then
8822 switched to a http:// one to the same host. libcurl would then wrongly re-use
8823 the same connection for it and fail to get the second URL properly
8826 - Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
8830 - Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and
8831 I could fix the configure problems on redhat 8.1 and 9 in no time thanks to
8832 this. Thanks a bunch Bryan!
8835 - Renamed configure.in to configure.ac
8837 Version 7.10.4-pre5 (25 Mar 2003)
8840 - Richard Bramante provided a fix for a handle re-use problem seen when you
8841 change options on an SSL-enabled connection between requests. Previously,
8842 changing peer verification or host verification and similar things was not
8843 taken into account when a connection were checked for re-use and thus
8844 enabling stricter check between requests on a re-used connection made no
8845 difference and the connection would thus be used erroneously.
8848 - Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a
8849 certificate from Trustcenter that was a demo certificate only that was never
8850 intended to be part of a CA bundle.
8853 - Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
8854 Churchill filed one bug report each, both identifying problems with a second
8855 transfer when doing persistent transfers re-using a connection. Tim's one is
8856 #706624, labeled "Multiple uploads per handle fail" and Michael's #707003
8857 "Does not send Authorization: header when reusing connection". I could track
8858 both down to the same piece of logic and it turned out libcurl was not using
8859 new settings properly when re-using an existing connection. This concerned
8860 both uploading and downloading and involved exactly those pieces these two
8861 reports identified. This code has been this faulty since the day I
8862 introduced persistent connection support in libcurl, more than 2 years ago.
8864 Daniel (20 Mar 2003)
8865 - Five year anniversary. Today five years ago, the first ever curl release saw
8869 - Andy Cedilnik corrected flaws in some libcurl example-usage sources.
8872 - Juan F. Codagnone reported that the fix from March 2nd was incomplete.
8874 - Added code to the configure.in to check for select() argument types. I've
8875 not made any code use the results just yet though.
8878 - Gisle Vanem provided two patches to build better on Windows.
8880 - Adjusted the test suite code to better make sure that the server(s) required
8881 for a specific test is properly started before the test case is attempted.
8882 Many tests now run a lot faster than before.
8885 - Another configure.in adjustment made the configure detect functions properly
8889 - Philippe Raoult fixed pre4-compile quirks for FreeBSD.
8891 Version 7.10.4-pre4 (13 Mar 2003)
8894 - Added a backup-check for functions that aren't found by AC_CHECK_FUNCS()
8895 as I believe some checks on HPUX need this. At least some of the info given
8896 to us by Rick Jones seemed to indicate this.
8899 - Thomas Tonino found out that if you used the curl tool to do PUT operations
8900 as in 'curl www.foo.com/dir/ -T file' and the file name included for example
8901 space or other characters that don't belong in URLs, curl did not properly
8902 URL encode them before using them in the URL.
8904 - Added an option to configure called --enable-libgcc that simply adds -lgcc
8905 to the LIBS variable, as this seems to be a common problem.
8907 - I modified the configure.in file, so that the headers are now checked in an
8908 order of "viality". We must also make sure to use the "default headers"
8909 parameter to AC_CHECK_HEADERS() so that headers are checked with the proper
8910 prerequisites included (i.e all the major and generally important header
8911 files are included there by default). This might be what we need for various
8912 Sun, HP, AIX and Tru64 systems to behave good again on the header check
8915 - Rick Jones pointed out a few compiler warnings on HP-UX that I addressed.
8917 - I made the configure --help output nicer by using AC_HELP_STRING() a lot
8921 - Christophe Demory fixed the socket sending code to work better on HP-UX
8922 when sending data to a socket that would block. It then returns EAGAIN, not
8925 - Richard Gorton improved the seeding function for systems without a good
8926 and reliable random source.
8928 - Richard Gorton fixed a few warnings that popped up when you built curl
8929 using the Sun compiler on a 64bit SPARC platform.
8931 - Martin C. Martin fixed a case where a connect failure using the multi
8932 interface didn't produce a human readable error string.
8935 - Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version
8936 broke the build on numerous platforms. It seems that libtool 1.4.3 puts some
8937 requirements on what versions of the other tools (autoconf + automake) that
8938 I am not familiar with and thus I couldn't fulfill at this point.
8940 Yes, this is more than mildly frustrating.
8943 - Run libtoolize version 1.4.3.
8945 Version 7.10.4-pre3 (4 Mar 2003)
8948 - Added share.obj to the VC6 and Borland libcurl makefiles.
8950 - Troels Walsted Hansen found and investigated a problem with libcurl on AIX,
8951 presumably only on 4.3 or later. gethostbyname_r() is not returning data
8952 that is possible to "keep" and cache the way libcurl does. But instead these
8953 versions of AIX uses a gethostbyname() that works thread-safely we can
8954 instead use the ordinary gethostbyname() and our pack_hostent() approach to
8955 achieve what we want. The configure script now attempts to detect AIX 4.3 or
8956 later to adjust for this.
8959 - Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a
8960 POST and then back to a GET using the same easy handle.
8963 - Removed the strequal and strnequal defines from curl/curl.h header. They
8964 were never meant for the public header anyway. Philippe Raoult brought it
8967 - James Bursa fixed the RISC OS build.
8970 - Avery Fay pointed out the very misleading curl_multi_info_read man page, and
8971 I updated it to become more accurate.
8973 - Salvatore Sorrentino found a problem with FTP downloading that turned out to
8974 be his FTP server returning size zero (0 bytes) when SIZE was used on a file
8975 while being in BINARY mode. We now make a second check for the actual size
8976 by scanning the RETR reply anyway, even if the SIZE command returned 0.
8979 - Kyle Sallee reported a case where he would do a transfer that didn't update
8980 the progress meter properly. It turned out to be a case where libcurl would
8981 loop a little too eagerly in the transfer loop, which isn't really good for
8982 the APIs, especially not the multi API.
8984 Version 7.10.4-pre2 (24 Feb 2003)
8987 - Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
8988 than 5 could cause a segfault.
8990 - I believe I fixed the 'Expect: 100-continue' behavior that has been broken
8991 for a while (I think since my change dated Dec 10 2002). When this header is
8992 used, libcurl should wait for a HTTP 100 (or timeout) before sending the
8996 - Matthew Clarke provided some info what to modify to make curl build
8997 flawlessly on AIX 3.2.5.
8999 - Martin C. Martin found and fixed a problem in the multi interface when
9000 running on Windows and trying to connect to a port without a listener.
9003 - Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
9007 - Jean-Philippe added the first code that enables the 'share' system. This
9008 should now enable sharing of DNS data between two curl easy handles.
9010 - Incorporated Nico Baggus' fixes to again compile flawlessly on VMS.
9012 - James Bursa corrected a bad comment in the public include file curl/multi.h
9014 - Peter Forret reported one of those error:00000000 cases in libcurl again
9015 when connecting to a HTTPS site, and this time I did discover some oddities
9016 in how curl reports SSL errors back. It could miss showing the actual error.
9018 Version 7.10.4-pre1 (3 Feb 2003)
9021 - Removed things in the docs saying capath doesn't work on Windows, as Julian
9022 Noble told us it works fine.
9025 - Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
9028 - Kevin Roth found out that curl on Windows always checked for the CA cert
9029 bundle using the environment variable and the path scan, even though
9030 -k/--insecure was used.
9032 - Hamish Mackenzie pointed out that curl only did strict host name verifying
9033 if capath or cainfo was used. Now it'll always do it unless -k / --insecure
9036 - Pavel Cenek pointed out that the Content-Type extraction was done wrongly
9037 as the full string was not fetched. Added test case 57 to verify that curl
9041 - Jamie Wilkinson provided a patch that now makes curl attempt to clear out
9042 "sensitive" command line arguments so that they don't appear in ps outputs
9043 (only on platforms that allow writing to argv[]).
9045 - John McGowan found out that the DEBUGFUNCTION could be called with bad
9046 arguments and thus cause the --trace outputs to go wrong.
9048 - Removed all the emacs local variables from all files. Mats Lidell provided
9049 the new sample.emacs file (for a sample of what to include in your .emacs)
9050 and the curl-style.el that sets a better c-style for editing curl sources.
9052 - Dave Halbakken found a problem with FTP downloads that could accidently
9053 return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY
9057 - The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
9061 - Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
9062 when following locations.
9064 Daniel (22 Jan 2003)
9065 - Ian Wilkes and Legoff Vincent both independently provided fixes for making
9066 curl/multi.h work properly when compiled with a C++ compiler.
9068 Daniel (20 Jan 2003)
9069 - Fixed 'buildconf' to check version number of the required tools before
9070 they're actually used.
9072 - Wrote 'testcurl.sh', a script targeted for automatic and distributed curl
9073 tests on various platforms.
9075 - David Thiel pointed out that the .netrc file was not being dealt with
9076 properly anymore. I broke this in the password prompting "fix".
9078 - Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only
9079 on demand and thus we save 32KB in each curl handle that don't use that
9080 buffer. This need appeared when some people started using thousands of
9081 simultaneous curl handles... :-)
9083 Daniel (16 Jan 2003)
9084 - Markus Oberhumer fixed curl-config --cflags when the includedir was not
9087 - Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was
9090 Version 7.10.3 (14 Jan 2003)
9092 Daniel (10 Jan 2003)
9093 - Steve Oliphant pointed out that test case 105 did not work anymore and this
9094 was due to a missing fix for the password prompting.
9096 Version 7.10.3-pre6 (10 Jan 2003)
9099 - Bryan Kemp pointed out that curl -u could not provide a blank password
9100 without prompting the user. It can now. -u username: makes the password
9101 empty, while -u username makes curl prompt the user for a password.
9103 - Kjetil Jacobsen found a remaining connect problem in the multi interface on
9104 ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed
9107 - memanalyze.pl now reads a file name from the command line, and no longer
9108 takes the data on stdin as before.
9110 Version 7.10.3-pre5 (9 Jan 2003)
9113 - Fixed tests/memanalyze.pl to work with file names that contain colons (as on
9116 - Kjetil Jacobsen quickly pointed out that lib/share.h was missing...
9118 Version 7.10.3-pre4 (9 Jan 2003)
9121 - Updated lib/share.c quite a bit to match the design document at
9122 http://curl.haxx.se/dev/sharing.txt a lot more.
9124 I'll try to update the document soonish. share.c is still not actually used
9125 by libcurl, but the API is slowly getting there and we can start
9126 implementing code that takes advantage of this system.
9129 - Updated share stuff in curl/curl.h, including data types, structs and
9130 function prototypes. The corresponding files in lib/ were also modified
9131 of course to remain compilable. Based on input from Jean-Philippe and also
9132 to make it more in line with the design document.
9134 - Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in
9135 curl_escape() that would happen when realloc() returns NULL...
9137 - Matthew Blain provided feedback to make the --create-dirs stuff build
9138 properly on Windows.
9140 - Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out.
9143 - Philippe Raoult provided a patch that now makes libcurl properly support
9144 wildcard checks for certificate names.
9146 - Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other
9147 strings recognized as "HTTP 200" to allow http-like protocols to get
9148 downloaded fine by curl.
9150 - Now using autoconf 2.57 and automake 1.7.2
9152 - Doing "curl -I ftp://domain/non-existing-file" still outputed a date!
9153 Wayne Haigh reported.
9155 - The error message is now written properly with a newline in the --trace
9159 - Sterling Hughes fixed a possible bug: previously, if you called
9160 curl_easy_perform and then set the global dns cache, the global cache
9161 wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre.
9163 - Matthew Blain's fixed the VC6 libcurl makefile to include better debug data
9165 Daniel (27 Dec 2002)
9166 - Philippe Raoult reported a bug with HTTPS connections which I evidently
9167 added in my 19 dec fix. I corrected it.
9170 - Idea from the Debian latest patch: use AM_MAINTAINER_MODE in the configure
9171 script to make the default makefile less confusing "to the casual
9174 Version 7.10.3-pre3 (20 Dec)
9177 - Matthew Blain patched the Curl_base64_decode() function.
9179 - Evan Jordan reported in bug report #653022 that the SSL_read() usage was
9180 wrong, and it certainly was. It could lead to curl using too much CPU due to
9184 - As suggested by Margus Freudenthal, CURLE_HTTP_NOT_FOUND was renamed to
9185 CURLE_HTTP_RETURNED_ERROR since it is returned on any >= 400 code when
9186 CURLOPT_FAILONERROR is set.
9189 - Bug reported #651464, reported by Christopher Palmer, provided an example
9190 source code using the multi interface that hang when trying to connect to a
9191 proxy on a localhost port where no proxy was listening. This bug was not
9192 repeatable on libcurls that were IPv6-enabled.
9195 - Christopher Palmer also noticed what Vojtech Janota already was
9196 experiencing: The attempted name resolve fix for glibc 2.2.93 caused libcurl
9197 to crash when used on some older glibc versions. The problem is of course
9198 the silliness of the 2.2.93. I committed a fix that hopefully should make
9199 the binary run fine on either one of the versions, even though the solution
9200 is not as nice as I'd like it to be.
9203 - Bug report #651460 by Christopher R. Palmer showed that when using libcurl
9204 to for example go over a proxy on localhost, it would attempt to connect
9205 through the proxy TWICE.
9207 I added test case 503 with which I managed to repeat this problem and I
9208 fixed the code to not re-attempt any connects (which also made it a nicer
9209 fix for the #650941 bug mentioned below).
9211 The sws server was extended to deal with CONNECT in order to make test
9214 - Evan Jordan posted bug report #650989 about a memory leak in the public key
9215 retrieving code. He provided a suggested fix and I merely applied it!
9217 - Bug report #650941, posted by Christopher R. Palmer identified a problem
9218 with the multi interface and getting file:// URLs. This was now fixed and
9219 test case 502 was added to verify this.
9222 - Test case 500 and 501 are the first ever libcurl test cases that run.
9224 - Made "configure --enable-debug" cut off all -O* options to the compiler
9226 - Finally fixed the test suite's ftp server so that test case 402 doesn't
9227 cause the following test case to fail anymore!
9230 - CURL_MAX_WRITE_SIZE is now decreased to 16KB since it makes the Windows
9231 version perform uploads much faster!!! RBramante did lots of research on
9234 - Fixed the #include in curl/curl.h to include the other files outside the
9238 - Moved around and added more logic:
9240 First, POST data is never sent as part of the request headers in the http.c
9241 code. It is always sent the "normal" read callback then send() way. This now
9242 enables a plain HTTP POST to be sent chunked if we want to. This also
9243 reduces the risk of having very big POSTs causing problems.
9245 Further, sending off the initial HTTP request is not done using a loop
9246 anymore. If it wasn't all sent off in the first send(), the rest of the
9247 request is sent off in the normal transfer select() loop. This makes several
9248 things possible, but mainly it makes libcurl block less when used from the
9249 multi interface and it also reduces the risk of problems with issuing very
9253 - Moved the read callback pointer and data within the structs to a more
9254 suitable place. This in preparation for a better HTTP-request sending code
9255 without (a silly) loop.
9257 - The Dodds fix seems not to work.
9259 - Vojtech Janota tests proved that the resolve fix from oct 21st is not good
9260 enough since obviously older glibcs might return EAGAIN without this meaning
9261 that the buffer was too small.
9263 - [the other day] Made libcurl loop on recv() and send() now until done, and
9264 then get back to select(). Previously it went back to select() more often
9265 which really was a slight overhead. This was due to the reported performance
9266 problems on HTTP PUT on Windows. I couldn't see any notable difference on
9269 Version 7.10.3-pre2 (4 Dec 2002)
9272 - Lots of work with Malcolm Dodds made me add a temporary code fix that now
9273 shortens the timeout waiting for the 226 or 250 line after a completed
9276 If no data is received within 60 seconds, this is taken as a sign of a dead
9277 control connection and we bail out.
9280 - Ralph's bug report #644841 identified a problem in which curl returned a
9281 timeout error code when in fact the problem was not a timeout. The proper
9282 error should now be propagated better when they're detected in the FTP
9283 response reading function.
9285 - Updated the Borland Makefiles.
9288 - Nicolas Berloquin provided a patch that introduced --create-dirs to the
9289 command line tool. When used in combination with -o, it lets curl create
9290 [non-existing] directories used in -o, suitably used with #-combinations
9293 curl "www.images.com/{flowers,cities,parks,mountains}/pic_[1-100].jpg \
9294 -o "dir_#1/pic#2.jpg" --create-dirs
9298 Daniel (28 Nov 2002)
9299 - I visited Lars Nordgren and had a go with his problem, which lead me to
9300 implement this fix. If libcurl detects the added custom header
9301 "Transfer-Encoding: chunked", it will now enable a chunked transfer.
9303 Also, chunked transfer didn't quite work before but seems to do so now.
9305 - Kjetil Jacobsen pointed out that ./configure --disable-ipv6 --without-zlib
9306 didn't work on any platform...
9308 Daniel (26 Nov 2002)
9309 - Fixed a bad addrinfo free in the hostip.c code, hardly exposed anywhere
9311 - Dan Becker found and fixed a minor memory leak on persistent connnections
9312 using CURLOPT_USERPWD.
9314 Daniel (22 Nov 2002)
9315 - Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
9316 web server (sws) which now lets test case 306 run fine even in combination
9317 with the other test cases.
9319 - Juan Ignacio Hervás found a crash in the verbose connect message that is
9320 used on persistent connections. This bug was added in 7.10.2 due to the
9321 rearranged name resolve code.
9323 Daniel (20 Nov 2002)
9324 - Kjetil Jacobsen provided a patch that introduces:
9326 CURLOPT_PRIVATE stores a private pointer in the curl handle.
9328 CURLINFO_PRIVATE retrieves the private pointer from the curl handle.
9330 - Karol Pietrzak pointed out how curl-config --cflags didn't output a good
9331 include dir so I've removed that for now.
9333 Version 7.10.2 (18 Nov 2002)
9335 Daniel (11 Nov 2002)
9336 - Dave Halbakken added curl_version_info to lib/libcurl.def to make libcurl
9337 properly build with MSVC on Windows.
9340 - Doing HTTP PUT without a specified file size now makes libcurl use
9341 Transfer-Encoding: chunked.
9344 - Bug report #634625 identified how curl returned timeout immediately when
9345 CURLOPT_CONNECTTIMEOUT was used and provided a fix.
9347 Version 7.10.2-pre4 (6 Nov 2002)
9350 - Lehel Bernadt found out and fixed. libcurl sent error message to the debug
9351 output when it stored the error message.
9353 - Avery Fay found some problems with the DNS cache (when the cache time was
9354 set to 0 we got a memory leak, but when the leak was fixed he got a crash
9355 when he used the CURLOPT_INTERFACE with that) that had me do some real
9356 restructuring so that we now have a reference counter in the dns cache
9357 entries to prevent an entry to get flushed while still actually in use.
9359 I also detected that we previously didn't update the time stamp when we
9360 extracted an entry from the cache so that must've been a reason for some
9361 very weird dns cache bugs.
9365 Daniel (31 Oct 2002)
9366 - Downgraded automake to 1.6.3 in an attempt to fix cygwin problems. (It
9367 turned out this didn't help though.)
9369 - Disable the DNS cache (by setting the timeout to 0) made libcurl leak
9370 memory. Avery Fay brought the example code that proved this.
9374 Daniel (28 Oct 2002)
9375 - Upgraded to autoconf 2.54 and automake 1.7 on the release-build host.
9377 - Kevin Roth made the command line tool check for a CURL_CA_BUNDLE environment
9378 variable (if --cacert isn't used) and if not set, the Windows version will
9379 check for a file named "curl-ca-bundle.crt" in the current directory or the
9380 directory where curl is located. That file is then used as CA root cert
9383 - Avery Fay pointed out that curl's configure scrip didn't get right if you
9384 used autoconf newer than 2.52. This was due to some badly quoted code.
9388 Daniel (23 Oct 2002)
9389 - Emiliano Ida confirmed that we now build properly with the Borland C++
9390 compiler too. We needed yet another fix for the ISO cpp check in the curl.h
9393 - Yet another fix was needed to get the HTTP download without headers to work.
9394 This time it was needed if the first "believed header" was read all in the
9395 first read. Test 306 has not run properly since the 11th october fix.
9397 Daniel (21 Oct 2002)
9398 - Zvi Har'El pointed out a problem with curl's name resolving on Redhat 8
9399 machines (running IPv6 disabled). Mats Lidell let me use an account on his
9400 machine and I could verify that gethostbyname_r() has been changed to return
9401 EAGAIN instead of ERANGE when the given buffer size is too small. This is
9404 - Albert Chin helped me get the -no-undefined option corrected in
9405 lib/Makefile.am since Cygwin builds want it there while Solaris builds don't
9406 want it present. Kevin Roth helped me try it out on cygwin.
9408 - Nikita Schmidt provided a bug fix for a FOLLOWLOCATION bug introduced when
9409 the ../ support got in (7.10.1).
9411 Daniel (18 Oct 2002)
9412 - Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
9413 the multi interface.
9415 Daniel (17 Oct 2002)
9416 - Richard Cooper's experimenting proved that -j (CURLOPT_COOKIESESSION) didn't
9417 work quite as supposed. You needed to set it *before* you use
9418 CURLOPT_COOKIEFILE, and we dont' want that kind of dependencies.
9420 Daniel (15 Oct 2002)
9421 - Andrés GarcÃa provided corrections for erratas in four libcurl man pages.
9423 Daniel (13 Oct 2002)
9424 - Starting now, we generate and include PDF versions of all the docs in the
9427 Daniel (12 Oct 2002)
9428 - Trying to connect to a host on a bad port number caused the multi interface
9429 to never return failure and it appeared to keep on trying forever (it just
9430 didn't do anything).
9432 Daniel (11 Oct 2002)
9433 - Downloading HTTP without headers didn't work 100%, some of the initial data
9434 got written twice. Kevin Roth reported.
9436 - Kevin Roth found out the "config file" parser in the client code could
9437 segfault, like if DOS newlines were used.
9439 Version 7.10.1 (11 Oct 2002)
9441 Daniel (10 Oct 2002)
9442 - Jeff Lawson fixed a few problems with connection re-use that remained when
9443 you set CURLOPT_PROXY to "".
9446 - Craig Davison found a terrible flaw and Cris Bailiff helped out in the
9447 search. Getting HTTP data from servers when the headers are split up in
9448 multiple reads, could cause junk data to get inserted among the saved
9449 headers. This only concerns HTTP(S) headers.
9452 - Vincent Penquerc'h gave us the good suggestion that when the ERRRORBUFFER
9453 is set internally, the error text is sent to the debug function as well.
9455 - I fixed the telnet code to timeout properly as the option tells it to. On
9456 non-windows platforms.
9459 - John Crow pointed out that libcurl-the-guide wasn't included in the release
9462 - Kevin Roth pointed out that make install didn't do right if build outside
9463 the source tree (ca-bundle wise).
9465 - FOLLOWLOCATION bugfix for the multi interface
9468 - Kevin Roth got problems with his cygwin build with -no-undefined was not
9469 present in lib/Makefile.am so I put it back in there again. The poor one who
9470 needs to remove it again must write a configure script to detect that need.
9472 - Ralph Mitchell pointed out that curl was a bit naive and didn't deal with ./
9473 or ../ stuff in the string passed back in a Location: header when following
9476 - Albert Chin helped me to work out a better configure.in check for zlib, and
9477 both --without-zlib and -with-zlib seem to work rather well right now.
9479 - Zvi Har'El improvied the OpenSSL ENGINE check in the configure script to
9480 become more accurate.
9483 - Detlef Schmier pointed out the lack of a --without-libz option to configure,
9486 Version 7.10 (1 Oct 2002)
9488 Daniel (30 Sep 2002)
9489 - Modified the curl_version_info() proto and returned struct once again, and
9490 updated the man page accordingly.
9492 - Cris Bailiff found out that the pre-releases crashed on name lookups on
9493 names such as "a:" or "baz:" (on Linux versions not being ipv6-enabled) due
9494 to some weird return codes from gethostbyname_r(). I'll blame the complete
9495 lack of docs in that department. Cris provided a fix, which I modified only
9498 Daniel (27 Sep 2002)
9499 - After a suggestion from Christian Kurz to Debian curl package maintainer
9500 Domenico Andreoli, I made it possible to override the proxy environment
9501 variables better. Now, by setting -x "" you can explicitly tell libcurl to
9502 not use a proxy, no matter whan the environment variables say.
9506 Daniel (26 Sep 2002)
9507 - Extended curl_version_info() more and wrote a man page for it.
9509 Daniel (25 Sep 2002)
9510 - libcurl could leak memory when downloading multiple files using http ranges,
9511 reported and fixed by Jean-Luc Guevel.
9513 - Walter J. Mack provided code and docs for the new curl_free() function that
9514 shall be used to free memory that is allocated by libcurl and returned back
9515 to the application, as curl_escape() and curl_unescape() do.
9517 - Yarram Sunil pointed out a flaw in the multi interface where a failed
9518 connection didn't close down properly and thus a second transfer using the
9521 - Andrés GarcÃa fixed a flaw that made (among other things) dict-fetches
9522 return a random value.
9524 Daniel (24 Sep 2002)
9525 - Wez Furlong brought his initial patch that introduced curl_version_info().
9526 We might need to tweak it somewhat before release.
9528 Daniel (20 Sep 2002)
9529 - Craig Markwardt fixed another Tru64 IP resolve problem.
9531 Daniel (19 Sep 2002)
9532 - Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
9533 in the same style other code does.
9535 - Ilguiz Latypov fixed a flaw in the client code when fetching multiple URLs
9536 and -C - was used. The first file's resume position was then accidentally
9537 reused on all the other files too.
9539 Daniel (18 Sep 2002)
9540 - The curl_easy_setopt.3 man page was greatly modified and the options have
9541 now been grouped in logical groups so that it should be somewhat easier to
9542 read it and find things you search for.
9544 Daniel (13 Sep 2002)
9545 - Kevin Roth pinpointed a scary flaw in libcurl, when the HTTP server doesn't
9546 send any headers back, only raw content. Right, that is a violation of the
9547 standard but still happens at times and we need to deal with it. Test case
9548 306 was added to verify that we do right now.
9552 Daniel (11 Sep 2002)
9553 - Lukasz Czekierda found out that curl didn't send a correct HTTP Host: header
9554 when you specified the URL with an IPv6 IP-address.
9557 - Sven Neuhaus made --silent being acknowledged even when multiple URLs
9558 were used. It used to output "[1/2]: http://host/a.html.de --> a.html.d" etc
9559 even when told to shut up.
9562 - Updated all source code headers to use MIT-license references only, and
9563 point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
9564 URL. I've cut out all references to MPL that I could find.
9566 - Corected the makefiles to not always use -lz when linking
9571 - James Gallagher added Content-Encoding support to libcurl so now curl and
9572 libcurl-using apps can request compressed contents using the 'deflate'
9573 method. See the special file lib/README.encoding for details.
9575 curl --compressed is now used to request compressed contents.
9577 curl-config --feature will include 'libz' if this feature was around when
9578 the library was built.
9580 Daniel (30 Aug 2002)
9581 - Applied an anonymous SOCKS5-proxy patch. Not properly working in all
9582 situations though, as all getaddrinfo()-using libcurls will fail on this.
9583 This is because of the somewhat naive way the current code tries to extract
9584 the IP address of the proxy.
9586 - Fixed up the SSL cert fixes from the other day even more after more inputs
9587 from Cris. Added three new SSL error codes to make the
9588 CURLE_SSL_CONNECT_ERROR slightly less overloaded.
9590 Daniel (27 Aug 2002)
9591 - After lots of talk with Tom Zerucha, Nick Gimbrone and Cris Bailiff I
9592 decided to talk the bold path and I now made libcurl do CA certificate
9593 verification by default. Thus library users need to explicitly turn this off
9594 if you want to connect to sites without proper checking. We also install a
9595 CA cert bundle on 'make install' now.
9597 The curl tool now requires the -k/--insecure option in order to allow
9598 connections and operations on SSL sites that aren't properly verified with
9599 -cafile or --capath.
9601 curl-config --ca displays the built-in path to the CA cert bundle.
9603 Daniel (26 Aug 2002)
9604 - Andrew Francis cleaned up some code that now compiles fine without the need
9605 for ugly MSVC pragmas.
9607 - Keith MacDonald found a minor bug in src/main.c that made it close stdin
9608 instead of the actual file handle. It shouldn't have resulted in much
9609 trouble as most operating systems close all file handles on process exit
9612 Daniel (22 Aug 2002)
9613 - Markus Oberhumer provided some documentation for his previously provided
9614 CURLOPT_NOSIGNAL fix.
9616 - Patched the lib/Makefile.am to hopefully no longer complain on undefined
9617 symbols that seemed to occur on builds with shared OpenSSL libraries on
9620 Daniel (20 Aug 2002)
9621 - Fixed compiler warnings on MSCV++ compiles. We're looking for help here:
9622 remove the pragmas from lib/config-win32.h and adjust the sources where
9623 the warnings occur. Hiding them with pragmas like this is not the correct
9624 way of dealing with compiler warnings.
9626 Daniel (13 Aug 2002)
9627 - Ulrich Zadow made the global include files in curl/* include themselves
9628 using "curl.h" instead of <curl/curl.h> which thus allows people to more
9629 freely decide how to include curl and how to setup their include paths.
9631 - Sterling Hughes added the curl_share* interface, somewhat as discussed
9634 - Jörn Hartroth pointed out that poll() was used in the pre1 source code and
9635 it isn't very portable, so now I check for it in the configure script and
9640 Daniel (12 Aug 2002)
9641 - Applied my initial take on making the multi stuff more asynchronous. Connects
9642 should now return back without "hanging" until it has connected for real.
9643 This should also be the case for FTP-PASV connects.
9646 - Applied Markus F.X.J. Oberhumer's patch that introduces CURLOPT_NOSIGNAL,
9647 which effectively prevents libcurl from doing anything that may cause
9648 signals to get sent. This is basicly for multi-threaded applications that
9649 now can use timeouts properly, without risking any signals to burst in and
9653 - Lukasz Czekierda reported that RFC2732-style literal IPv6 addresses didn't
9654 work. When did that code vanish? Anyway, it's back again now and seems to
9657 - Jonatan Lander found out that POSTing an empty string didn't work with the
9661 - Jörn Hartroth fixed the libcurl.def file to build the windows DLL with
9662 the multi interface enabled.
9665 - The ftp PORT command now uses a better default IP address, as it will
9666 extract and use the local IP address used by the control connection.
9668 - Modified the #include lines in curl/multi.h to work better on more
9671 Daniel (31 Jul 2002)
9672 - Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
9675 Daniel (30 Jul 2002)
9676 - Priya Ramakrishnan and Ryan Jones compiles curl/curl.h with a C++ compiler
9677 and don't get __STDC__ defined, which required us to extend the preprocessor
9678 check for the ## operator usage.
9680 - Correct the description for CURLOPT_PASSWDFUNCTION, if set to NULL the
9681 internal default function will be put back.
9683 - danfuzz at milk.com found out that libcurl badly assumed a space after
9684 'Set-Cookie:' so if it wasn't present, it caused the first letter of the
9685 cookie name to fall off!
9687 Daniel (29 Jul 2002)
9688 - The password prompt asking for user password used stdout and now uses
9689 stderr instead to better allow redirecting. It also leaked a fopen() file
9690 handle that is now fixed.
9692 Daniel (28 Jul 2002)
9693 - HAVE_SETVBUF was left out from src/main.c which made -N not work. Found out
9696 Daniel (26 Jun 2002)
9697 - Glen Nakamura solved a crash in the name resolving function for IP-only
9698 addresses on Alpha Linux (at least).
9700 - T. Bharath corrected the high resolution timer introduced in 7.9.8.
9702 Daniel (22 Jun 2002)
9703 - Andrés GarcÃa pointed out man page errors in curl_formadd.3. I fixed.
9705 Daniel (19 Jun 2002)
9706 - Chris Combes pointed out a flaw in curl_escape(). I fixed. We no longer
9707 tries to generate nor parse '+' in URLs. Spaces become %20, and only %-codes
9708 are translated by curl_unescape().
9710 Daniel (15 Jun 2002)
9711 - Added --limit-rate to the curl tool. Allows the user to set a maxmimum
9712 upper limit to how much bandwidth to use for transfers.
9714 - CURLOPT_BUFFERSIZE was added to libcurl. This sets a prefered size for the
9715 receive buffer in libcurl. The main point of this would be that the write
9716 callback gets called more often and with smaller chunks.
9718 Daniel (14 Jun 2002)
9719 - Yarram Sunil found out that the SocketIsDead() function performed a lot
9720 faster on Windows when removing the 1 microsecond timeout.
9722 - Hanno L. Kranzhoff fixed the VC++ project files.
9724 - Tom Mattison found out that ftp transfers closed the connection a little
9727 - Miklos Nemeth posted a VC++ makefile fix and some INSTALL comments on how
9728 to disable specific protocols when building for Windows.
9732 Daniel (13 Jun 2002)
9733 - Time to let this baby go.
9735 Daniel (12 Jun 2002)
9736 - Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
9737 CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH. They are used to create a
9738 multipart that appears as a regular file upload, but the data is provided
9739 with a pointer and length.
9741 - Nico Baggus made the VMS version use sigsetjmp() too.
9743 - Jörn Hartroth fixed the mingw32 build using the mm lib.
9745 - Applied patches by Kris Kennaway that correct format string problems in
9746 lib/ftp.c and lib/ldap.c.
9750 Daniel (11 Jun 2002)
9751 - James Cone brought the idea of using sigsetjmp() in the signal handler to
9752 make the time-out of name lookups to work, even when the underlying name
9753 resolver library traps EINTR. The use of sigsetjmp() and siglongjmp() for
9754 this may be a bit drastic, and also not likely to exist on all platforms. I
9755 added careful checking for this in the configure script, even checks for it
9756 being a macro (which seems to be the case in for example Linux).
9758 sigsetjmp() seems to be mentioned in the Single Unix specification.
9760 - Miklos Nemeth brought a patch that allows libcurl to get built with specific
9761 protocols disabled. This is done by running ./configure
9762 --disable-[protocol].
9764 - FTP range downloads could make CURLE_FTP_WRITE_ERROR get returned. We now
9765 make precautions to not return this for range downloads.
9767 Added test case 135 that makes an ftp range download. Had to tweak the
9768 runtests.pl script a bit too.
9770 - Bug report #566835 identified a strlen() on a NULL pointer. Added additional
9771 check to prevent this.
9773 Daniel (10 Jun 2002)
9774 - Found and corrected a connect failure problem that didn't create a human
9777 - Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
9778 and comments from Götz Babin-Ebell.
9780 - Gautam Mani found a socket descriptor leak that happened when FTP transfers
9781 failed and you reinvoked curl_easy_perform().
9784 - Gustaf Hui corrected curl_multi_remove_handle() so that it won't crash no
9785 matter when you decide to remove the CURL handle.
9787 - HAVE_RAND_STATUS was added to lib/config-win32.h by Andreas Olsson, as it
9788 makes windows builds stop complaining about "weak seeding" when it in fact
9791 - Another 64bit architecture crash that was introduced in 7.9.7 was now
9792 removed, as bug report #564585 clarified. This happened due to our attempts
9793 to only allocate only as much memory as is actually needed for name
9794 resolving (using realloc) which called for a function that could 'move' a
9795 hostent struct in memory.
9800 - T. Bharath fixed the CURLINFO_REDIRECT_TIME to return a correct time and
9801 made the CURLINFO_REQUEST_SIZE return the correct total request size. He
9802 also made the win32 timers use higher resolution than before.
9804 Daniel (29 May 2002)
9805 - Renaud Chaillat made me aware of the fact that libcurl returned an error if
9806 you tried to get an empty FTP file. This seemed like a wrong thing to do, so
9807 now it no longer does that! I just hope that no one built anything fancy
9808 upon this unexpected behavior...
9810 Daniel (28 May 2002)
9811 - Cris Bailiff brought CURLOPT_CAPATH that works like CURLOPT_CAINFO but
9812 specifies a path to a directory with certificates rather than a single file
9813 with them all concatenated. --capath was added to the command line tool
9814 for the same function.
9816 Windows users need to pay attention that the directory should be setup with
9817 the c_rehash tool of the OpenSSL package, and that creates symlinks by
9818 default that need to be replaced with actual copies to work on Windows.
9820 - Gustaf Hui provided new code that changes how curl_multi_info_read()
9821 messages are stored, so that they don't have to be kept around for the multi
9822 handle's entire life time. He also made it return failure codes properly
9823 which it didn't do before.
9825 Daniel (27 May 2002)
9826 - Gustaf Hui pointed out that running curl_multi_perform() without doing
9827 curl_multi_fdset() first was not really a working combo. I added an internal
9828 check for this and have some extra select() code without timeout to make the
9829 library internals work identically nevertheless. We might need to somehow
9830 either document that once you've used the *_fdset() you should remain using
9831 them in select() or you should blank them somehow so that libcurl won't go
9836 Daniel (22 May 2002)
9837 - James Cone brought an excellent patch, including several tests and docs!
9838 CURLOPT_NETRC now takes an enum as argument instead of the previous boolean.
9839 --netrc-optional was introduced as an addition to --netrc to allow the
9840 command line client to take use of all that new netrc stuff.
9842 - Bug report #558888 showed a case where libcurl re-used the previous host
9843 name when a connection over a proxy was re-used but to a different target
9846 Daniel (21 May 2002)
9847 - Edin Kadribasic helped me sort out a problem to made libcurl crash when
9848 trying to HTTP POST an empty string.
9850 - Clarified that Juergen Wilke donated the original tests/server/sws.c code.
9852 - Jean-Philippe Barrette-LaPierre made curl_formadd() return a typedef named
9853 CURLFORMcode instead of the previous 'int', and the various return codes are
9854 now globally exported. It allows applications to better figure out what goes
9855 wrong when curl_formadd() returns errors.
9857 Daniel (20 May 2002)
9858 - Roland Zimmermann pointed out that SSL_CTX_use_certificate_chain_file()
9859 is prefered to SSL_CTX_use_certificate_file().
9861 Daniel (17 May 2002)
9862 - Bug report #556869 pointed out that src/writeout.c didn't compile on freebsd
9863 after my AIX fixes the other week.
9865 - Bug report #556930 pointed out a FreeBSD core dump introduced in 7.9.7 in
9866 the DNS struct realloc stuff. Actually, this crash could happen on all
9867 systems that made the pack_hostent() function get invoked.
9869 - I removed several compiler warnings in the test suite's HTTP server.
9873 Daniel (10 May 2002)
9874 - Kevin Roth adjusted the --trace-ascii output slightly.
9876 - Paul Harrington found out that src/writeout.c needed an additional header
9877 file included for AIX builds
9882 - Updated the man page with --trace-ascii and -j/--junk-session-cookies.
9884 - Made --trace-ascii do pretty much the same as --trace but without the hex
9887 - Added CURLOPT_COOKIESESSION that when enabled makes libcurl ignore session
9888 cookies read from a file. This option is enforced by the curl command line
9889 tool using the new -j/--junk-session-cookies option. After discussions with
9890 Kevin Roth. This makes it easier to use curl to fully emulate a browser's
9891 behavior, even when it comes to "session cookies". Session cookies are
9892 cookies that a normal browser discards when the browser is shut
9893 down. They're identified by not having any expire date/time.
9895 - When CURLOPT_DEBUGDATA was set, it ruined the CURLOPT_STDERR setting and
9896 this was discovered when --trace was made to crash.
9898 - Using -v and --trace at the same time confused matters. -v is now pretty
9899 much ignored when --trace or --trace-ascii is used.
9901 - Made --trace (and --trace-ascii) support - as file name to pass output to
9902 stdout instead. It makes it consistent with how other options work.
9907 - Added multi-post.c to the examples directory. I got the basic source for
9908 this from Gustaf Hui.
9911 - CURL_MAX_WRITE_SIZE is now an exported #define in the curl/curl.h header and
9912 can be used to figure out the maximum buffer size your write callback can
9915 - CURLOPT_READDATA is now an alias for CURLOPT_INFILE and CURLOPT_WRITEDATE is
9916 an alias for CURLOPT_FILE. These two were added for conformity. Most other
9917 callback function's userdata are provided with options using a similar name-
9920 - Added "--trace [file]" to the command line tool. It makes a very detailed
9921 trace dump get stored, with a full protocol dump that includes all received
9922 and transmitted data. This could be a very effective tool for debugging what
9923 goes wrong. This dump includes every byte the way it is sent to/received
9924 from the server. The dump is the plain-text version, so SSL transfers will
9927 - I found out that the DEBUGFUNCTION was not called properly everywhere as we
9928 wanted it to. I fixed it.
9930 - -D now stores all headers to the same file if multiple URLs are given on the
9931 command line! Kevin Roth made me aware of that it didn't already do this!
9933 - Gustaf Hui wrote an excellent formpost example that used the multi
9934 interface. Unfortunately, it didn't work due to several bugs in how
9935 transfers were made when the multi interface was used.
9938 - Hanno Kranzhoff found out that when doing multiple transfers on the same
9939 easy handle, the progress meter would show a bad "currently downloaded
9940 value" when the transfer starts.
9943 - Applied another patch by Jacky Lam to make the name resolve info realloc()
9944 stuff work properly.
9946 Daniel (28 April 2002)
9947 - curl_multi_info_read() is now implemented!
9949 Daniel (27 April 2002)
9950 - Updated BUGS, TODO, FAQ, INSTALL and added BINDINGS.
9952 - I think I fixed the DNS cache prune crach Jacky Lam found and reported.
9954 - I cleaned up the name prefix stuff in the hash and llist modules.
9956 - FTP responses should now be better on timing out properly. The timeout value
9957 is maximum timeout for the entire request operation, but before this, the
9958 timeout was used as a maximum allowed time between two reads...
9960 Daniel (26 April 2002)
9961 - Fixed the test suite http server to not use snprintf() anymore due to better
9964 Daniel (25 April 2002)
9965 - With Sterling Hughes' new DNS pruning, Jacky Lam asked if this wouldn't
9966 cause problems since the pruning is only checking the entry time, and it
9967 sure could cause problems. Therefor, I've now added and changed code so that
9968 this should not be a problem. Nowhere in the code will be store name
9969 resolved information around so that a sunsequent DNS cache prune should
9970 cause a problem. This of course called for some mild internal changes.
9972 Daniel (23 April 2002)
9973 - Improved the 'no_proxy' check, as using port numbers in the URL confused it
9974 previously. Reported by Erwan Legrand in bug report #547484.
9976 - The --interface option now works even on IPv6 enabled builds. Reported by
9979 Daniel (22 April 2002)
9980 - The #defines names starting with TIMECOND now has CURL_ prefixes. (The old
9981 names are still #defined too.) Pointed out by Robert Olson.
9983 - Jacky Lam brought code that lets the name resolve function only use as much
9984 memory as it actually needs. This only works on certain operating systems,
9985 but is totally transparant to all users.
9987 Daniel (19 April 2002)
9988 - Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
9990 Daniel (18 April 2002)
9991 - Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
9992 experienced very big caches.
9994 Daniel (17 April 2002)
9995 - Dirk Manske patched the 301 response to work against the RFC but more like
9996 common browsers do. If a POST get a 301 back, it'll switch to GET in the
9997 next request (if location-following is enabled).
9999 Daniel (16 April 2002)
10000 - Dirk Manske posted a patch originally written by Ingo Wilken that introduced
10001 two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and
10002 CURLINFO_REDIRECT_COUNT.
10004 Daniel (15 April 2002)
10005 - Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
10006 reflect reality better, like when the first request isn't POST and when
10007 the second isn't GET... :-)
10009 - Craig Davison pointed out that when curl_formadd()ing a file that doesn't
10010 exist, libcurl doesn't return error. Now, curl_easy_perform() will return
10011 CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
10015 Daniel (14 April 2002)
10016 - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
10017 beginning of cookie contents.
10019 - Had to patch include/curl/curl.h since MSVC doesn't set the __STDC__ define.
10020 Moonesamy pointed out the problem, Bjorn Reese the solution.
10024 Daniel (12 April 2002)
10025 - Fixed the TIMER_CONNECT to be more accurate for FTP transfers. Previously
10026 FTP transfers got the "connect done" time set after the initial FTP commands
10027 and not directly after the TCP/IP connect as it should.
10029 I also made the time stamp get set even if the connect itself fails, which
10030 it didn't do previously.
10032 - Jean-Philippe Barrette-LaPierre provided his patch that introduces
10033 CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA. They allow a program to a set a
10034 callback to receive debug/information data. That includes headers and data
10035 that is received and sent. CURLOPT_VERBOSE still controls it.
10037 By default, there is an internal debugfunction that will make things look
10038 and work as before if not changed.
10040 Daniel (10 April 2002)
10041 - Sebastien Willemijns found out that -x didn't use the default port number as
10042 is documented. It does now.
10044 - libcurl-errors.3 is a new man page attempting to document all libcurl error
10047 - Added two new error codes and changed the behaviour of two old ones
10051 This error was returned *both* for errors that occured when writing
10052 received data to a local file, as well as when we get problems writing data
10053 to a remote server. CURLE_SEND_ERROR has now been added for the latter
10057 This error was similarly returned *both* for errors when reading a local
10058 file, as well as when getting problems when reading network data.
10059 CURLE_RECV_ERROR has now been added for the latter error.
10061 (Two test cases were adjusted accordingly.)
10063 Daniel (9 April 2002)
10064 - runtests.pl now sets the HOME variable before running curl, to prevent any
10065 actual ~/.curlrc file to fool the tests!
10069 Daniel (8 April 2002)
10070 - Michael Curtis provided new functionality for curl on some platforms. Using
10071 the --environment option, curl will *set* a bunch of environment variables
10072 to values. The names are the same ones as for the -w/--writeout option.
10074 For now, this only works on the RISC OS version, as this feature relies on
10075 both OS support and that it matches OS paradigms.
10077 - Jacky Lam provided a fix for getting headers-only when the reply is HTTP/1.0
10078 and 304, I edited it slightly.
10080 Daniel (5 April 2002)
10081 - As requested by Jay Graves, the '.curlrc' file (or _curlrc as it is called
10082 when used in windows), is now loaded from the current directory if the HOME
10083 environment variable isn't set (or if it is too long). I also enlarged the
10084 array used to store the full file path in, to 512 bytes.
10086 - Kevin Roth pointed out to me why the "19 March" change regarding -G and -I
10087 was stupid and the change was reverted. Added test case 48 to verify the
10092 Daniel (4 April 2002)
10093 - Jonatan Lander brought a patch that makes curl/curl.h compile nicely on
10094 pre-ISO compilers, like when using gcc -traditional.
10096 Daniel (3 April 2002)
10097 - Jacky Lam identified a glitch when getting headers-only, where libcurl would
10098 "hang" 1 second in vain in the select() loop before returning back.
10100 - Tor Arntsen brought a patch for multipart formposts. It turned out that the
10101 "CGI_Lite Perl package" makes some bad assumptions on what letters that may
10102 be used in boundary strings and thus curl could confuse it by including '+'
10103 and '/'. While this is standards-compliant, we change the behavior to work
10104 smoothly with existing software based on that package.
10106 Daniel (2 April 2002)
10107 - Gerhard Herre filed bug report #536238 where he pointed out a crash in
10108 verbose FTP passive transfers for AIX.
10110 - Clarence Gardner pointed out a minor flaw in how libcurl didn't properly
10111 take care of all errors that SSL_read() could return.
10113 - Jacky Lam fixed a MALLOCDEBUG problem in lib/getinfo.c
10115 Daniel (27 March 2002)
10116 - T. Bharath pointed out a flaw in the connection re-use function that didn't
10117 check proxy connections properly for "deadness" before they were re-used.
10119 - Pedro Neves found out that HTTP POSTing with --data-binary did not properly
10120 work under Windows as the file specified wasn't read fully binary!
10122 Daniel (25 March 2002)
10123 - Jacky Lam brought a fix that improves treatment of cookies using identical
10124 domains but with leading dots properly.
10126 Daniel (22 March 2002)
10127 - Miklos Nemeth updated the windows section of the docs/INSTALL file and the
10130 - Jon Dillon provided us with several good-looking curl images for
10131 promotion. View them here http://curl.haxx.se/icons.html
10133 Daniel (20 March 2002)
10134 - Peter Verhas found out that CRLF replacement in uploads was not working. I
10135 fixed it, and added test case 128 that verifies the functionality.
10137 - The list formerly known as curl-main is now named curl-users and is hosted
10138 by sourceforge. Susbcribe to the new list, get off the old one.
10142 Daniel (19 March 2002)
10143 - Made -G and -I on the same command line cause an error.
10145 - Moved the multi.h file to the "public" include directory and made it get
10146 included by curl.h so that no extra include files will be necessary to use
10149 Added docs and man pages for the multi interface to the release archive.
10150 Added the three example source codes too.
10152 Necessary steps in my campaign to sneak in the multi interface... ;-)
10154 - Updated the year in all copyright notices in all C and H files.
10156 Daniel (18 March 2002)
10157 - Tomas Szepe found out that -d and -G didn't mix as they should. I broke this
10158 in 7.9.5... Added test case 32 for this.
10162 Daniel (16 March 2002)
10163 - Peter Verhas pointed out that the curl_escape and curl_unscape man pages
10164 contained factual errors.
10166 - Albert Choy found and corrected a problem with the verbose output when doing
10167 PASV ftp transfers. It could make libcurl crash.
10169 Details in bug report #530562:
10170 http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
10172 Daniel (15 March 2002)
10173 - Jun-ichiro itojun Hagino filed bug report #530204 that clearly pointed out
10174 the PF_INET fix from February 19 as a not-very-good fix as it broke IPv6
10175 capability! That patch is now reverted.
10177 The problem with slow name lookups with getaddrinfo() on non-IPv6 enabled
10178 hosts are instead made by first checking if the stack is IPv6-enabled and if
10179 not, the PF_INET is used and otherwise we go with the full PF_UNSPEC.
10181 - T. Bharath pointed out that when we return an "error" from a WRITEFUNCTION
10182 as described in the man page, libcurl did not return the documented error
10183 code (CURLE_WRITE_ERROR) but would instead return CURLE_READ_ERROR. This is
10186 Daniel (14 March 2002)
10187 - Setting CURLOPT_POST without setting CURLOPT_POSTFIELDS now read the POST-
10188 data from the callback.
10190 - The GOPHER support seems to be broken. I don't think I'll even start fixing
10191 it until someone else finds out... :-)
10193 Daniel (13 March 2002)
10194 - Trying 'curl -I ftp.sunet.se' or similar did a SIZE on a silly "(nil)"
10195 string. If such a file would be present, curl returned the size of it! Now
10198 - Curl_sendf() was fixed to deal with situation where Curl_write() would've
10199 blocked and thus return -1.
10201 - Setting CURLOPT_PROGRESSFUNCTION to NULL now restores the internal function.
10203 - All CURLFORM_* options can now be used in a CURLFORM_ARRAY except the
10204 CURLFORM_ARRAY itself. This was necessary since we couldn't expand the
10205 CURLFORM_* list proprely and unrestricted until this was the case. It was
10206 also a bit peculiar to users why some options could be used in an array
10207 while others couldn't.
10209 - Removed some silly CRLF lines that had accidentally slipped into src/main.c
10210 Nico Baggus pointed them out to me.
10212 Daniel (11 March 2002)
10213 - CURLFORM_FILENAME was added. This can be set when creating a file upload
10214 part, to set the 'filename' field to a custom value. If this isn't used,
10215 the actually used filename will be included instead (as libcurl always has
10216 done). curl was adjusted accordingly, and now -F accepts a 'filename=' field
10217 too, and allows constructs such as:
10219 -F 'name=@filename;filename=/dev/null'
10221 and this can be combined with type= too, in a manner similar to:
10223 -F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"
10225 Test case 39 was added to verify this functionality.
10227 - The struct formerly known as HttpPost is now named curl_httppost to properly
10228 use the curl name space. I added a #define for the old name to make existing
10229 programs compile even when this new include file is used.
10231 Daniel (8 March 2002)
10232 - Clifford also discovered that if the client code failed early, as when doing
10233 "curl -O" only, it would do fclose(NULL) which caused a segmentation fault
10236 - Clifford Wolf provided a patch that made --progress-bar work again.
10238 - I closed bug report #527032 by making sure that we add a newline after a
10239 transfer when --progress-bar has been used. Before, without the newline, it
10240 made the subsequent text come out wrong.
10244 Daniel (7 March 2002)
10245 - Added docs/KNOWN_BUGS to the release archive.
10247 Daniel (6 March 2002)
10248 - Kevin Roth corrected a flaw in the curl client globbing code that made it
10249 mess up backslashes. This was most notable on windows (cygwin) machines when
10252 - Brad provided another fix for building outside the source-tree.
10254 - Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
10256 Daniel (5 March 2002)
10257 - I noticed that the typedef in curl.h for the progress callback prototype was
10258 wrong and thus applications that used it would not get the proper input
10259 data. It used size_t where the implementation actually uses doubles!
10261 I wish I could blame someone else, but this was my fault. Again.
10265 Daniel (4 March 2002)
10266 - Cut off the changes done during 2001 from this changelog file and put them
10267 in a separate file (CHANGES.2001), available from CVS of course.
10269 - I removed the multi directory. The example sources were moved to the
10270 docs/examples directory where they belong.
10272 - Wrote 7 new man pages for the current functions in the new multi interface.
10273 They're all still pretty basic, but we can use them as a start and add more
10274 contents to them when we figure out what to write. The large amount of man
10275 pages for libcurl now present made me decide to put them in a new separate
10276 subdirectory in the docs directory. Named libcurl.
10278 - Giuseppe Corbelli provided a template file for the EPM package manager, it
10279 gets generated nicely by the configure script now.
10283 Daniel (1 March 2002)
10284 - Moved the memanalyze.pl script into the tests/ dir and added it to the
10285 release archives. It was previously only present in the CVS tree.
10287 - Modified the February 17th Host: fix, as bug report #523718 pointed out that
10290 - Nico Baggus added more error codes to the VMS stuff.
10292 - Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
10293 option. It is just another FTP quote option that allows the user to specify
10294 a list of FTP commands to issue *just before* the transfer command (RETR or
10295 STOR etc). It has turned up a few systems that really need this.
10297 The curl command line tool can also take advantage of this by prefixing the
10298 quote commands with a plus (+) in similar style that post transfer quote
10299 commands are specified.
10301 This is not yet documented. There is no test case for this yet.
10303 Daniel (28 February 2002)
10304 - Ralph Mitchell made some serious efforts and put a lot of sweat in setting
10305 up scripts and things for me to be able to repeat his problems, and I
10306 finally could. I found a problem with the header byte counter that wasn't
10307 increased properly and thus we could return CURLE_GOT_NOTHING when we in
10308 fact had received data.
10310 Daniel (27 February 2002)
10311 - I had to revert the non-space parsing cookie fix I posted to the mailing
10312 list. Expire dates do have spaces and still need to get parsed properly!
10313 Instead we just ignore trailing white space and it seems to work...
10315 Daniel (26 February 2002)
10316 - Made the cookie property 'Max-Age' work, just since we already tried to
10317 support it, it is better to do it right. No one uses this anyway.
10319 - The cookie parser could crash if a really weird (illegal) cookie line was
10320 received. I also made it better discard really oddly formatted lines better.
10322 Made the cookie jar store the second field from the left using the syntax
10323 that Netscape and Mozilla probably like. Curl itself ignores it.
10325 Added test case 31 for these cases.
10327 Clay Loveless' email regarding some cookie issues started my cleanup.
10329 - Kevin Roth pointed out that my automake fiddles broke the ability to build
10330 outside the source-tree and I posted a patch to the mailing list that brings
10335 Daniel (25 February 2002)
10336 - Fiddled with the automake files to make all source files in the lib
10337 directory not have ../src in the include path, and the src sources shouldn't
10340 - All 79 test cases ran OK under Linux and Solaris using the new HTTP server
10341 in the test suite. The new HTTP server was first donated by Georg Horn and
10342 subsequently modified to work with the test suite. It is currently still not
10343 portable enough to run on "all over" but this is a start and I can run all
10344 curl tests on my machines. This is an important requirement for the upcoming
10347 - Using -d and -I on the same command line now reports an error, as it implies
10348 two different HTTP requests that can't be mixed.
10350 - Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
10351 support %{content_type} to get the content type of the recent download.
10353 - Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
10354 and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
10355 out if we could include winsock.h which turns out not to be a wise choice to
10356 do on cygwin since it has the file but can't include it!
10358 Daniel (22 February 2002)
10359 - Added src/config-vms.h to the release archive.
10361 - Fixed the connection timeout value again, the change from February 18 wasn't
10366 Daniel (21 February 2002)
10367 - Kevin Roth and Andrés GarcÃa both found out that lib/config.h.in was missing
10368 in the pre-release archive and thus the configure script failed.
10372 Daniel (20 February 2002)
10373 - Andrés GarcÃa provided a solution to bug report #515228. the total time
10374 counter was not set correctly when -I was used during some conditions (all
10375 headers were read in one single read).
10377 - Nico Baggus provided a huge patch with minor tweaks all over to make curl
10378 compile nicely on VMS.
10380 Daniel (19 February 2002)
10381 - Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
10382 getaddrinfo() calls, he could speed up some name resolving calls with an
10383 order of magnitudes on his Redhat Linux 7.2.
10385 - Philip Gladstone found a second INADDR_NONE problem where we used long
10386 intead of in_addr_t which caused 64bit problemos. We really shouldn't define
10387 that on two different places.
10389 Daniel (18 February 2002)
10390 - Philip Gladstone found a problem in how HTTP requests were sent if the
10391 request couldn't be sent all at once.
10393 - Emil found and corrected a bad connection timeout comparison that made curl
10394 use the longest of connect-timeout and timout as a timeout value, instead of
10395 the shortest as it was supposed to!
10397 - Aron Roberts provided updated information about LDAP URL syntax to go into
10398 the manual as a replacement for the old references.
10400 Daniel (17 February 2002)
10401 - Philip Gladstone pointed out two missing include files that made curl core
10402 dump on 64bit architectures. We need to pay more attention on these details.
10403 It is *lethal* to for example forget the malloc() prototype, as 'int' is
10404 32bit and malloc() must return a 64bit pointer on these platforms.
10406 - Giaslas Georgios fixed a problem with Host: headers on repeated requests on
10407 the same handle using a proxy.
10409 Daniel (8 February 2002)
10410 - Hanno L. Kranzhoff accurately found out that disabling the Expect: header
10411 when doing multipart formposts didn't work very well. It disabled other
10412 parts of the request header too, resulting in a broken header. When I fixed
10413 this, I also noticed that the Content-Type wasn't possible to disable. It is
10414 now, even though it probably is really stupid to try to do this (because of
10415 the boundary string that is included in the internally generated header,
10416 used as form part separator.)
10418 Daniel (7 February 2002)
10419 - I moved the config*.h files from the root directory to the lib/ directory.
10421 - I've added the new test suite HTTP server to the CVS repository, It seems to
10422 work pretty good now, but we must make it get used by the test scripts
10423 properly and then we need to make sure that it compiles, builds and runs on
10424 most operating systems.
10428 Daniel (6 February 2002)
10429 - Miklos Nemeth provided updated windows makefiles and INSTALL docs.
10431 - Mr Larry Fahnoe found a problem with formposts and I managed to track down
10432 and patch this bug. This was actually two bugs, as the posted size was also
10433 said to be two bytes too large.
10435 - Brent Beardsley found out and brought a correction for the
10436 CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
10437 accidentaly broke Giaslas Georgios' patch.
10439 Daniel (5 February 2002)
10440 - Kevin Roth found yet another SSL download problem.
10444 - no changes since pre-release
10448 Daniel (3 February 2002)
10449 - Eric Melville provided a few spelling corrections in the curl man page.
10451 Daniel (1 February 2002)
10452 - Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
10453 uses gmtime_r() on all hosts that have it.
10455 Daniel (31 January 2002)
10456 - An anonymous bug report identified a problem in the DNS caching which made it
10457 sometimes allocate one byte too little to store the cache entry in. This
10458 happened when the port number started with 1!
10460 - Albert Chin provided a patch that improves the gethostbyname_r() configure
10461 check on HP-UX 11.00.
10465 Daniel (30 January 2002)
10466 - Georg Horn found another way the SSL reading failed due to the non-blocking
10467 state of the sockets! I fixed.
10469 Daniel (29 January 2002)
10470 - Multipart formposts now send the full request properly, including the CRLF.
10471 They were previously treated as part of the post data.
10473 - The upload byte counter bugged.
10475 - T. Bharath pointed out that we seed SSL on every connect, which is a time-
10476 consuming operation that should only be needed to do once. We patched
10477 libcurl to now only seed on the first connect when unseeded. The seeded
10478 status is global so it'll now only happen once during a program's life time.
10480 If the random_file or egdsocket is set, the seed will be re-made though.
10482 - Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
10483 curl_easy_getinfo() read the content-type from the previous request.
10485 Daniel (28 January 2002)
10486 - Kjetil Jacobsen found a way to crash curl and after much debugging, it
10487 turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
10490 - Andreas Damm posted a huge patch that made the curl_getdate() function fully
10493 - Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
10494 CURLOPT_POSTFIELDS. You can now!
10496 Daniel (25 January 2002)
10497 - Krishnendu Majumdar pointed out that the header length counter was not reset
10498 between multiple requests on the same handle.
10500 - Pedro Neves rightfully questioned why curl always append \r\n to the data
10501 that is sent in HTTP POST requests. Unfortunately, this broke the test suite
10502 as the test HTTP server is lame enough not to deal with this... :-O
10504 - Following Location: headers when the connection didn't close didn't work as
10505 libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
10506 the restructured internals. 'Frank' posted a bug report about this.
10508 Daniel (24 January 2002)
10509 - Kevin Roth very quickly spotted that we wrongly installed the example
10510 programs that were built in the multi directory, when 'make install' was
10515 Daniel (23 January 2002)
10516 - Andrés GarcÃa found a persistancy problem when doing HTTP HEAD, that made
10517 curl "hang" until the connection was closed by the server. This problem has
10518 been introduced in 7.9.3 due to internal rewrites, this was not present in
10523 Daniel (19 January 2002)
10524 - Antonio filed bug report #505514 and provided a fix! When doing multipart
10525 formposts, libcurl would include an error text in the actual post if a
10526 specified file wasn't found. This is not libcurl's job. Instead we add an
10529 Daniel (18 January 2002)
10530 - Played around with stricter compiler warnings for gcc (when ./configure
10531 --enable-debug is used) and changed some minor things to stop the warnings.
10533 - Commented out the 'long long' and 'long double' checks in configure.in, as
10534 we don't currently use them anyway and the code in lib/mprintf.c that use
10535 them causes warnings.
10537 - Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
10538 to correct them. Two compiler warnings were removed as well.
10540 - Andrés GarcÃa fixed two minor mingw32 building problems.
10544 Daniel (17 January 2002)
10545 - docs/libcurl-the-guide is a new tutorial for our libcurl programming
10548 - Richard Archer brought back the ability to compile and build with OpenSSL
10549 versions before 0.9.5.
10550 [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
10552 - The DNS cache code didn't take the port number into account, which made it
10553 work rather bad on IPv6-enabled hosts (especially when doing passive
10554 FTP). Sterling fixed it.
10556 Daniel (16 January 2002)
10557 - Georg Horn could make a transfer time-out without error text. I found it and
10560 - SSL writes didn't work, they return an uninitialized value that caused
10561 havoc all over. Georg Horn experienced this.
10563 - Kevin Roth patched the curl_version() function to use the proper OpenSSL
10564 function for version information. This way, curl will report the version of
10565 the SSL library actually running right now, not the one that had its headers
10566 installed when libcurl was built. Mainly intersting when running with shared
10571 Daniel (16 January 2002)
10572 - Mofied the main transfer loop and related stuff to deal with non-blocking
10573 sockets in the upload section. While doing this, I've now separated the
10574 connection oriented buffers to have one for downloads and one for uploads
10575 (as two can happen simultaneously). I also shrunk the buffers to 20K
10576 each. As we have a scratch buffer twice the size of the upload buffer, we
10577 arrived at 80K for buffers compared with the previous 150K.
10579 - Added the --cc option to curl-config command as it enables so very cool
10580 one-liners. Have a go a this one, building the simple.c example:
10582 $ `curl-config --cc --cflags --libs` -o example simple.c
10584 Daniel (14 January 2002)
10585 - I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
10586 only need to address all writes (send) too and then I'm ready for another
10589 - Stoned Elipot patched the in_addr_t configure test to make it work better on
10592 Daniel (9 January 2002)
10593 - Cris Bailiff found out that filling up curl's SSL session cache caused a
10596 - Posted the curl questionnaire on the web site. If you haven't posted your
10597 opinions there yet, go there and do it now while it is still there:
10599 http://curl.haxx.se/q/
10601 - Georg Horn quickly found out that the SSL reading no longer worked as
10602 supposed since the switch to non-blocking sockets. I've made a quick patch
10603 (for reading only) but we should improve it even further.
10607 Daniel (7 January 2002)
10608 - I made the 'bool' typedef use an "unsigned char". It makes it the same on
10609 all platforms, no matter what the platform thinks the default format for
10610 char is. This was noticed since we made a silly comparison involving such a
10611 bool variable, and only one compiler/platform combination (on Debian Linux)
10612 complained about it (that happened to have its char unsigned by default).
10614 - Bug report #495290 identified a cookie parsing problem that was corrected.
10615 When a Set-Cookie: line is received without a trailing semicolon, libcurl
10616 didn't read the last "name=value" pair of the line, leading to confusions...
10618 - Sterling committed his updated DNS cache code.
10620 - I worked with Georg Horn and comments from Götz Babin-Ebell and switched
10621 curl's socket operations completely over to non-blocking for the entire
10622 operation (previously we used non-blocking only for the connection phase).
10623 We had to do this to make the SSL connection phase timeout properly without
10624 the use of signals. A little extra code to deal with this was added.
10626 - T. Bharath pointed out a slightly obscure cookie engine flaw.
10628 - Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
10629 204-replies never provides a response-body. This resulted in bad persistant
10630 behavior when 204 was received.
10632 Daniel (5 January 2002)
10633 - SM updated the VC++ library Makefiles for the new source files.
10635 Daniel (4 January 2002)
10636 - I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
10637 two places in the source code). One happened with VERBOSE set on connects,
10638 and the other when VERBOSE was on and krb4 over nat was used... I honestly
10639 don't think anyone has suffered from these mistakes.
10641 - I replaced a lot of silly occurances of printf() to instead use the more
10642 appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
10645 - Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
10646 sparc on solaris 8).
10648 - After discussions on the libcurl list with Raoul Cridlig, I just made FTP
10649 response lines get passed to the header callback if such a one is
10650 registered. It'll make it possible for any application to get all the
10651 responses an FTP server sends to libcurl.
10653 Daniel (3 January 2002)
10654 - Sterling Hughes brought a few buckets of code. Now, libcurl will
10655 automatically cache DNS lookups and re-use the previous results first if any
10656 such is available. It greatly improves speed when doing many repeated
10657 operations to the same host.
10659 - As the test case uses --include and then --head, I had to modify src/main.c
10660 to deal with this situation slightly better than previously. When done, we
10661 have 100% good tests again in the main branch.
10663 Daniel (2 January 2002)
10664 - Made test case 25 run again in the multi-dev branch. But it seems that the
10665 changes done on dec-20 made test case 104 cease to work (in both branches).
10667 - Philip Gladstone pointed out a few portability problems in the source code
10668 that didn't compile on 64-bit sparcs using Sun's native compiler.
10669 Daniel (20 December 2001)
10670 - Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
10671 libcurl to hang on transfers over proxy, when the proxy was specified with
10672 an environment variable!
10674 - Added code to make ftp operations treat the NO_BODY and HEADERS options
10677 NO_BODY set TRUE and HEADERS set TRUE:
10678 Return a set of headers with file info
10681 Transfer data as usual, HEADERS is ignored
10683 NO_BODY set TRUE and HEADERS set FALSE
10684 Don't transfer any data, don't return any headers. Just perform the set
10687 Daniel (17 December 2001)
10688 - Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
10689 made libcurl support it! This allows libcurl to do SSL connections with the
10690 private key stored in external hardware.
10692 To make this good, he had to add a bunch of new library options that'll be
10693 useful to others as well:
10695 CURLOPT_SSLCERTTYPE set SSL cert type (PEM/DER)
10696 CURLOPT_SSLKEY set SSL private key (file)
10697 CURLOPT_SSLKEYTYPE: set SSL key type (PEM/DER/ENG)
10698 CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
10699 (CURLOPT_SSLCERTPASSWD is an alias)
10700 CURLOPT_SSLENGINE: set the name of the crypto engine
10701 (returns CURLE_SSL_ENGINE_NOTFOUND on error)
10702 CURLOPT_SSLENGINE_DEFAULT: set the default engine
10704 There are two new failure codes:
10706 CURLE_SSL_ENGINE_NOTFOUND
10707 CURLE_SSL_ENGINE_SETFAILED
10709 Daniel (14 December 2001)
10710 - We have "branched" the source-tree at a few places. Checkout the CVS sources
10711 with the 'multi-dev' label to get the latest multi interface development
10712 tree. The idea is to only branch affected files and to restrict the branch
10713 to the v8 multi interface development only.
10715 *NOTE* that if we get bug reports and patches etc, we might need to apply
10716 them in both branches!
10718 The multi-dev branch is what we are gonna use as main branch in the future
10719 if it turns out successful. Thus, we must maintain both now in case we need
10720 them. The current main branch will be used if we want to release a 7.9.3 or
10721 perhaps a 7.10 release before version 8. Which is very likely.
10723 - Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
10724 curl_formadd(), that lets an application add a set of headers for that
10725 particular part in a multipart/form-post. He also provided a section to the
10726 man page that describes the new option.
10728 Daniel (11 December 2001)
10729 - Ben Greear made me aware of the fact that the Curl_failf() usage internally
10730 was a bit sloppy with adding newlines or not to the error messages. Let's
10731 once and for all say that they do not belong there!
10733 - When uploading files with -T to give a local file name, and you end the URL
10734 with a slash to have the local file name used remote too, we now no longer
10735 use the local directory as well. Only the file part of the -T file name
10736 will be appended to the right of the slash in the URL.
10738 Daniel (7 December 2001)
10739 - Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
10740 link failed. Added a configure check and corrected source code.
10744 Daniel (5 December 2001)
10745 - Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
10746 on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
10747 His suggested fix was perfect.
10749 Daniel (4 December 2001)
10750 - Incorporated more macos fixes and added four specific files in a new
10751 subdirectory below src.
10753 Daniel (3 December 2001)
10754 - Eric Lavigne reported two problems:
10756 First one in the curl_strnequal() function. I think this problem is rather
10757 macos 9 specific, as most platform provides a function to use instead of the
10758 one provided by libcurl.
10760 A second, more important, was in the way we take care of FTP responses. The
10761 code would read a large chunk of data and search for the end-of-response
10762 line within that chunk. When found, it would just skip the rest of the
10763 data. However, when the network connections are special, or perhaps the
10764 server is, we could actually get more than one response in that chunk of
10765 data so that when the next invoke to this function was done, the response
10766 had already been read and thrown away. Now, we cache the data not used in
10767 one call, as it could be useful in the subsequent call. Test case 126 was
10768 added and the test ftp server modified, to exercise this particular case.
10772 Daniel (2 December 2001)
10773 - Bug report #487825 correctly identified a problem when using a proxy and
10774 following a redirection from HTTP to HTTPS. libcurl then re-used the same
10775 proxy connection but without doing a proper HTTPS request.
10777 - Fixed win32 compiling quirks.
10781 Daniel (30 November 2001)
10782 - Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
10784 Daniel (29 November 2001)
10785 - Added --disable-epsv as an option. When used, curl won't attempt to use the
10786 EPSV command when doing passive FTP downloads. Wrote a test case for it.
10788 - Eric provided a few more fixes for building on Macs. He also pointed out
10789 a flaw in the signal handler restoration code.
10791 Daniel (28 November 2001)
10792 - Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
10793 only when using VERBOSE ftp transfers. Do we use a too small buffer for
10794 gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
10795 hostent struct must be blanked before use? With Dimitris help and these
10796 patches, the problems seem to be history.
10798 - CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
10799 from using the EPSV command before trying the normal PASV. Heikki Korpela
10800 pointed out that some firewalls and similar don't like the EPSV so we must
10801 be able to shut if off to work everywhere.
10803 - I added a configure check for 'in_addr_t' and made the ftp code use that to
10804 receive the inet_addr() return code in. Works on Solaris and Linux at
10805 least. The Linux man page for inet_addr() doesn't even mention in_addr_t...
10807 - Adjusted (almost) all FTP tests to the new command sequence.
10809 - FTP command sequence changes:
10811 EPSV is now always attempted before PASV. It is the final touch to make IPv6
10812 passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
10813 fine with IPv4 too on the servers that support it.
10815 SIZE is now always issued before RETR. It makes curl know the actual
10816 download size before the download takes place, as it makes it less important
10817 to find the size sent in RETR responses. Many sites don't include the size
10820 Both these changes made it necessary to change the test suite's ftp server
10821 code, and all FTP test cases need to be checked and adjusted!
10823 Daniel (27 November 2001)
10824 - Hans Steegers pointed out that the telnet code read from stdout, not stdin
10825 as it is supposed to do!
10829 Daniel (27 November 2001)
10830 - Eric Lavigne's minor changes to build on MacOS before OS X were applied.
10832 - greep at mindspring.com provided a main index.html page for our release
10833 archive docs directory. It just links to all the existing HTML files, but
10834 I think it may come useful to people.
10836 - There's now some initial code to support the EPSV FTP command. That should
10837 be used to do passive transfers IPv6-style. The code is still #if 0'ed in
10838 lib/ftp.c as I have no IPv6 ftp server to test this with.
10840 Daniel (26 November 2001)
10841 - Robert Schlabbach had problems to understand how to do resumed transfers,
10842 and I clarified the man page -C section somewhat.
10846 Daniel (22 November 2001)
10847 - Andrés GarcÃa helped me out to track down the roots of bug report #479537,
10848 which was concerning curl returning the wrong error code when failing to
10849 connect. This didn't happen on all systems, and more specificly I've so far
10850 only seen this happen on IPv4-only Linux hosts.
10852 - I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
10853 port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
10854 response reader function. The latter write is however likely to occur in our
10855 own buffer unless very big FTP server replies (>25K) are read. I've never
10856 seen such a reply ever, so I think this is a relatively minor risk.
10858 Daniel (21 November 2001)
10859 - Moonesamy provided code to prevent junk from being output when libcurl
10860 returns an error code but no error description and that corrects how make is
10861 run in the Makefile.dist file (that appears as root Makefile in release
10864 - Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
10867 - Kevin Roth modified the cygwin files once again, now to build against the
10868 shared OpenSSL DLLs.
10872 Daniel (20 November 2001)
10873 - Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
10874 complete with man page updates!
10876 Daniel (19 November 2001)
10877 - Miklos Nemeth provided details enough to update the Borland makefile
10880 - Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
10881 amazed we never saw this before!
10883 - Kevin Roth patched the cygwin Makfile.
10885 Daniel (16 November 2001)
10886 - Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
10891 Daniel (14 November 2001)
10892 - Samuel Listopad patched away the problem with SSL we got when someone call
10893 curl_global_init() => curl_global_cleanup() => curl_global_init(). The
10894 second init would not "take" and SSL would be unusable with curl from that
10895 point. This doesn't change the fact that calling the functions that way is
10896 wrong. curl_global_init() should be called exactly once and not more.
10898 Daniel (13 November 2001)
10899 - Fixed some minor variable type mixups in ftp.c that caused compiler warnings
10902 - The FTP fix I did yesterday used an uninitialized variable that caused
10903 spurious errors when doing FTP.
10907 Daniel (12 November 2001)
10908 - Ricardo Cadime fell over a multiple-requests problem when first a FTP
10909 directory fetch failed and then a second request is made after that. The
10910 second request happened to get the FTP server response back from the
10911 previous request, when it did its initial CWD command.
10913 - Bjorn Reese pointed out that we could improve the time diff function to
10914 prevent truncation a bit.
10916 - Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
10917 work for plain HTTP requests! So I made that work.
10921 Daniel (12 November 2001)
10922 - Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
10923 faster, it should also support such ("broken") proxies that John Lask
10924 previously have reported problems with. His proxy sends a trailing zero byte
10925 after the end of the (proxy-) headers. I've tested this myself and it seems
10926 to work on a proxy the previous version also worked with...! This rewrite is
10927 due to the problems John Lask previously experienced.
10929 - Andrés GarcÃa found out why the "current speed" meter sometimes showed 2048K
10930 for very quick transfers. It turned out the "time diff"-function returned a
10931 zero millisecond diff. We now always say it is at least one millisecond! In
10932 reality, these timers very rarely have that good resolution so even though
10933 the time diff was longer than 1 millisecond, it was reported as no diff.
10935 - I also modified the getinfo() again when returning times, as Paul Harrington
10936 reports that 7.9.1 only returns times with 1 second accuracy, which indeed
10939 Daniel (8 November 2001)
10940 - Marcus Webster found out that curl_formadd() could read one byte outside a
10941 buffer boundary, which then of course could lead to a crash. Marcus also
10942 gracefully provided a patch for this this.
10944 - Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
10945 correct way of calling gethostbyname_r() and thus failed to resolve hosts.
10946 This is two errors: it shouldn't continue the configure script if it finds
10947 gethostbyname_r() but can't figure out how to use it, and it should really
10948 figure out how to use it as it was running Linux and we know how that
10951 Daniel (7 November 2001)
10952 - docs/VERSIONS is a new file in the archive that explains the version number
10953 system we use in the curl project.
10955 - Did some more fixes that now makes libcurl only ignore signals as long as
10956 it needs to, and then restore (if any) previous signal handler again.
10958 Daniel (6 November 2001)
10959 - Enrik Berkhan posted bug report #478780, in which he very correctly pointed
10960 out two bad timeout matters in libcurl: we didn't restore the sigaction
10961 struct (the alarm handler for SIGALRM) nor did we restore the previous
10962 alarm() timeout that could've been set by a "parent" process or similar.
10964 - Kevin Roth made the cygwin binary get stripped before install.
10966 Daniel (5 November 2001)
10967 - Detlef Schmier reported that curl didn't compile using Solaris 8 with the
10968 native cc compiler. It was due to a bad function prototype. Fixed now.
10969 Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
10970 though, as gcc then complains like crazy on OpenSSL include files... :-(
10972 - John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
10973 to work on all platforms.
10975 - John Lask added the -1/--TLSv1 options that forces SSL into using TLS
10976 version 1 when speaking HTTPS.
10978 - John Lask brought a brand new VC++ makefile for the lib directory, that
10979 works a lot better than the previous!
10981 - Ramana Mokkapati brought some clever insights on the LDAP failures (bug
10982 report #475407), and his suggested changes are now applied.
10986 Daniel (4 November 2001)
10987 - I've added a number of new test cases the last few days. A few of them since
10988 I got reports that hinted on problems on timeouts, so I added four tests
10989 with timeouts for all sorts of protocols and stuff. I also came to think of
10990 a few other error scenarios that we currently didn't test properly, so I
10991 wrote up tests for a few of those too.
10993 Daniel (2 November 2001)
10994 - Replaced read() and write() with recv() and send() for socket operations
10995 even under normal unixes.
10997 Daniel (1 November 2001)
10998 - When an FTP transfer was aborted due to a timeout, it wasn't really aware of
10999 how many bytes that had been transferred and the error text always said 0
11000 bytes. I modified this to output the actually transferred amount! :-)
11002 - The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
11003 added more comments in the lib/ftp.c source file.
11005 - Minor updates to the FAQ, added a brand new section to the web site about
11006 the name issue (who owns "curl"? will someone sue us? etc etc):
11007 http://curl.haxx.se/legal/thename.html
11011 Daniel (31 October 2001)
11012 - The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
11013 the calculations used longs instead of doubles! Paul Harrington reported.
11015 - The SSL SocketIsDead() checks weren't good enough (as expected really), so I
11016 had to add a generic internal try-it-out system. If the request on a re-used
11017 connection seems to fail, then we go back and get a new (fresh) connection
11018 and re-tries the request on that instead. It kind of makes the
11019 SocketIsDead() check obsolete, but I think it is a quicker way for those
11020 cases where it actually discovers that the connection is dead.
11022 - When fixing the above, I noticed that we did quite a few writes to sockets
11023 in libcurl where we didn't check the return code (that it actually worked to
11024 send the data). With the new "attempted request" system we must detect those
11025 situations so I went over a bunch of functions, changed return types and
11026 added checks for what they actually return.
11030 Daniel (31 October 2001)
11031 - Paul Harrington detected a problem with persistant SSL connections. Or to be
11032 more exact, we didn't properly detect that the connection was dead and then
11033 a second connection would try to re-use it wrongly. The solution to this
11034 problem is still not very clear and I'm working on it. One OpenSSL insider
11035 said there is no way to know if the SSL connection is alive or not without
11036 actually trying an operation.
11038 Daniel (30 October 2001)
11039 - If a cookie was read from a file, it could accidentally strdup() a NULL
11040 pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]
11042 - The MANUAL file now documents -t correctly. I also fixed the -T description
11043 in the curl.1 man page.
11045 Daniel (29 October 2001)
11046 - John Janssen found out that curl_formadd was missing in the libcurl.def file
11047 and that the docs stated the wrong return type for the function.
11049 - Andrés GarcÃa found a bug with multiple files in the curl_formadd() function,
11050 that I removed with this patch [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/formdata.c.diff?r1=1.25&r2=1.26].
11052 - Kevin Roth brought another patch that moved the cygwin package files to the
11053 packages/Win32/cygwin directory.
11055 - A bug in the connection re-use logic made repeated requests to the same FTP
11056 server (when using name+pasword in the URL) sometimes use more than one
11057 connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
11059 - Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
11060 code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
11062 [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
11064 Daniel (26 October 2001)
11065 - Added test28 which verifies that "Location:"-following works even if the
11066 contents is separated with more than one space.
11068 Daniel (25 October 2001)
11069 - Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
11070 correct data has been output.
11074 Daniel (24 October 2001)
11075 - T. Bharath found a memory leak in the cookie engine. When we update a cookie
11076 that we already knew about, we lost a chunk of memory in the progress... The
11077 brand new test case 27 now tests for this occurrence. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.24&r2=1.25]
11079 Daniel (23 October 2001)
11080 - pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
11081 would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]
11083 Daniel (22 October 2001)
11084 - Tom Benoist reported that this SGI IRIX compiler didn't handle indented
11085 preprocessor instructions, so they're no longer in the source code!
11087 - Applied Kevin Roth's patches to make it easier to build cygwin packages from
11088 the out-of-the-box curl release archives.
11090 - I forgot to mention it below, but libcurl now closes connections that report
11091 transfer failures. Unconditionally. This could be made more nicely in the
11092 future if we set a flag or something that the connection is still good to be
11093 used for the errors that know that for a fact. We have to close the
11094 connection for the cases where we abort for example a HTTP transfer in the
11095 middle, or otherwise we might re-use that connection later with lots of data
11096 still being sent to us on it. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.63&r2=1.64]
11098 Daniel (19 October 2001)
11099 - CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
11100 anything, not even a header. test case 37 was added to test for this.
11102 - T. Bharath made curl_easy_duphandle() properly clone the cookie status as
11107 Daniel (18 October 2001)
11108 - CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
11109 the HTTP return code is below 400.
11111 Daniel (17 October 2001)
11112 - The test suite now kills any running test http server when you re-start the
11115 - We had to remove 'use strict' from two perl scripts, as the cygwin
11116 adjustments didn't play nicely otherwise for some reason. Any perl wizard
11117 out there who can put the scrict back and still make it run good on unix and
11120 - A potential memory leak pointed out to us by Yanick Pelletier was removed.
11121 It would occur when a http file transfer fails. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.60&r2=1.61]
11123 - The memory debugging system should no longer display anything to stderr
11124 if the curl_memdebug() hasn't been used to explicitly say so. This makes it
11125 easier to use the memory debug system and switch the logging on/off.
11127 Daniel (16 October 2001)
11128 - Kevin Roth provided fixes for building curl nicer in cygwin environments.
11130 Daniel (12 October 2001)
11131 - Cleaning up the progress meter/info code. The "current speed" is now more
11132 accurate than before as we now use the true time spent between the measures,
11133 and not just "assuming" every-second-update like before. The output should
11134 now also be of the same width at all times, never to show "extra" zeroes on
11137 - After talking about possible Location: bugs on the mailing list, I modified
11138 the "absolute URL" checker in lib/transfer.c to be more strict when checking
11139 if the redirected URL is absolute.
11141 Daniel (11 October 2001)
11142 - Kevin Roth provided patches that make the test suite run fine on Windows
11143 2000 running cygwin.
11145 Daniel (10 October 2001)
11146 - Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
11147 Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.
11151 Daniel (9 October 2001)
11152 - Added a new option to the command line client: -0/--http1.0. It uses the new
11153 libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
11154 requests instead of the default version (1.1). It should only be used if you
11155 really MUST do that because of a silly remote server.
11157 - Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
11158 all public curl-symbols should.
11160 - libcurl now explicitly ignores the SIGPIPE signal.
11162 Daniel (8 October 2001)
11163 - Kevin Roth's change to the cookie-jar comment (in the stored file) was
11166 - Lucas Adamski's minor bug in the bind error code failf() was fixed.
11168 Daniel (5 October 2001)
11169 - Moonesamy fixed the Curl_connecthost() function to not give compiler errors
11170 on a bunch of compilers, due to the argument named 'socket'.
11172 - Moonesamy also provided updated VC++ makefiles and project files.
11176 Daniel (4 October 2001)
11177 - Albert Chin provided a configure patch that makes the script detect proper
11178 gethostbyname_r() method without actually running any code, only compiling
11179 is necessary. This also removes the need of having a resolving 'localhost'
11182 - Found and removed memory leakage (name resolve data) in libcurl on
11183 IPv6-enabled hosts. These could sneak through because we didn't have any
11184 resource tracing on the IPv6-related functions. We do now.
11186 Daniel (3 October 2001)
11187 - Keith McGuigan patched away a (mainly Windows-) problem with the name
11188 resolver data being kept in the static memory area, which is removed when a
11189 thread is killed. The curl handle itself though perfectly handles being
11190 passed between threads.
11192 - Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
11193 required an Authorization: header. Now, proxies are not supposed to require
11194 that header, that is for true servers...
11196 - I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.
11200 Daniel (3 October 2001)
11201 - Georg Huettenegger once again made an effort beyond the call of duty and not
11202 only improved the curl_formadd() function, but also took care of adjusting
11203 the curl command line client to use this new function instead of the
11204 obsoleted curl_formparse.
11206 Daniel (2 October 2001)
11207 - Major fix in how libcurl does TCP connects. It now does non-blocking
11208 connects to enable good timeouts without signals, and it now tries all IP
11209 addresses for any given host (if it resolves more than one and the first
11210 one(s) don't connect). Added a new source file 'connect.c' to deal with all
11211 the TCP connect stuff.
11213 - We now support IPv4-style IP-addresses in rfc2732-format, to better support
11214 people writing scripts without knowing what address there is.
11216 Daniel (28 September 2001)
11217 - Cleanups in the FTP source code. Divided the code into even more smaller
11218 functions and generally tried to make the differences between IPv4 and IPv6
11219 get less noticable in the sources.
11221 - If the remote file time is not readable/accessable/understood by libcurl,
11222 libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
11223 did. This should make curl not touch the file data unless there was a known
11224 remote date when -R is used.
11226 Daniel (27 September 2001)
11227 - Working on getting non-blocking connects working platform independent. We
11228 will also make curl try all IPs for a given host if the first one should
11231 Daniel (26 September 2001)
11232 - Kevin Roth provided a cookie example that proved the cookie jar
11233 functionality wasn't working properly. I added test case 46 and made it
11236 Daniel (25 September 2001)
11237 - Jörn Hartroth updated the mingw32 makefiles.
11241 Daniel (23 September 2001)
11242 - Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
11243 when FTP RETR failed.
11245 - Made the FTP upload tests run fine on machines with IPv6 enabled.
11249 Daniel (19 September 2001)
11250 - Vojtech Minarik set up a special-purpose test server and provided me with
11251 test certificates in order for me to repeat the bug reports #440068 and
11252 #440373. It turned out we didn't check all the error codes properly. We do
11253 now, and connecting with a unacceptable certificate will make libcurl fail
11254 to connect with an error code returned.
11256 - Ramana Mokkapati found a case when the Location: following code did wrong.
11257 I wrote a test case for this (45).
11261 Daniel (17 September 2001)
11262 - Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
11267 - libtool 1.4.2 is now in use!
11271 Daniel (14 September 2001)
11272 - Added another 14 ftp tests.
11274 Daniel (13 September 2001)
11275 - Added curl_easy_duphandle() to the easy.h header file. It has now been
11276 tested and proved to work in a real-world tests by T Bharath. We still need
11277 to write up some docs for this function.
11279 - Added four more ftp tests to the test suite.
11281 Daniel (12 September 2001)
11282 - CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
11283 --ciphers. Use them to specify a list of ciphers to use in the SSL
11286 - T. Bharath found a memory leak in libcurl's windows version. It turned out
11287 to be the new duphandle() that didn't quite work yet.
11291 Daniel (11 September 2001)
11292 - Added verbose output for SSL connections that output the server
11293 certificate's start and expire dates. As suggested by Paul Harrington.
11295 - Heikki Korpela found problems in the perl ftp server used for the test
11296 suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
11297 made, but nothing really certain.
11299 - T. Bharath has experienced problems with libcurl's stack usage on windows
11300 and works on reducing it.
11302 Daniel (10 September 2001)
11303 - Cris Bailiff fixed the perl interface. It stopped working since the changed
11304 behavior with WRITEHEADER and NULL pointers.
11306 - The "output cookies" function could dump core if no cookies were enabled.
11308 Daniel (7 September 2001)
11309 - SM pointed out that the SSL code didn't compile any longer if SSL was
11310 disabled... Also, we needed to correct the #include for the utime stuff on
11313 Daniel (6 September 2001)
11314 - T. Bharath pointed out a flaw in the SSL session cache code that made it
11315 sometimes read from a NULL pointer.
11319 Daniel (3 September 2001)
11320 - Added the -R/--remote-time option, that uses the remote file's datestamp to
11321 set the local file's datestamp. Thus, when you get a remote file your local
11322 file will get the same time and date. Note that this only works when you use
11325 - Installed libtool 1.4.1, libtoolized and everything.
11327 Daniel (1 September 2001)
11328 - Heikki Korpela pointed out that I did not ship the proper libtool stuff in
11329 the pre-releases, even though that was my intention. libtoolize has now
11332 - Heikki also patched away the bad use of 'make -C' in the test suite
11333 makefile. make -C is not very portable and is now banned from here.
11337 Daniel (31 August 2001)
11338 - I just made a huge internal struct rehaul, and all the big internally used
11339 structs have been renamed, redesigned and stuff have been moved around a bit
11340 to make the source easier to follow, more logically grouped and to hopefully
11341 decrease future bugs. I also hope that this will make new functions to get
11342 easier to add, and make it less likely that we have bugs left like the URL-
11343 free bug from August 23.
11347 Daniel (29 August 2001)
11348 - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
11349 that to specify the file name in which you want to have all cookies curl
11350 knows of, dumped to. It'll be written using the netscape cookie format.
11352 This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
11353 which in turn dumps this information when curl_easy_cleanup() is invoked.
11354 There might be reasons to re-consider my choice of putting it there. Perhaps
11355 it is better placed to get done just before *_perform() is done. It is all
11356 of course depending on how you guys want to use this feature...
11358 - Added ftpupload.c in the source examples section, based on source code posted
11361 Daniel (28 August 2001)
11362 - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
11363 on OpenBSD and hopefully on FreeBSD as well!
11365 - Georg Huettenegger modified the curl_formadd() functionality slightly, and
11366 added support for error code 417 when doing form post and using the Expect:
11367 header. Great work!
11369 - Made some tests with cached SSL session IDs, and they seem to work. There
11370 should be a significant speed improvement in the SSL connection phase, but
11371 in my tiny tests it just isn't possible to notice any difference. Like other
11372 caching in libcurl, you must reuse the same handle for the caching to take
11373 effect. SSL session ID caching is done on a per host-name and destination
11376 Set verbose, and you'll get informational tests when libcurl detects and
11377 uses a previous SSL session ID.
11379 - Upgraded to automake 1.5 on my development/release machine.
11381 Daniel (27 August 2001)
11382 - Slowly started writing SSL session ID caching code
11384 Daniel (24 August 2001)
11385 - T. Bharath removed compiler warnings on windows and updated the MS project
11388 - Kevin Roth reported two kinds of command line constructs with the new -G that
11389 curl didn't really deal with the way one would like.
11391 - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
11392 own portable version named strequal() that should be used!
11394 - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
11395 debug object modules causing confusions.
11397 Daniel (23 August 2001)
11398 - T. Bharath accurately found a libcurl bug that would happen when doing a
11399 second invoke of curl_easy_perform() with a new URL when the previous invoke
11400 followed a Location: header.
11402 - Started the improvement work on the cookie engine:
11403 - Now keeps cookies in the same order as the cookie file
11404 - A write to the possibly static string was removed
11405 - Added a function that can output all cookies
11406 - Now supports reading multiple cookie files
11408 - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
11410 - Split up the monster function in lib/ftp.c to use more smallish functions to
11411 increase readability and maintainability.
11413 Daniel (21 August 2001)
11414 - Georg Huettenegger's big patch was applied. Now we have:
11415 o "Expect: 100-continue" support. We will from now on send that header in
11416 all rfc1867-posts, as that makes us abort much faster when the server
11417 rejects our POST. Posting without the Expect: header is still possible in
11418 the standard replace-internal-header style.
11419 o curl_formadd() is a new formpost building function that is introduced to
11420 replace the now deprecated curl_formparse() function. The latter function
11421 will still hang around for a while, but the curl_formadd() is the new way
11422 and correct way to build form posts.
11423 o Documentation has been updated to reflect these changes
11425 These changes are reason enough to name the next curl release 7.9...
11427 - We now convert man pages to HTML pages and include them in the release
11428 archive. For the pleasure of everyone without nroff within reach.
11430 - Andrés GarcÃa's suggested flushing of the progress meter output stream was
11431 added. It should make the progress meter look better on Windows.
11433 - Troy Engel pointed out a mistake in the configure script that made it fail
11434 on many Red Hat boxes!
11436 Daniel (20 August 2001)
11437 - We need an updated libtool to make a better build environment for OpenBSD
11442 Daniel (20 August 2001)
11443 - Brad pointed out that we ship two extra libtool files in the tarballs that
11444 we really don't need to! Removing them makes the gz-archive about 60K
11447 - Albert Chin brought fixes for the configure script to detect socklen_t
11448 properly as well as moving lots of our custom autoconf macros to
11451 Daniel (19 August 2001)
11452 - Moonesamy improved his -G feature for host names only URLs...
11454 Daniel (17 August 2001)
11455 - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
11456 symbols and to not use global variables.
11460 Daniel (16 August 2001)
11461 - S. Moonesamy added the -G option to curl, that converts the data specified
11462 with -d to a GET request. Default action when using -d is POST. When -G is
11463 used, the -d specified data will be appended to the URL with a '?'
11464 separator. As suggested previously by Kevin Roth.
11466 - curl-config --libs should now display all linker options required to link
11467 with libcurl. It includes the path and options for libcurl itself.
11468 curl-config --cflags displays the compiler option(s) needed to compile
11469 source files that use libcurl functions. Basically, that sets the include
11472 Daniel (15 August 2001)
11473 - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
11474 were parsed and used. (RFC2732-format)
11476 - Bug #12733 over on php.net identified a problem in libcurl that made it core
11477 dump if you used CURLOPT_POST without setting any data to post with
11478 CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
11479 now equals setting it to no data at all.
11481 - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
11482 properly when used for multiple URLs on a single command line. Indeed, the
11483 variable was not reset between the requests. This is now fixed.
11485 - David James fixed the Borland makefile so that libcurl still compiles and
11486 builds with that compiler.
11488 Daniel (14 August 2001)
11489 - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
11491 - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
11492 windows users to curl_global_init(), that makes libcurl init the winsock
11493 stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
11494 with this is a comfortable shortcut to fame.
11498 Daniel (14 August 2001)
11499 - Nico Baggus provided more feedback from his VMS porting efforts and a few
11500 minor changes were necessary.
11502 - I modified configure.in so that --enable-debug sets more picky gcc options.
11503 I then removed almost all the new warnings that appeared, and by doing so I
11504 corrected the size_t-treated-as-signed problem that has been discussed on
11505 the mailing list previously. I also removed a bunch of the just recently
11506 added #ifdef VMS lines.
11508 - I removed the use of a global variable in the SSL code. It was once
11509 necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
11510 (hopefully) still work if libcurl is built against an ancient version of
11513 Daniel (13 August 2001)
11514 - Peter Todd posted a patch that now allows non-file rc1867-style form posts
11515 to be larger than 4K.
11517 Daniel (10 August 2001)
11518 - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
11520 Daniel (9 August 2001)
11521 - The redirected error stream was closed before the curl_easy_cleanup() call
11522 was made, and when VERBOSE was enabled, the cleanup function tried to use
11523 the stream. It could lead to a segmentation fault. Also, the stream was
11524 closed even if we looped to get more files. Corrects Dustin Boswell's bug
11527 - Now generates the release configure script with autoconf 2.52
11531 Daniel (8 August 2001)
11532 - curl -E uses a colon to separate a file name from a passphrase. This turned
11533 out really bad for the windows people who wants to include a drive letter in
11534 the file name like "c:\cert.pem". There's now a win32 work-around
11535 implemented that tries work around that, when the colon seems to be used for
11536 this kind of construct.
11538 - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
11539 verify the server's CN field when talking https://. If --cacert is not used,
11540 any failures in matching is only displayed as information (-v).
11542 Daniel (7 August 2001)
11543 - Wrote up nine more test cases, more or less converted from the former test
11546 Daniel (6 August 2001)
11547 - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
11548 directory in which libcurl itself is installed in. While this wasn't my
11549 initial intention with this option, it makes sense and makes linking with
11552 - Stefan Ulrich pointed out to us that other tools and libraries treat file://
11553 URLs with only one slash after the host name slighly different than libcurl
11554 does. Since all the others seem to agree, we better follow them.
11556 - Nico Baggus provided us with a huge set of fixes to make curl compile and
11557 build under OpenVMS.
11561 Daniel (6 August 2001)
11562 - Jonathan Hseu noticed that you couldn't get a header callback unless you
11563 set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
11564 data. This is now fixed.
11566 Daniel (5 August 2001)
11567 - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
11568 1.5.x servers, as they return really screwed up response headers when asked
11571 - curl_escape() no longer treats already encoded characters in the input
11574 Daniel (3 August 2001)
11575 - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
11576 avoid the BSD annoucement clause of the license in the former file.
11578 - Andrew Francis provided a new version of base64.c to work around the license
11579 boiler plate that came with the previous one. I patched it, but the glory
11580 should go to Andrew for his heads up.
11582 - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
11583 couldn't always reliably change HTTP request. This has now been fixed and a
11584 new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
11585 requestr (back) to GET.
11587 - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
11588 release archives. It should be now.
11590 Daniel (2 August 2001)
11591 - Frank Keeney pointed out a manual mistake for certificate convertions.
11593 - Tomasz Lacki pointed out a problem in the transfer loop that could make the
11594 select() loop use far too much CPU.
11596 - Pawel A. Gajda pointed out an output mistake done when using libcurl's
11599 Daniel (29 June 2001)
11600 - Naveen Noel noticed that the Borland library makefile wasn't updated.
11602 - Nic Roets brought a fix for the certificate verification when using SSL.
11604 Daniel (27 June 2001)
11605 - Made the FTP tests run OK even on machines running curl IPv6-enabled.
11607 - Troy Engel corrected some RPM package details.
11611 Daniel (25 June 2001)
11612 - Björn Stenberg correctly identified a problem that occurred when downloading
11613 several files with curl, and using resume. The first file's resume index was
11614 then used for all files, resulting in weird results...
11616 - Anton Kalmykov provided a fix that makes curl work with form field names
11617 with spaces like when -F is used.
11621 Daniel (20 June 2001)
11622 - Mike Bytnar provided a fine report that proved that the --with-ssl option
11623 for configure needed tweaking. It no longer searches the default directories
11624 for OpenSSL libs or directories when a specified path is given.
11626 Daniel (19 June 2001)
11627 - When an FTP transfer is cut off during transfer, curl could present a truly
11628 garbaged error message and in worst case dump core. Thanks to detailed
11629 reports from Shawn Poulson we nailed this.
11631 Daniel (12 June 2001)
11632 - Salvador Dávila provided a fix for FTP range downloads.
11634 - Added a few more test cases from the former test suite to the new file
11635 format. We're now at a total of 26 tests.
11637 Daniel (11 June 2001)
11638 - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
11641 Daniel (7 June 2001)
11642 - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
11644 - I made SSL certificate failure messages to be more detailed.
11648 Daniel (7 June 2001)
11649 - SDavila provided a resumed download fix.
11653 Daniel (1 June 2001)
11654 - Sterling provided some new PHP examples.
11656 - Changed the CVS hierarchy and the older checkout instruction does no longer
11657 work. We moved the entire source code into a CVS module named 'curl'.
11659 Daniel (31 May 2001)
11660 - CURLOPT_MUTE does not exist anymore. It is still present in the include file
11661 to not cause compiler errors for applications using it, but it isn't used
11662 anywhere in the library.
11666 Daniel (31 May 2001)
11667 - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
11670 - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
11671 curl_global_init() now lets the argument flags *SET* what parts to
11672 init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
11673 known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
11674 necessary. Man page updated accordingly.
11676 - Fixed the strtok.h include file as it wouldn't compile on all platforms!
11678 Daniel (30 May 2001)
11679 - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
11680 set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
11681 option is subject for complete removal...
11685 Daniel (30 May 2001)
11686 - Cris Bailiff wrote a makefile for building Solaris packages.
11688 - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
11689 we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
11691 - Kjetil Jacobsen privately announced his python interface to libcurl,
11692 available at http://pycurl.sourceforge.net/
11694 Daniel (29 May 2001)
11695 - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
11696 safe function. Now configure checks for a thread-safe version, and
11697 lib/strtok.c offers one for the systems that don't come with one included!
11699 - Mettgut Jamalla correctly pointed out that the -# progress bar was written
11700 to stderr even though --stderr redirection was used. This is now corrected.
11702 - I moved out the list of contributors from the curl.1 man page and made a
11703 separate docs/THANKS file. It makes the list easier to find, and made it
11704 easier for me to make a separate web page with that same information.
11706 I really do want all you guys mentioned in there to feel you get the credit
11709 - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
11713 Daniel (28 May 2001)
11714 - curl-config now supports '--vernum' that outputs a plain hexadecimal version
11715 of the libcurl version number (using 8 bits for each 3 numbers). Version
11716 7.7.4 appears as 070704
11718 - Wrote man pages for curl_global_init and curl_global_cleanup...
11720 - T. Bharath brought news about the usage of the OpenSSL interface that was
11721 not previously taken into consideration and thus caused libcurl to leak
11722 memory. The only somewhat sane approach to fix this dilemma, is adding two
11723 two new functions curl_global_init() and curl_global_cleanup() that should
11724 be called *ONCE* by the application using libcurl. The init should be done
11725 only at startup, no matter how many threads the application is gonna use,
11726 and the cleanup should be called when the application has finished using
11727 libcurl completely.
11729 *** UPGRADE NOTICE ***
11731 If you write applications using libcurl, you really want to use the two
11732 functions mentioned above !!!
11734 I can't say I think this is a very beautiful solution, but as OpenSSL
11735 insists on making lots of stuff on a "global" scope, we're forced to walk
11736 the path they point us to.
11738 - Moving more test cases into the new file format.
11742 Daniel (23 May 2001)
11743 - Introduced a new file format for storing test cases, and thus I had to
11744 modify all the perl test scripts and more (I added a new one). I have not
11745 "ported" all the old test cases to the new format yet, but it'll come.
11747 The main advantage of this new format is that all test data for each test
11748 case is stored in a single file. It gives a better overview for each test
11749 case and a lot less files.
11751 - Andrés GarcÃa brought a fix for the netscape/mozilla cookie file parsing
11752 function, as it turns out it doesn't always store the path!
11754 Daniel (22 May 2001)
11755 - As was reported anonymously, when FAILONERROR was used, the httpcode was
11756 not stored properly and thus wasn't possibly to read after a transfer with
11757 the curl_easy_getinfo() function. This is now corrected.
11759 - Installed and made use of the following tool versions:
11764 I wouldn't recommend any developer to try to generate things with older
11765 versions than these. Building from CVS will probably more or less require
11766 at least these versions.
11768 As a result of this, the configure script grew to more than double its
11771 Arkadiusz Miskiewicz helped me by pointing out I had to remove my
11772 acinclude.m4 file before I could get it working!
11774 Daniel (21 May 2001)
11775 - I made ftps:// work. Added test case 400 to the release archive, as the
11776 first ftps:// test case. Requires stunnel.
11778 - Also made the test cases that runs ssl tests not run if libcurl isn't built
11781 Daniel (19 May 2001)
11782 - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
11783 are actually needed. Albert Chin's and Domenico Andreoli's suggestions
11788 Daniel (18 May 2001)
11789 - Nicer configure-check for the OpenSSL headers, which then sets the proper
11790 variable to have curl-config be good. (Albert Chin provided the fix)
11792 - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
11793 It was now renamed to prevent collides with other libs. (After discussions
11794 with Sterling Hughes and the implications this had on PHP builds.)
11796 Daniel (17 May 2001)
11797 - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
11798 turned out to be a problem with the debian-built 7.7.3-package that
11799 contained files from the 7.7.2 release!
11801 - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
11802 make programs that use it, not fail when compiling against this version of
11805 Daniel (14 May 2001)
11806 - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
11811 Daniel (14 May 2001)
11812 - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
11814 - Added the first HTTPS test to the test suite in the release archive.
11816 Daniel (12 May 2001)
11817 - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
11818 certificate and the peer can't be verified, it should fail and return a
11819 proper error code. I added a brand new error code named
11820 CURLE_SSL_PEER_CERTIFICATE for this purpose.
11822 Daniel (11 May 2001)
11823 - As was discussed with Frederic Lepied a while ago, I now made libcurl not
11824 return error even though no data was transfered on upload/download resume
11825 when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
11826 from the header file to make any implemenator that uses that to be aware of
11827 the fact that it can't be returned anymore!
11829 - Improved general header-parsing to better allow white spaces and more.
11831 - Rodney Simmons proved the fix I did yesterday was bad and I had to post
11834 - Ingo Wilken patched away two redirect problems more!
11836 Daniel (10 May 2001)
11837 - Cris Bailiff correctly noted that the space-after-header problem with
11838 Location: is present on several other places in the libcurl sources.
11840 - Ingo Wilken patched away a problem libcurl had when following Location:
11841 headers with an extra space after the colon.
11843 - Rodney Simmons found out that multiple FTP transfers did not treat relative
11844 directories correctly.
11846 Daniel (9 May 2001)
11847 - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
11848 makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
11849 returned error. Starting now, it just don't output the file size instead.
11850 Anonymous bug report.
11852 - stunnel.pm was accidentally left out from the release archive, it is now
11853 added (stunnel is needed to run the https-tests in the test suite)
11855 Daniel (7 May 2001)
11856 - Corrected two minor compiler warnings due to the FILE * to void * conversion
11857 that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
11858 filed a bug report on this.
11862 Daniel (4 May 2001)
11863 - All callback functions now take 'void *' instead of 'FILE *'. This is made
11864 this way to make it more obvious to people that anything can be passed to
11865 them (by using the apropriate option). After discussions with Sterling
11868 Daniel (3 May 2001)
11869 - Cris Bailiff fixed a chunked transfer encoding problem with persistent
11870 connection that made libcurl fail if the persistent connection used mixed
11871 chunked and non-chunked transfers.
11873 - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
11874 treated as content-length 0 replies but would cause a "hang" until the
11875 server timed-out and closed the connection.
11877 - Brad Burdick found a minor problem in the docs/examples/Makefile.am
11879 Daniel (27 April 2001)
11880 - Updated the INTERALS document again. It was lagging a bit. I think I made it
11881 more easy to follow now as well.
11883 - Brad Burdick found a problem with persistent connections when curl received
11884 a "Content-Length: 0" header.
11886 - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
11887 compiled/built on win32. It seems to work for unixes though!
11889 - Dave Hamilton reported weird problems with CURL/PHP that I really can't
11890 explain at the moment. I'm hoping on some help from the PHP crew.
11892 Daniel (26 April 2001)
11893 - I rewrote the FTP command response function. I had to do it to make ftps
11894 work, as the OpenSSL read()-function didn't work the same way the normal
11895 unix read() does, but it was also a huge performance boost. Previously the
11896 function read one byte at a time, now it reads very large chunks, and it
11897 makes a notable speed difference.
11899 Daniel (25 April 2001)
11900 - Connection re-use when not using a proxy didn't work properly for
11901 non-default port numbers.
11903 Daniel (24 April 2001)
11904 - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
11905 data transfer, which causes the transfer to 'hang'... We need to fix this.
11907 - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
11908 the alredy written perl servers easily.
11910 Daniel (23 April 2001)
11911 - The OpenSSL version string recently modified didn't zero terminate one
11912 of the generated strings properly, which could lead to a crash or simply
11913 weird version string output!
11917 Daniel (22 April 2001)
11918 - Rosimildo da Silva updated the Makefiles for Borland/Windows.
11920 - Eric Rautman pointed out a problem with persistent connections that would
11921 lead to broken Host: headers in the second HTTP request.
11923 Daniel (20 April 2001)
11924 - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
11925 a 'libcurl overview' man page.
11927 - Spell-fixed some documents.
11929 - S. Moonesamy corrected mistakes in the man page.
11931 - Cris Bailiff fixed the curl_slists options in the perl interface, present
11932 separately in the Curl::easy 1.1.4 package.
11934 Daniel (19 April 2001)
11935 - Linus Nielsen Feltzing removed the decimals from the size variables in the
11936 --write-out output. We hardly ever get fraction of bytes! :-)
11940 Daniel (19 April 2001)
11942 - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
11944 Daniel (18 April 2001)
11945 - Input from Michael Mealling made me add --feature to curl-config. It
11946 displays a list of features that have been built-in in the current
11947 libcurl. The currently available features that can be listed are: SSL, KRB4
11950 - I committed Cris and Georg's perl interface work. They've got callbacks
11951 working and options that receives those slist pointers.
11953 - Puneet Pawaia detected a problem with resumed downloads that use persistent
11954 connections and I made a rather large writeup to correct this. It is
11955 important that all session-data is stored in the connectdata struct and not
11956 in the main struct as this previously did.
11958 Daniel (17 April 2001)
11959 - Frederic Lepied fixed a ftp resumed download problem and introduced a new
11960 error code that lets applications be able to detect when a resumed download
11961 actually didn't download anything since the whole file is already present.
11962 Should this return OK instead?
11964 - I added 'curl-config.in' to the root dir and configure script. Now, a
11965 curl-config script is made when curl is built. The script can be used to
11966 figure out compile time options used when libcurl was built, which in turn
11967 should be options YOU should use to build applications that use libcurl.
11969 This *-config style is not a new idea, but something that has been used
11970 successfully in other (library based) projects.
11972 - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
11973 for the If-Modified-Since style headers.
11975 - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
11976 for curl to build on Ultrix.
11978 Daniel (11 April 2001)
11979 - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
11980 of the environment variable HTTP_PROXY in uppercase may become a security
11981 hazard when people use libcurl in a server/cgi situation where the server
11982 sets the HTTP_*-variables according to incoming headers in the HTTP
11983 request. Thus, a "Proxy:"-header would set that environment variable!
11985 Then, invoking curl_easy_perform() without having an URL set caused a crash.
11987 - S. Moonesamy brought a patch that make curl use non-blocking connects on
11988 windows when connection timeout is set, as it allows windows users to set
11991 - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
11993 - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
11995 - I've written a first shot at a Java interface to libcurl. Many thanks to
11996 Daniel Marell for tirelessly answering to all my basic Java questions. It
11997 works, but it is still very basic.
11999 Daniel (10 April 2001)
12000 - The progress display could get silly when doing multiple file transfers, as
12001 it wasn't properly reset between transfers!
12003 - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
12004 me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
12005 function for writing headers. Previously you could only set a different FILE
12006 * when headers are written from within libcurl.
12008 Daniel (7 April 2001)
12009 - Andrés GarcÃa fixed a problem in curl_escape() and pointed out a flaw in
12010 the curl_easy_setopt man page.
12012 Daniel (6 April 2001)
12013 - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
12014 change their version define format often...
12016 - curl_formfree() now accepts a NULL pointer without crashing!
12020 Daniel (3 April 2001)
12021 - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
12022 read bad memory during situations when an (ftp) connection attempt failed.
12023 Also, the lib/Makefile.vc6 was corrected.
12025 - More investigations in the Location: following code made me realize that
12026 it was not clean enough to work transparantly with persistent and non-
12027 persistent connections. I think I've fixed it now.
12029 Daniel (29 March 2001)
12030 - Georg Horn mailed me some corrections for the Curl::easy perl interface.
12032 - Experimental ftps:// support added. It is basically FTP over SSL for the
12033 control connection. It still makes all data transfers going over unencrypted
12034 connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
12035 that to verify the functionality.
12037 Daniel (27 March 2001)
12038 - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
12039 to get a file from a site and it fails, the SIGALRM would still be sent
12040 after the timeout-time, quite inexpectedly!
12042 - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
12043 example makefile that can be used as a start when building one of the
12046 Version 7.7.1-beta1
12048 Daniel (26 March 2001)
12049 - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
12050 connections (when the server replied a Connection: Keep-Alive) and this
12051 problem was not properly dealt with in 7.7 either. A patch was posted to the
12052 curl-and-php mailing list.
12054 Daniel (24 March 2001)
12055 - Colin Watson reported about a problem and brought a patch that corrected it,
12056 which was about the man page and lines starting with a single quote (') in a
12057 way that gnroff doesn't like.
12059 Daniel (23 March 2001)
12060 - Peter Bray reported correctly that the root makefile used make instead of
12061 $(MAKE) for the test target.
12063 - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
12064 curl_setopt() which was removed in 7.7!
12066 - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
12068 - When following a Location:, libcurl would sometimes write to the URL string
12069 in a way it shouldn't. As the pointer is passed-in to libcurl from an
12070 application, we can't be allowed to write to it. The particular bug report
12071 from 'nk' that brought this up was because he had a read-only URL that then
12072 caused a libcurl crash!
12074 - No longer reads HEAD responses longer than to the last header. Previously,
12075 curl would read the full reply if the connection was a "close" one.
12077 - libcurl did re-use connections way too much. Doing "curl
12078 http://www.{microsoft,ibm}.com" would make it re-use the connection which
12079 made the second request return very odd results.
12081 Daniel (22 March 2001)
12082 - Edin Kadribasic made me aware that curl should not re-send POST requests
12083 when following 302-redirects. I made 302 work like 303 which means curl uses
12084 GET in the following request(s).
12086 - libcurl now reset the "followed-location" counter on each invoke of
12087 curl_easy_perform() as it otherwise would sum up all redirects on the same
12088 connection and thus could reach the maxredirs counter wrongly.
12090 - Jim Drash suggested curl_escape() should not re-encode what already looks
12091 like an encoded sequence and I think that's a fair suggestion.
12095 Daniel (22 March 2001)
12096 - The configure script now fails with an error message if gethostbyname_r() is
12097 detected but it couldn't figure out how to invoke it (what amount of
12098 arguments it is supposed to get). Reports from Andrés GarcÃa made me aware
12101 - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
12102 functions in the curl.h include file and write man pages for them. The
12103 escape function was modified to use the same interface as the unescape one
12106 - No bug reports at all on the latest betas. Release time coming up.
12110 Daniel (19 March 2001)
12111 - Georg Ottinger reported problems with using -C together with -L in the sense
12112 that the -C info got lost when it was redirected. I could not repeat this
12113 problem on the 7.7 branch why I leave this for the moment. Test case 39 was
12114 added to do exactly this, and it seems to do right.
12116 - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
12117 form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
12118 engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
12119 and POST operations that I need to add support for. Section 8.2.3 in RFC2616
12120 has all the details. Seems to work now!
12122 Daniel (16 March 2001)
12123 - After having experienced another machine break-down, we're back.
12125 - Georg Horn's perl interface Curl::easy is now included in the curl release
12126 archive. The perl/ directory is now present. Please help me with docs,
12127 examples and updates you think fit.
12129 - Made a new php/ directory in the release archive and moved the PHP examples
12130 into a subdirectory in there. Not much PHP info yet, but I plan to. Please
12131 help me here as well!
12133 - Made libcurl return error if a transfer is aborted in the middle of a
12134 "chunk". It actually enables libcurl to discover premature transfer aborts
12135 even if the Content-Length: size is unknown.
12137 Daniel (15 March 2001)
12138 - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
12139 option in libcurl. It limits the time curl is allowed to spend in the
12140 connection phase. This differs from -m/--max-time that limits the entire
12141 file transfer operation. Requested by Larry Fahnoe and others.
12143 I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
12144 item from the TODO.
12148 Daniel (14 March 2001)
12149 - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
12150 again when ENABLE_IPV6 is set.
12152 I need to remake things in the test suite. I can't test the FTP parts with
12153 curl built for IPv6 as it uses a different set of FTP commands then!
12155 - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
12156 a report meant for our project. Anyway, it said the .netrc parsing didn't
12157 work as supposed, and as I agreed with Lars, I made the netrc parser use
12158 getpwuid() to figure out the home directory of the effective user and try
12159 that netrc. It still uses the environment variable HOME for those that don't
12160 have that function or if the user doesn't return valid pwd info.
12162 - Edin Kadribaic posted a bug report where he got a crash when a fetch with
12163 user+password in the URL followed a Location: to a second URL (absolute,
12164 without name+password). This bug has been around for a long while and
12165 crashes due to a read at address zero. Fixed now. Wrote test case 38, that
12168 - Modified the test suite's httpserver slightly to append all client request
12169 data to its log file so that the test script now better can verify a range
12170 of requests and not only the last one, as it did previously.
12172 - Updated the curl man page with --random-file and --egd-file details.
12176 Daniel (14 March 2001)
12177 - Björn Stenberg provided similar fixes as Jörn did and some additional patches
12178 for non-SSL compiles.
12180 - I increased the interface number for libcurl as I've removed the low level
12181 functions from the interface. I also took this opportunity to rename the
12182 Curl_strequal function to curl_strequal and Curl_strnequal to
12183 curl_strnequal, as they're public libcurl functions (even if they're still
12186 This will make older programs not capable of using the new libcurl with
12187 just a drop-in replacement.
12189 - Jörn Hartroth updated stuff for win32 compiles:
12190 o config-win32.h was fixed for socklen_t
12191 o lib/ssluse.c had a bad #endif placement
12192 o lib/file.c was made to compile on win32 again
12193 o lib/Makefile.m32 was updated with the new files
12194 o lib/libcurl.def matches the current interface state
12196 Daniel (13 March 2001)
12197 - It only took an hour or so before Jörn Hartroth found a problem in the
12198 chunked transfer-encoding. Given his fine example-site, I could easily spot
12199 the problem and when I re-read the spec (the part I have pasted in the top
12200 of the http_chunks.h file), I realized I had made my state-machine slightly
12201 wrong and didn't expect/handle the trailing CRLF that comes after the data
12202 in each chunk (and those extra two bytes sure feel wasted).
12204 Had to modify test case 34 to match this as well.
12208 Daniel (13 March 2001)
12209 - Added the policy stuff to the curl_easy_setopt man page for the two supported
12212 - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
12213 CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
12214 supported, and the "least recently used" is used as default if no policy
12217 Daniel (12 March 2001)
12218 - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
12219 SSL random engine. The random seeding support was also brought to the curl
12220 client with the new options --random-file <file> and --egd-file <file>. I
12221 need some people to really test this to know they work as supposed. Remember
12222 that libcurl now informs (if verbose is on) if the random seed is considered
12223 weak (HTTPS connections).
12225 - Made the chunked transfer-encoding engine detected bad formatted data length
12226 and return error if so (we can't possibly extract sensible data if this is
12227 the case). Added a test case that detects this. Number 36. Now there are 60
12230 - Added 5 new libcurl options to curl/curl.h that can be used to control the
12231 persistent connection support in libcurl. They're also documented (fairly
12232 thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
12233 implemented, although not really tested at this point... Anyway, the new
12234 implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
12235 CURLOPT_FORBID_REUSE. The ones still left to write code for are:
12236 CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
12238 - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
12239 connection support by re-using the same curl handle for every specified file
12240 transfer and after some more test case tweaking we have 100% test case OK.
12241 I made some test cases return HTTP/1.0 now to make sure that works as well.
12243 - Had to add 'Connection: close' to the headers of a bunch of test cases so
12244 that curl behaves "old-style" since the test http server doesn't do multiple
12245 connections... Now I get 100% test case OK.
12247 - The curl.haxx.se site, the main curl mailing list and my personal email are
12248 all dead today due to power blackout in the area where the main servers are
12251 - I've made persistance work over a squid HTTP proxy. I find it disturbing
12252 that it uses headers that aren't present in any HTTP standard though
12253 (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
12254 the standard actually defines. I need to get this code excercised on a lot
12255 of different HTTP proxies before I feel safe.
12257 Now I'm facing the problem with my test suite servers (both FTP and HTTP)
12258 not supporting persistent connections and libcurl is doing them now. I have
12259 to fix the test servers to get all the test cases do OK.
12261 Daniel (8 March 2001)
12262 - Guenole Bescon reported that libcurl did output errors to stderr even if
12263 MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
12264 there's an error and no ERRORBUFFER is set. This is now corrected.
12268 Daniel (8 March 2001)
12269 - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
12270 added two source files and I've run some test downloads that look fine.
12272 - HTTP HEAD works too, even on 1.1 servers.
12274 Daniel (5 March 2001)
12275 - The current 57 test cases now pass OK. It would suggest that libcurl works
12276 using the old-style with one connection per handle. The test suite doesn't
12277 handle multiple connections yet so there are no test cases for this.
12279 - I patched the telnet.c heavily to not use any global variables anymore. It
12280 should make it a lot nicer library-wise.
12282 - The file:// support was modified slightly to use the internal connect-first-
12285 Daniel (4 March 2001)
12286 - More bugs erased.
12290 Daniel (4 March 2001)
12291 - Now, there's even a basic check that a re-used connection is still alive
12292 before it is assumed so. A few first tests have proven that libcurl will
12293 then re-connect instead of re-use the dead connection!
12295 Daniel (2 March 2001)
12296 - Now they work intermixed as well. Major coolness!
12298 - More fiddling around, my 'tiny' client I have for testing purposes now has
12299 proved to download both FTP and HTTP with persistent connections. They do
12300 not work intermixed yet though.
12302 Daniel (1 March 2001)
12303 - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
12304 curl_slist_append() should take a const char * as second argument. It does
12307 Daniel (22 February 2001)
12308 - The persistent connections start to look good for HTTP. On a subsequent
12309 request, it seems that libcurl now can pick an already existing connection
12310 if a suitable one exists, or it opens a new one.
12312 - Douglas R. Horner mailed me corrections to the curl_formparse() man page
12315 Daniel (20 February 2001)
12316 - Added the docs/examples/win32sockets.c file for our windows friends.
12318 - Linus Nielsen Feltzing provided brand new TELNET functionality and
12321 * Negotiation is now passive. Curl does not negotiate until the peer does.
12322 * Possibility to set negotiation options on the command line, currently only
12323 XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
12324 * Now sends the USER environment variable if the -u switch is used.
12325 * Use -t to set telnet options (Linus even updated the man page, awesome!)
12327 - Haven't done this big changes to curl for a while. Moved around a lot of
12328 struct fields and stuff to make multiple connections get connection specific
12329 data in separate structs so that they can co-exist in a nice way. See the
12330 mailing lists for discussions around how this is gonna be implemented. Docs
12331 and more will follow.
12333 Studied the HTTP RFC to find out better how persistent connections should
12334 work. Seems cool enough.
12336 Daniel (19 February 2001)
12337 - Bob Schader brought me two files that help set up a MS VC++ libcurl project
12338 easier. He also provided me with an up-to-date libcurl.def file.
12340 - I moved a bunch of prototypes from the public <curl/curl.h> file to the
12341 library private urldata.h. This is because of the upcoming changes. The
12342 low level interface is no longer being planned to become reality.
12344 Daniel (15 February 2001)
12345 - CURLOPT_POST is not required anymore. Just setting the POST string with
12346 CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
12347 libcurl already works this way, i.e they require only the parameter to
12348 switch on a feature so I think this works well with the rest. Setting a NULL
12349 string switches off the POST again.
12351 - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
12352 Reese helped me define a way how to incorporate persistent connections into
12353 libcurl in a very smooth way. If done right, no change may have to be made
12354 to older programs and they will just start using persistent connections when
12357 Daniel (13 February 2001)
12358 - Changed the word 'timeouted' to 'timed out' in two different error messages.
12359 Suggested by Larry Fahnoe.
12363 Daniel (9 February 2001)
12364 - Frank Reid and Cain Hopwood provided information and research around a HTTPS
12365 PUT/upload problem we seem to have. No solution found yet.
12367 Daniel (8 February 2001)
12368 - An interesting discussion is how to specify an empty password without having
12369 curl ask for it interactively? The current implmentation takes an empty
12370 password as a request for a password prompt. However, I still want to
12371 support a blank user field. Thus, today if you enter "-u :" (without user
12372 and password) curl will prompt for the password. Tricky. How would you
12373 specify you want the prompt otherwise?
12375 - Made the netrc parse result possible to use for other protocols than FTP and
12376 HTTP (such as the upcoming TELNET fixes).
12378 - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
12380 - Added a HTTP file upload code example in the docs/examples/ section on
12383 - Adjusted the FTP response fix slightly.
12387 Daniel (7 February 2001)
12388 - S. Moonesamy found a flaw in the response reading function for FTP that
12389 could make libcurl not get out of the loop properly when it should, if
12390 libcurl got -1 returned when reading the socket.
12392 - I found a similar mistake in http.c when using a proxy and reading the
12393 results from the proxy connection.
12395 Daniel (6 February 2001)
12396 - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
12397 for the debug build to work.
12399 - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
12400 brought up yesterday.
12402 Daniel (5 February 2001)
12403 - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
12404 a bunch of different areas within libcurl.
12406 - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
12407 the 'static' keyword on a number of libcurl functions. I might need to add a
12408 patch that redefines static when libcurl is compiled with that compiler.
12409 How do I know when VC++ compiles, anyone?
12411 Daniel (4 February 2001)
12412 - curl_getinfo() was extended with two new options:
12413 CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
12414 return the full assumed content length of the transfer in the given
12415 direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
12416 size of a HTTP download. Added descriptions to the man page as well. This
12417 was done after discussions with Bob Schader.
12419 Daniel (3 February 2001)
12420 - Ingo Ralf Blum provided another fix that makes curl build under the more
12421 recent cygwin installations. It seems they've changed the preset defines to
12422 not include WIN32 anymore.
12426 Daniel (31 January 2001)
12427 - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
12428 be able to return -1. The telnet support crashed due to this and there was a
12429 possibility to weird behavior all over. Linus Nielsen Feltzing helped me
12432 - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
12433 I also made the configure script feature --enable-debug which sets a couple
12434 of compiler options when used. It assumes gcc.
12436 Daniel (30 January 2001)
12437 - I finally took a stab at the long-term FIXME item I've had on myself, and
12438 now libcurl will properly work when doing a HTTP range-request that follows
12439 a Location:. Previously that would make libcurl fail saying that the server
12440 doesn't seem to support range requests.
12442 Daniel (29 January 2001)
12443 - I added a test case for the HTTP PUT resume thing (test case 33).
12447 Daniel (29 January 2001)
12448 - Yet another Content-Range change. Ok now? Bob Schader checks from his end
12449 and it works for him.
12451 Daniel (27 January 2001)
12452 - So the HTTP PUT resume fix wasn't good. There should appearantly be a
12453 Content-Range header when resuming a PUT.
12455 - I noticed I broke the download-check that verifies that a resumed HTTP
12456 download is actually resumed. It got broke because my new 'httpreq' field
12457 in the main curl struct. I should get slapped. I added a test case for
12458 this now, so I won't be able to ruin this again without noticing.
12460 - Added a test case for content-length verifying when downloading HTTP.
12462 - Made the progress meter title say if the transfer is being transfered. It
12463 makes the output slightly better for resumes.
12465 - When dealing with Location: and HTTP return codes, libcurl will not attempt
12466 to follow the spirit of RFC2616 better. It means that when POSTing to a
12467 URL that is being following to a second place, the standard will judge on
12468 what to do. All HTTP codes except 303 and 305 will cause curl to make a
12469 second POST operation. 303 will make a GET and 305 is not yet supported.
12471 I also wrote two test cases for this POST/GET/Location stuff.
12475 Daniel (26 January 2001)
12476 - Lots of mails back and forth with Bob Schader finally made me add a small
12477 piece of code in the HTTP engine so that HTTP upload resume works. You can
12478 now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
12479 the ending part of the file starting at given offet to the specified URL.
12483 Daniel (25 January 2001)
12484 - I took hold of Rick Jones' question why we don't use recv() and send() for
12485 reading/writing to the sockets and I've now modified the sread() and
12486 swrite() macros to use them instead. If nothing else, they could be tested
12487 in the next beta-round coming right up.
12489 - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
12490 his research results in how to fix this. It turns out we have to invoke the
12491 function several times in some cases. The same goes for the SSL_write().
12493 I made some rather drastic changes all over libcurl to make all writes and
12494 reads get done on one single place so that this repeated-attempts thing
12495 would only have to be implemented at one point.
12497 - Rick Jones spotted that the 'total time' counter really didn't measure the
12498 total time very accurate on subsecond levels.
12500 - Johan Nilsson pointed out the need to more clearly specify that the timeout
12501 value you set for a download is for the *entire* download. There's currently
12502 no option available that sets a timeout for the connection phase only.
12504 Daniel (24 January 2001)
12505 - Ingo Ralf Blum submitted a series of patches required to get curl to compile
12506 properly with cygwin.
12508 - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
12509 that corrected a potential memory leak.
12511 - Added comments in a few files in a sudden attempt to make the sources more
12512 easy to read and understand!
12514 Daniel (23 January 2001)
12515 - Added simple IPv6 detection in the configure script and made the version
12516 string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
12517 set if curl is compiled with IPv6 support enabled.
12519 - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
12520 IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
12522 - Made the URL globbing in the client possible to fail silently if there's an
12523 error in the globbing. It makes it almost intuitive, so when you don't
12524 follow the syntax rules, globbing is simply switched off and the raw string
12527 I still think we'll get problems with IPv6-style IP-addresses when we *want*
12528 globbing on parts of the URL as the initial part of the URL will for sure
12529 seriously confuse the globber.
12531 Daniel (22 January 2001)
12532 - Björn Stenberg supplied a progress meter patch that makes it look better even
12533 during slow starts. Previously it made some silly assumptions...
12535 - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
12536 the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
12538 Daniel (19 January 2001)
12539 - Made the Location: parsers deal with any-length URLs. Thus I removed the last
12540 code that restricts the length of URLs that curl supports.
12542 - Added a --globoff test case (#28) and it quickly identified a memory problem
12543 in src/main.c that I took care of.
12547 Daniel (17 January 2001)
12548 - Made the two former files lib/download.c and lib/highlevel.c become the new
12549 lib/transfer.c which makes more sense. I also did the rename from Transfer()
12550 to Curl_Transfer() in the other source files that use the transfer function
12551 in the spirit of using Curl_ prefix for library-scoped global symbols.
12553 Daniel (11 January 2001)
12554 - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
12555 letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
12556 mention these letters to be escaped. This was posted as a feature request by
12557 Jorge Gutierrez and as a bug by Terry.
12559 - Short options to curl that requires parameters can now be specified without
12560 having the option and its parameter space separated. -ofile works as good as
12561 -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
12562 options only, verbose --long-style options still must be separated with
12563 space from their parameters.
12565 Daniel (8 January 2001)
12566 - Francis Dagenais reported that the SCO compiler still fails when compiling
12567 curl due to that getpass_r() prototype. I've now put it around #ifndef
12568 HAVE_GETPASS_R in an attempt to please the SCO systems.
12570 - Made some minor corrections to get the client to cleanup properly and I made
12571 the separator work again when getting multiple globbed URLs to stdout.
12573 - Worked with Loic Dachary to get the make dist and make distcheck work
12574 correctly. The 'maketgz' script is now using the automake generated 'make
12575 dist' when creating release archives. Loic successfully made 'make rpms'
12576 automatically build RPMs!
12578 Loic Dachary (6 January 2001)
12579 - Automated generation of rpm packages, no need to be root.
12581 - make distcheck generates a proper distribution (EXTRA_DIST
12582 in all Makefile.am modified to match FILES).
12584 Daniel (5 January 2001)
12585 - Huge client-side hack: now multiple URLs are supported. Any number of URLs
12586 can be specified on the command line, and they'll all be downloaded. There
12587 must be a corresponding -o or -O for each URL or the data will be written to
12588 stdout. This needs more testing, time to release a 7.6-pre package.
12590 - The krb4 support was broken in the release. Fixed now.
12592 - Huge internal symbol rename operation. All non-static but still lib-internal
12593 symbols should now be prefixed with 'Curl_' to prevent collisions with other
12594 libs. All public symbols should be prefixed with 'curl_' and the rest should
12595 be static and thus invisible to the outside world. I updated the INTERNALS
12596 document to say this as well.
12600 Daniel (4 January 2001)
12601 - As Kevin P Roth suggested, I've added text to the man page for every command
12602 line option and what happens when you specify that option more than
12603 once. That hasn't been exactly crystal clear before.
12605 - Made the configure script possible to run from outside the source-tree. For
12606 odd reasons I can't build curl properly outside though. It has to do with
12607 curl's dependencies on libcurl...
12609 - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
12610 The older piece is named CHANGES.0 and is added to the CVS repository in
12611 case anyone would need it.
12613 - I added another file 'CVS-INFO' to the CVS. It contains information about
12614 files in the CVS that aren't included in release archives and how to build
12615 curl when you get the sources off CVS.
12617 - Updated CONTRIBUTE and FAQ due to the new license.
12619 Daniel (3 January 2001)
12620 - Renamed README.libcurl to LIBCURL
12622 - Changed headers in all sources files to the new dual license concept of
12623 curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
12624 accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
12626 Daniel (30 December 2000)
12627 - Made all FTP commands get sent with the trailing CRLF in one single write()
12628 as splitting them up seems to confuse at least some firewalls (FW-1 being
12631 Daniel (19 December 2000)
12632 - Added file desrciptor and FILE handle leak detection to the memdebug system
12633 and thus I found and removed a file descriptor leakage in the ftp parts
12634 that happened when you did PORTed downloads.
12636 - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
12638 Daniel (12 December 2000)
12639 - Multiple URL downloads with -O was still bugging. Not anymore I think or
12640 hope, or at least I've tried... :-O
12642 - Francois Petitjean fixed another -O problem
12646 Daniel (11 December 2000)
12647 - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
12648 P Roth found out, at least one CVS client behaved wrongly when it found
12649 different newline conventions within the same file.
12651 - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
12654 Daniel (6 December 2000)
12655 - Massimo Squillace correctly described how libcurl could use session ids when
12656 doing SSL connections.
12658 - James Griffiths found out that curl would crash if the file you specify with
12659 -o is shorter than the URL! This took some hours to fully hunt down, but it
12662 Daniel (5 December 2000)
12663 - Jaepil Kim sent us makefiles that build curl using the free windows borland
12664 compiler. The root makefile now accepts 'make borland' to build curl with
12667 - Stefan Radman pointed out that the test makefiles didn't use the PERL
12668 variable that the configure scripts figure out. Actually, you still need
12669 perl in the path for the test suite to run ok.
12671 - Rich Gray found numerous portability problems:
12672 * The SCO compiler got an error on the getpass_r() prototype in getpass.h
12673 since the curl one differed from the SCO one
12674 * The HPUX compiler got an error because of how curl did the sigaction
12675 stuff and used a define HPUX doesn't have (or need).
12676 * A few more problems remain to be researched.
12678 - Paul Harrington experienced a core dump using https. Not much details yet.
12680 Daniel (4 December 2000)
12681 - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
12685 Daniel (1 December 2000)
12686 - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
12687 build fine with the Microsoft compiler on windows too.
12689 - Fixed the libcurl versioning so that we don't ruin old programs when
12690 releasing new shared library interfaces.
12692 Daniel (30 November 2000)
12693 - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
12696 Daniel (29 November 2000)
12697 - I removed a bunch of '#if 0' sections from the code. They only make things
12698 harder to follow. After all, we do have all older versions in the CVS.
12702 Daniel (28 November 2000)
12703 - I filled in more error codes in the man page error code list that had been
12706 - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
12707 libcurl option. When used, it'll prevent location following more than the
12708 set number of times. It is useful to break out of endless redirect-loops.
12710 Daniel (27 November 2000)
12711 - Added two test cases for file://.
12713 Daniel (22 November 2000)
12714 - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
12715 modified time of the remote document. This is a special option since it
12716 involves an extra set of commands on FTP servers. (Using the MDTM command
12717 which is not in the RFC959)
12719 curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
12720 after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
12721 the time wasn't possible to get.
12723 --head/-I used on a FTP server will now present a 'Last-Modified:' header
12724 if curl could get the time of the specified file.
12726 - Added the option '--cacert [file]' to curl, which allows a specified PEM
12727 file to be used to verify the peer's certificate when doing HTTPS
12728 connections. This has been requested, rather recently by Hulka Bohuslav but
12729 others have asked for it before as well.
12731 Daniel (21 November 2000)
12732 - Numerous fixes the test suite has brought into the daylight:
12734 * curl_unescape() could return a too long string
12735 * on ftp transfer failures, there could be memory leaks
12736 * ftp CWD could use bad directory names
12737 * memdebug now uses the mprintf() routines for better portability
12738 * free(NULL) removed when doing resumed transfers
12740 - Added a bunch of test cases for FTP.
12742 - General cleanups to make less warnings with gcc -Wall -pedantic.
12744 - I made the tests/ftpserver.pl work with the most commonly used ftp
12745 operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
12746 all I have to do is integrate the ftp server doings in the runtests.pl
12747 script so that ftp tests can be run the same way http tests already run.
12749 Daniel (20 November 2000)
12750 - Made libcurl capable of dealing with any-length URLs. The former limit of
12751 4096 bytes was a bit annoying when people wanted to use curl to really make
12752 life tough on a web server. Now, the command line limit is the most annoying
12753 but that can be circumvented by using a config file.
12755 NOTE: there is still a 4096-byte limit on URLs extracted from Location:
12758 - Corrected the spelling of 'resolve' in two error messages.
12760 - Alexander Kourakos posted a bug report and a patch that corrected it! It
12761 turned out that lynx and wget support lowercase environment variable names
12762 where curl only looked for the uppercase versions. Now curl will use the
12763 lowercase versions if they exist, but if they don't, it'll use the uppercase
12766 Daniel (17 November 2000)
12767 - curl_formfree() was added. How come no one missed that one before? I ran the
12768 test suite with the malloc debug enabled and got lots of "nice" warnings on
12769 memory leaks. The most serious one was this. There were also leaks in the
12770 cookie handling, and a few errors when curl failed to connect and similar
12771 things. More tests cases were added to cover up and to verify that these
12772 problems have been removed.
12774 - Mucho updated config file parser (I'm dead tired of all the bug reports and
12775 weird behaviour I get on the former one). It works slightly differently now,
12776 although I doubt many people will notice the differences. The main
12777 difference being that if you use options that require parameters, they must
12778 both be specified on the same line. With this new parser, you can also
12779 specify long options without '--' and you may separate options and
12780 parameters with : or =. It makes a config file line could look like:
12782 user-agent = "foobar and something"
12784 Parameters within quotes may contain spaces. Without quotes, they're
12785 expected to be a single non-space word.
12787 Had to patch the command line argument parser a little to make this work.
12789 - Added --url as an option to allow the URL to be specified this way. It makes
12790 way nicer config files. The previous way of specifying URLs in the config
12791 file doesn't work anymore.
12793 Daniel (15 November 2000)
12794 - Using certain characters in usernames or passwords for HTTP authentication
12795 failed. This was due to the mprintf() that had a silly check for letters,
12796 and if they weren't isprint() they weren't outputed "as-is". This caused
12797 passwords and usernames using '§' (for example) to fail.
12801 Daniel (15 November 2000)
12802 - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
12804 Daniel (14 November 2000)
12805 - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
12806 "Extensions to FTP" that contains a defined way how the ftp command SIZE
12807 could be assumed to work.
12809 - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
12810 file that isn't prsent on the server. The server might then return a 550 and
12811 curl will fail. Should it instead as Laurent Papier suggests, start
12812 uploading from the beginning as a normal upload?
12814 Daniel (13 November 2000)
12815 - Fixed a crash with the followlocation counter.
12817 - While writing test cases for the test suite, I discovered an old limitation
12818 that prevented -o and -T to be used at the same time. I removed this
12819 immediately as this has no relevance in the current libcurl.
12821 - Chris Faherty fixed a free-twice problem in lib/file.c
12823 - I fixed the perl http server problem in the test suite.
12827 Daniel (10 November 2000)
12828 - I've (finally) started working on the curl test suite. It is in the new
12829 tests/ directory. It requires sh and perl. There's a TCP server in perl and
12830 most of the other stuff running a pretty simple shell script.
12832 I've only made four test cases so far, but it proves the system can work.
12834 - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
12835 for sizes on FTP servers. Some servers seem to return different sizes
12836 depending on whether ASCII or BINARY is used!
12838 - Laurent Papier detected that if you appended a FTP upload and everything was
12839 already uploaded, curl would hang.
12841 - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
12842 getpass_r() function it seems some systems actually have.
12844 - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
12845 it. If the cookie was set for the full host name (domain=full.host.com),
12846 the cookie was never sent back because of a faulty length comparison between
12847 the set domain length and the current host name.
12849 Daniel (9 November 2000)
12850 - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
12851 it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
12852 but libssl isn't. I haven't verified this fix yet though, as I have no
12853 system that requires those libs to build.
12857 Daniel (7 November 2000)
12858 - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
12859 slightly modified license of the getpass.c file as the prototype was changed.
12861 Daniel (6 November 2000)
12862 - Added possibility to set a password callback to use instead of the built-in.
12863 They're controled with curl_easy_setopt() of course, the tags are
12864 CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
12866 - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
12867 times when location: headers were followed.
12869 - Emmanuel Tychon discovered that curl didn't really like user names only in
12870 the URL. I corrected this and I also fixed the since long living problem
12871 with URL encoded user names and passwords in the URLs. They should work now.
12873 Daniel (2 November 2000)
12874 - When I added --interface, the new error code that was added with it was
12875 inserted in the wrong place and thus all error codes from 35 and upwards got
12876 increased one step. This is now corrected, we're back at the previous
12877 numbers. All new exit codes should be added at the end.
12879 Daniel (1 November 2000)
12880 - Added a check for signal() in the configure script so that if sigaction()
12881 isn't present, we can use signal() instead.
12883 - I'm having a license discussion going on privately. The issue is yet again
12884 GPL-licensed programs that have problems with MPL. I am leaning towards
12885 making a kind of dual-license that will solve this once and for all...
12887 Daniel (31 October 2000)
12888 - Added the packages/ directory. I intend to let this contain some docs and
12889 templates on how to generate custom-format packages for various platforms.
12890 I've now removed the RPM related curl.spec files from the archive root.
12892 Daniel (30 October 2000)
12893 - T. Bharath brought a set of patches that bring new functionality to
12894 curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
12895 certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
12896 and then use the CURLOPT_CAINFO to set the certificate to verify the remote
12897 peer against. After an such an operation with a verification request, the
12898 *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
12899 whether the verification succeeded or not.
12901 Daniel (27 October 2000)
12902 - Georg Horn brought us a splendid patch that solves the long-standing
12903 annoying problem with timeouts that made curl exit with silly exit codes
12904 (which as been commented out lately). This solution is sigaction() based and
12905 of course then only works for unixes (and only those unixes that actually
12906 have the sigaction() function).
12908 Daniel (26 October 2000)
12909 - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
12910 that made the password get echoed when prompted for interactively. The
12911 getpass() function (now known as my_getpass()) was also fixed to not use any
12912 static buffers. This also means we cannot use the "standard" getpass()
12913 function even for those systems that have it, since it isn't thread-safe.
12915 - Kevin Roth found out that if you'd write a config file with '-v url', the
12916 url would not be used as "default URL" as documented, although if you wrote
12917 it 'url -v' it worked! This has been corrected now.
12919 - Kevin Roth's idea of using multiple -d options on the same command line was
12920 just brilliant, and I couldn't really think of any reason why we shouldn't
12921 support it! The append function always append '&' and then the new -d
12922 chunk. This enables constructs like the following:
12924 curl -d name=daniel -d age=unknown foobarsite.com
12926 Daniel (24 October 2000)
12927 - I fixed the lib/memdebug.c source so that it compiles on Linux and other
12928 systems. It will be useful one day when someone else but me wants to run the
12929 memory debugging system.
12931 Daniel (23 October 2000)
12932 - I modified the maketgz and configure scripts, so that the configure script
12933 will fetch the version number from the include/curl/curl.h header files, and
12934 then the maketgz doesn't have to rebuild the configure script when I build
12937 - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
12938 enough to not allow @-letters in passwords when they were specified with the
12939 -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
12940 suggests that curl probably should url-decode the password piece of an URL
12941 so that you could pass an encoded @-letter there...
12943 Daniel (20 October 2000)
12944 - Yet another http server barfed on curl's request that include the port
12945 number in the Host: header always. I now only include the port number if it
12946 isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
12947 run one of those nasty servers.
12949 - The PHP4 module for curl had problems with referer that seems to have been
12950 corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
12952 Daniel (17 October 2000)
12953 - Vladimir Oblomov reported that the -Y and -y options didn't work. They
12954 didn't work for me either. This once again proves we should have that test
12957 - I finally changed the error message libcurl returns if you try a https://
12958 URL when the library wasn't build with SSL enabled. It will now return this
12960 "libcurl was built with SSL disabled, https: not supported!"
12962 I really hope it will make it a bit clearer to users where the actual
12967 Daniel (16 October 2000)
12968 - I forgot to remove some of the malloc debug defines from the makefiles in
12969 the release archive (of course).
12973 Daniel (16 October 2000)
12974 - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
12976 Daniel (12 October 2000)
12977 - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
12978 by an evil ftp server to crash curl. I took the opportunity of replacing a
12979 few other sprintf()s into snprintf()s as well.
12981 Daniel (11 October 2000)
12982 - Found some more memory leaks. This new simple memory debugger has turned out
12987 Daniel (9 October 2000)
12988 - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
12989 file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
12990 public interface and was wrongly inserted in that header file.
12992 - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
12993 didn't harm anyone since the memory is free()ed on exit anyway.
12995 - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
12996 libcurl-printf() functions. This gives us snprintf() et al on all
12997 platforms. I converted the allocated useragent string to one that uses a
13000 - I've set an #if 0 section around the Content-Transfer-Encoding header
13001 generated in lib/formdata.c. This will hopefully make curl do more
13002 PHP-friendly multi-part posts.
13006 Daniel (9 October 2000)
13007 - Nico Baggus found out that curl's ability to force a ASCII download when
13008 using FTP was no longer working! I corrected this. This problem was probably
13009 introduced when I redesigned libcurl for version 7.
13011 - Georg Horn provided a source example that proved a memory leak in libcurl.
13012 I added simple memory debugging facilities and now we can make libcurl log
13013 all memory fiddling functions. An additional perl script is used to analyze
13014 the output logfile and to match malloc()s with free()s etc. The memory leak
13015 Georg found turned out to be the main cookie struct that cookie_cleanup()
13016 didn't free! The perl script is named memanalyze.pl and it is available in
13017 the CVS respository, not in the release archive.
13019 Daniel (8 October 2000)
13020 - Georg Horn found a GetHost() problem. It turned out it never assigned the
13021 pointer in the third argument properly! This could make a crash, or at best
13026 Daniel (6 October 2000)
13027 - Is the -F post following the RFC 1867 spec? We had this dicussion on the
13028 mailing list since it appears curl can't post -F form posts to a PHP
13029 receiver... I've been in touch with the PHP developers about this.
13031 - Domenico Andreoli found out that the long option '--proxy' wasn't working
13032 anymore! The option parser got confused when I added the --proxytunnel for
13033 7.3. This was indeed a very old flaw that hasn't turned up until now...
13035 - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
13036 stuff on win32. He also pointed out that lib source files were compiled with
13037 -I../src which isn't only wrong but plain stupid!
13039 - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
13040 a local variable badly, that could lead to crashes.
13044 Daniel (4 October 2000)
13045 - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
13046 as is the -w section in curl.1. I added two options to enable the user to
13047 get information about the received headers' size and the size of the HTTP
13048 request. T. Bharath requested them.
13050 Daniel (3 October 2000)
13051 - Corrected a sever free() before use in the new add_buffer_send()! ;-)
13055 Daniel (3 October 2000)
13056 - Jason S. Priebe sent me patches that changed the way curl issues HTTP
13057 requests. The entire request is now issued in one single shot. It didn't do
13058 this previously, and it has turned out that since the common browsers do it
13059 this way, some sites have turned out to work with browsers but not with
13060 curl! Although this is not a client-side problem, we want to be able to
13061 fully emulate browsers, and thus we have now adjusted the networking layer
13062 to slightly more appear as a browser. I adjusted Jason's patch, the faults
13065 Daniel (2 October 2000)
13066 - Anyone who ever uploaded data with curl on a slow link has noticed that the
13067 progess meter is updated very infrequently. That is due to the large buffer
13068 size curl is using. It reads 50Kb and sends it, updates the progress meter
13069 and loops. 50Kb is very much on a slow link, although it is pretty neat to
13072 I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
13073 start with. If curl's average upload speed is faster than buffer size bytes
13074 per second, curl will increase the used buffer size up to max 50Kb. It
13075 should make the progress meter work better.
13079 Daniel (29 September 2000)
13080 - Ripped out the -w stuff from the library and put in the curl tool. It gets
13081 all the relevant info from the library using the new curl_easy_getinfo()
13084 - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
13085 removed a compiler warning from hostip.c that OpenBSD people get.
13087 Daniel (28 September 2000)
13088 - Of course (I should probably get punished somehow) I didn't properly correct
13089 the #include lines for the base64 stuff in the kerberos sources in the just
13090 released 7.3 package. They still include the *_krb.h files! Now, the error
13091 is sooo very easy to spot and fix so I won't bother with a quick bug fix
13092 release. I'll post a patch whenever one is needed instead. It'll be
13093 available in the CVS in a few minutes anyway.
13097 Daniel (28 September 2000)
13098 - Removed the base64_krb.[ch] files. They've now replaced the former
13101 Daniel (26 September 2000)
13102 - Updated some docs.
13104 - I changed the OpenSSL fix to work with older versions as well. The posted
13105 patch was only working with 0.9.6 and no older ones.
13109 Daniel (25 September 2000)
13110 - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
13111 showed us what needed to get patched in order to make it build properly
13114 - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
13115 approach to the solution Dirk himself suggested. The bug made a cookie
13116 header that didn't end with a trailing semicolon to not get parsed.
13118 - I've marked -c and -t deprecated now. If you use any of them, curl will tell
13119 you to use "-C -" or "-T -" instead. I don't think occupying two letters for
13120 nearly identical functions is good use. Also, -T - kind of follows the curl
13121 tradition of using - for stdin where a file name is expected.
13123 Daniel (23 September 2000)
13124 - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
13127 Daniel (21 September 2000)
13128 - The kerberos code is not quite thread-safe yet. There are a few more globals
13129 that need to be take care of. Let's get the upload working first!
13131 Daniel (20 September 2000)
13132 - Richard Prescott solved another name lookup buffer size problem. I took this
13133 opportunity to rewrite the GetHost() function. With these large buffer
13134 sizes, I think keeping them as local arrays quickly turn ugly. I now use
13135 malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
13136 large buffer in case of demand (errno == ERANGE) in case a solution like
13137 that would become necessary. I still want to avoid that kind of nastiness.
13139 - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
13140 as smooth as it could.
13142 - Added a docs/examples directory with two tiny example sources that show how
13143 to use libcurl. I hope users will supply me with more useful examples
13146 - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
13147 config struct in the src/main.c file since certain compilers have that word
13148 "reservered". I figure that is some kind of C++ decease.
13150 - Updated the curl.1 man page with --interface and --krb4.
13152 - Modified the base64Encode() function to work like the kerberos one, so that
13153 I could remove the use of that. There is no need for *two* base64 encoding
13158 Daniel (19 September 2000)
13159 - The kerberos4-layer source code that is much "influenced" by the original
13160 krb4 source code, through yafc into curl, was using quite a lot of global
13161 variables. libcurl can't work properly with globals like that why I had to
13162 clean up almost every function in the new security.c to make them use
13163 connection specific variables instead of the globals. I just hope I didn't
13164 destroy anything now... :-) configure updated, version string now reflects
13165 krb4 built-in. It almost works now. Only uploads are still being naughty.
13169 Daniel (18 September 2000)
13170 - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
13171 curl. Martin is the primary author of the ftp client named yafc and he did
13172 not hesitate to help us implement this when I asked him. Many and sincere
13173 thanks to a splendid effort. It didn't even take many hours!
13175 - Stephen Kick supplied a big patch that introduces the --interface flag to
13176 the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
13177 outgoing interface to use for your request. This may not work on all
13178 platforms. This needs testing.
13180 - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
13181 name didn't resolve properly. This was due to the GetHost() function not
13182 returning an error even though it failed on some platforms!
13184 Daniel (15 September 2000)
13185 - Updated all sorts of documents in regards to the new proxytunnel support.
13189 Daniel (15 September 2000)
13190 - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
13191 Adjusted it. Added better info message when setting up the tunnel and the
13192 pasv message when doing the second connect.
13196 Daniel (15 September 2000)
13197 - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
13198 second connection on ftp needed that.
13200 - TheArtOfHTTPScripting was corrected all over. I both type and spell really
13203 Daniel (14 September 2000)
13204 - -p/--proxytunnel was added to 'curl'. It uses the new
13205 CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
13206 through the specified http proxy. At the moment, this should work with ftp.
13208 Daniel (13 September 2000)
13209 - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
13210 and mailed the patch to the mailing list.
13212 Daniel (7 September 2000)
13213 - I changed the #define T() in curl.h since it turned out it wasn't really
13214 a good symbol to use (when you compiled PHP with curl as a module, that
13215 define collided with some IMAP define or something). This was posted to the
13218 - I added extern "C" stuff in two header files to better allow libcurl usage
13219 in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
13224 Daniel (31 August 2000)
13225 - Albert Chin-A-Young fixed the configure script *again* and now it seems to
13226 detect Linux name resolving properly! (heard that before?)
13228 - Troels Walsted Hansen pointed out that downloading a file containing the
13229 letter '+' from an ftp server didn't work. It did work from HTTP though and
13230 the reason was my lame URL decoder.
13232 - I happened to notice that -I didn't at all work on ftp anymore. I corrected
13237 Daniel (30 August 2000)
13238 - Understanding AIX is a hard task. I believe I'll never figure out why they
13239 solve things so differently from the other unixes. Now, I'm left with the
13240 AIX 4.3 run-time warnings about duplicate symbols that according to this
13241 article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
13242 libtool flaw. I tried the mentioned patch, although that stops the linking
13245 So, if I select to ignore the ld warnings there are compiler warnings that
13246 fill the screen pretty bad when curl compiles. It turns out that if I want
13247 to '#include <arpa/inet.h>', I can get tid of the warnings by include the
13248 following three include files before that one:
13250 #include <net/if_dl.h>
13251 #include <sys/mbuf.h>
13252 #include <netinet/if_ether.h>
13254 Now, is it really sane to add those include files before arpa/inet.h in all
13255 the source files that include it?
13257 Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
13258 login to try everything on.
13260 Daniel (24 August 2000)
13261 - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
13262 was not up to date but lacked several object files.
13264 - More work on the naming.
13266 - Albert Chin-A-Young provided a configure-check for large file support, as
13267 some systems seem to need that for them to work. Had to change the position
13268 for the config.h include file in every .c file in the libcurl dir...
13270 - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
13271 option instead of the messy way I've left described below. It seems to
13272 work. The libcurl fix remained the same as yesterday.
13274 Daniel (23 August 2000)
13275 - Back on the -d stripping newlines thing. The 'plain post' thing was added
13276 when I had no thought of that one could actually post binary data with
13277 it. Now, I have to add this functionality in a graceful manner and I think
13278 I've managed to come up with a way: '-d @file;binary' will thus post the
13279 file binary, exactly as its contents are. It is implemented with a new
13280 *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
13281 libcurl can't strlen() the data in these cases.
13283 - Albert Chin-A-Young made some very serious efforts and all the name
13284 resolving problems seem to have been sorted out now on all the platforms
13285 that previously showed them. I'll make another release now anyday because of
13288 - The FAQ was much enhanced when it comes to the licensing issues thanks to
13291 Daniel (21 August 2000)
13292 - Rick Welykochy pointed out a problem when you use -d to post and you want to
13293 keep the newlines, as curl strips them off as a bonus before posting...
13294 This needs to be addressed.
13298 Daniel (21 August 2000)
13299 - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
13300 me configure-code that turned out to be very similar to my existing tests
13301 which only make me more sure I'm on the right path. I changed the order of
13302 the tests slightly, as it seems that some compilers don't yell error if a
13303 function is used with too many parameters. Thus, the first tested function
13304 will seem ok... Let's hope more compilers think of too-few parameters as bad
13305 manners, as we're now trying the functions in that order; fewer first. I
13306 should also add that Lars Hecking mailed me and volunteered to run tests on
13307 a few odd systems. Coalan is keeping his work over at
13308 http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
13311 Daniel (18 August 2000)
13312 - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
13313 think this is the reason for the continued trouble though.
13315 Daniel (17 August 2000)
13316 - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
13317 should affect some AIX, Digital Unix and HPUX 10 systems.
13319 Daniel (15 August 2000)
13320 - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
13321 as AIX 4.3. Now why did problems occur before?
13323 - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
13324 used combined with multiple URL retrievales. All but the first display got
13327 Daniel (11 August 2000)
13328 - Jason Priebe and an anonymous friend found some host names the Linux version
13329 of curl could not resolve. It turned out the buffer used to retrieve that
13330 information was too small. Fixed. One could argue about the usefulness of
13331 not having the slightest trace of a man page for gethostbyname_r() on my
13332 Linux Redhat installation...
13334 Daniel (10 August 2000)
13335 - Balaji S Rao was first in line to note the missing possibility to replace
13336 the Content-Type: and Content-Length: headers when doing -d posts. I added
13337 the possibility just now. It seems some people wants to do standard posts
13338 using custom Content-Types.
13340 Daniel (8 August 2000)
13341 - Mike Dowell correctly discovered that curl did not approve of URLs with no
13342 user name but password. As in 'http://:foo@haxx.se'. I corrected this.
13346 Daniel (7 August 2000)
13347 - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
13349 - I added my new document in the docs directory. It is aimed to become a sort
13350 of tutorial on how to do HTTP scripting with curl.
13352 Daniel (4 August 2000)
13353 - Working with Rich Gray on compiling curl for lots of different platforms.
13354 My fix for AIX 3.2 was not good enough and was slightly changed, I had to
13355 move an include file before another, as is now described in the source.
13357 AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
13358 functions that the configure script didn't check for and thus the compile
13359 broke with an error. I have now changed the gethostbyname_r() check in the
13360 configure file to support all three versions of both these functions. My
13361 implementation that uses the AIX-style is though not yet verified and I may
13362 get problems to fix it if it turns out to bug since I don't have access to
13363 any system using that.
13365 For problems like that, I made the configure script allow --disable-thread
13366 to completely switch off the check for threadsafe versions of a few
13367 functions and thus go with the "good old versions" that tend to work
13368 although will break thread-safeness for libcurl. Most people won't use
13369 libcurl for other things than curl though, and curl doesn't need a
13372 - Working on my big tutorial about HTTP scripting with curl.
13374 Daniel (1 August 2000)
13375 - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
13376 that was just a left-over from passed times. The strequal() is now a true
13377 function supplied by libcurl for a portable case insensitive string
13378 comparison. I added the prototypes in include/curl.h and removed the
13379 now obsolete #define.
13381 - Igor Khristophorov made a fix to allow resumed download from Sun's
13382 JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
13385 - The makefiles forced a static library build, which is bad since we now use
13386 libtool and thus have excellent shared library support! Albert Chin-A-Young
13391 Daniel (1 August 2000)
13392 - Albert Chin-A-Young pointed out that 'make install' did not properly create
13393 the header include directory, why it failed to install the header files as
13394 it should. Automake isn't really equipped to deal with subdirectories
13395 without Makefiles in any nice way. I had to run ahead and add Makefiles in
13396 both include and include/curl before I managed to create a top-level
13397 makefile that succeeds in install everything properly!
13399 - Ok, no more "features" added now. Let's just verify that there's no major
13402 Daniel (31 July 2000)
13403 - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
13404 of those internally generated headers. They didn't settle with the blank
13405 ones you could tell curl to use. I rewrote the header-replace stuff a
13406 little. Now, if you replace an internal header with your own and that new
13407 one is a blank header you will only remove the internal one and not get any
13408 blank. I couldn't figure out any case when you want that blank header.
13410 Daniel (29 July 2000)
13411 - It struck me that the lib used localtime() which is not thread-safe, so now
13412 I use localtime_r() in the systems that has it.
13414 - I went through this entire document and removed all email addresses and left
13415 names only. I've really made an effort to always note who brought be bug
13416 reports or fixes, but more and more people ask me to remove the email
13417 addresses since they become victims for spams this way. Gordon Beaton got me
13420 Daniel (27 July 2000)
13421 - Jörn Hartroth found out that when you specified a HTTP proxy in an
13422 environment variable and used -L, curl failed in the second fetch. I
13423 corrected this problem and posted a patch to the list. No need for an extra
13424 beta release just for this.
13428 Daniel (27 July 2000)
13429 - So, libtool replaced two of my files with symbolic links and I forgot to add
13430 the two new libtool files to the release archive (and they were added as
13431 symlinks as well!) This of course lead to that the configure script failed
13436 Daniel (25 July 2000)
13437 - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
13438 libtoolified, just as we've wanted for a while now. He also made the
13439 recently added man pages get installed properly on 'make install' and some
13440 other nice cleanups.
13442 - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
13443 page using a password, and that page then sends a Location: to another
13444 server that curl follows, curl will send the user name and password to that
13447 Now, I'll never be able to make curl do Location: following all that perfect
13448 and you're all sooner or later required to write a script to do several
13449 fetches when you're doing advanced stuff, but now I've modified curl to at
13450 least *only* send the user name and password to the original server. Which
13451 means that if get a page from server A with a password, that forwards curl
13452 to server B, curl won't use the password there. If server B then forwards
13453 curl back to server A again, the password will be used again.
13455 This is not a perfect implementation, as in a browser case it would only use
13456 the password if the left-prefix of the first path is the same. I just think
13457 that this fix prevents a somewhat lurky "security hole".
13459 As a side-note in this subject: HTTP passwords are sent in cleartext and
13460 will never be considered to be safe or secure. Use HTTPS for that.
13462 - As discussed on the mailing list, I converted the FTP response reading
13463 function into using select() which then allows timeouts (even under win32!)
13464 if the command-reply session gets too slow or dies completely. I made a
13465 default timeout on 3600 seconds unless anything else is specified, since I
13466 don't think anyone wants to wait more than that for a single character to
13469 - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
13470 the rfc1867 form posts. He introduced 'name=<file' which brings a means to
13471 suuply very large text chunks read from the given file name. It differs from
13472 'name=@file' in the way that this latter thing is marked in the uploaded
13473 contents as a file upload, while the first is just text (as in a input or
13474 textarea field). Torsten also corrected a bug that would happen if you used
13475 %s or similar in a -F file name.
13477 - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
13478 files to/from FTP using type ASCII curl should not expect the transfer to be
13479 the exact size reported by the server as the file size. Since ASCII may very
13480 well mean that the content is translated while transfered, the final size
13481 may very well differ. Therefor, curl now ignores the file size when doing
13482 ASCII transfers in FTP.
13484 Daniel (24 July 2000)
13485 - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
13486 port number to be set separately from the proxy host name.
13488 - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
13490 - The FTP transfer code now accepts a 250-code as well as the previously
13491 accepted 226, after a successful file transfer. Mohan <mnair at
13492 evergreen-funds.com> pointed this out.
13494 - The check for *both* nsl and socket was never added in the v7 configure.in
13495 when I moved the main branch. I re-added that check to configure.in. This was
13496 discovered by Rich Gray.
13498 - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
13499 curl_disconnect() which of course meant libcurl ate memory.
13501 - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
13502 properly include the port number if non-default ports were used. This should
13503 now have been fixed.
13505 - HTTP connect errors now return errors earlier. This was most notably causing
13506 problems when the HTTPS certificate had problems and later caused a crash.
13507 Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
13508 and suggesting a fix...
13510 Daniel (21 June 2000)
13511 - After a "bug report" I received where the user was using both -F and -I in a
13512 HTTP request (it severly confused the library I should add), I added some
13513 checks to src/main.c that prevents setting more than one HTTP request
13514 command, no matter what the user wants! ;-)
13518 Daniel (20 June 2000)
13519 - I did a major replace in many files to use the new curl domain haxx.se
13520 instead of the previous one.
13522 - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
13523 makes a POST after it has followed a location. When the initial POST has
13524 been done, it'll turned into a GET for the further requests. This is only
13525 interesting when using -L/--location *and* doing a POST at the same time.
13527 While messing with this, I added another weird feature I call 'auto
13528 referer'. If you append ';auto' to the right of a given referer string (or
13529 only use that string as referer), libcurl will automatically set the
13530 previoud URL as refered when it follows a Location: and gets a succeeding
13533 - My hero Rich Gray found the very obscure FTP bug that happened to him only
13534 when passing through a particular firewall and using the PORT command. It
13535 turned out that PORT was the only command in the lib/ftp.c source that
13536 didn't send a proper \r\n sequence but instead used the faulty \n which as
13537 it seemed is supported by most major ftp servers... :-O
13541 Daniel (16 June 2000)
13542 - I had avoided this long enough now, so I moved the alternative progress bar
13543 stuff from the lib and added it to the client code. This is now using the
13544 recently added progress callback and it seems to work pretty much like
13545 before. Since it is only one progress bar and you and download and upload at
13546 the same time, this bar shows the combined progress of both directions. This
13547 code was just ported from the old place to this, Lars is still our saviour!
13548 ;-) This also made the documentation more accurate since I never removed
13549 this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
13550 from the library since the lib has only one internal progress meter and it
13551 will never get another. It is although likely that the internal one also
13552 will be moved to the client code in the future (when I have other means of
13553 getting the writeout data and move that too to the client).
13555 - I took the opportunity to verify that standard progress meter works and I
13556 found out it didn't get inited properly. Grrr. I corrected that as well.
13558 Daniel (15 June 2000)
13559 - I thought I'd better verify that the -F option still works in v7 and of
13560 course it didn't... :-/ Anyway, I had the problems I could discover
13561 corrected. About one month of beta testing and not a single person has used
13562 this feature with v7?
13564 - Björn correctly pointed out that the --progress-bar still doesn't work in
13567 Daniel (14 June 2000)
13568 - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
13569 should. I corrected this.
13573 Daniel (14 June 2000)
13574 - Björn Stenberg pointed out several problems (related to win32 compiling):
13575 lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
13576 src/main.c had several minor problems
13577 lib/makefile.m32 had getpass.[co] twice
13578 src/config-win32.h lacked the HAVE_FCNTL_H define
13579 both config-win32.h files now only set the HAVE_UNISTD_H define if the
13580 define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
13585 Daniel (14 June 2000)
13586 - Applied Luong Dinh Dung's comments about a few win32 compile problems.
13588 - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
13589 binary. It won't do it if the -B / --use-ascii option is used. That option
13590 is now an extended version of the previous -B /--ftp--ascii. The flag was
13591 already in use be the ldap as well so the new name fits pretty good. The
13592 libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
13593 obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
13596 Daniel (13 June 2000)
13597 - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
13598 since it free()ed the main curl struct *twice*. This is now corrected.
13600 Daniel (9 June 2000)
13601 - Updated the RESOURCES file, added a README.win32 file.
13603 Daniel (8 June 2000)
13604 - So I finally added the progress callback to the *setopt() options and it
13605 should work now. I don't have the energy to write any test program for it
13607 - Made the callback function typedefs public in curl/curl.h for comfort. Just
13608 in case anyone wanna fiddle with such pointers.
13609 - Updated the curl_easy_setopt() man page accordingly.
13613 Daniel (2 June 2000)
13614 - I noticed that when doing Location: following, we lost custom headers in all
13615 but the first request.
13616 - Removed the 'HttpPost' struct and moved the header stuff to the more generic
13618 - Added some better slist-cleanups in src/main.c
13622 Daniel (31 May 2000)
13623 - So I discovered that I released the 7.0.2beta without it being able to
13624 compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
13625 feature a different amount of arguments on different systems so I had to add
13626 a configure check for this and adjust the code slightly.
13630 Daniel (29 May 2000)
13631 - Corrected the bits.* assignments when using CURLOPT options that only
13632 toggles one of those bits.
13634 - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
13635 usage of the gethostbyname_r() and similar functions in case they're around,
13636 since that make libcurl much better threadsafe in many systems (such as
13637 solaris). I added the checks for these functions to the configure script.
13639 I can't explain why, but the inet_ntoa_r() function did not appear in my
13640 Solaris include files, I had to add my own include file for this for now.
13642 Daniel (22 May 2000)
13643 - Jörn Hartroth brought me fixes to make the win32 version compile properly as
13644 well as a rename of the 'interface' field in the urldata struct, as it seems
13645 to be reserved in some gcc versions!
13647 - Rich Gray struck back with yet some portability reports. Data General DG/UX
13648 needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
13649 More fixes are expected as a result of Richies very helpful work.
13653 Daniel (21 May 2000)
13654 - Updated lots of #defines, enums and variable type names in the library. No
13655 more weird URG or URLTAG prefixes. All types and names should be curl-
13656 prefixed to avoid name space clashes. The FLAGS-parameter to the former
13657 curl_urlget() has been converted into a bunch of flags to use in separate
13658 setopt calls. I'm still focusing on the easy-interface, as the curl tool is
13661 - Bjorn Reese has provided me with an asynchronous name resolver that I plan
13662 to use in upcoming versions of curl to be able to gracefully timeout name
13667 Daniel (18 May 2000)
13668 - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
13669 source codes to be dependent on the lib version. This define is now set to
13670 a dexadecimal number, with 8 bits each for major number, minor number and
13671 patch number. In other words, version 1.2.3 would make it 0x010203. It also
13672 makes a larger number a newer version.
13674 Daniel (17 May 2000)
13675 - Martin Kammerhofer correctly pointed out several flaws in the FTP range
13676 option. I corrected them.
13677 - Removed the win32 winsock init crap from the lib to the src/main.c file
13678 in the application instead. They can't be in the lib, especially not for
13679 multithreaded purposes.
13681 Daniel (16 May 2000)
13682 - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
13683 There is still more work to do, but the first step is now taken.
13684 <curl/easy.h> is the include file to use.
13686 Daniel (14 May 2000)
13687 - FTP URLs are now treated slightly different, more according to RFC 1738.
13688 - FTP sessions are now performed differently, with CWD commands to change
13689 directory instead of RETR/STOR/LIST with the full path. Discussions with
13690 Rich Gray made me notice these problems.
13691 - Janne Johansson discovered and corrected a buffer overflow in the
13692 src/usrglob.c file.
13693 - I had to add a lib/strequal.c file for doing case insensitive string
13694 compares on all platforms.
13696 Daniel (8 May 2000):
13697 - Been working lots on the new lib.
13698 - Together with Rich Gray, I've tried to adjust the configure script to work
13699 better on the NCR MP-RAS Unix.
13701 Daniel (2 May 2000):
13702 - Albert Chin-A-Young pointed out that I had a few too many instructions in
13703 configure.in that didn't do any good.
13705 Daniel (24 April 2000):
13706 - Added a new paragraph to the FAQ about what to do when configure can't
13707 find OpenSSL even though it is installed. Supplied by Bob Allison
13709 Daniel (12 April 2000):
13710 - Started messing around big-time to convert the old library interface to a
13713 Daniel (8 April 2000):
13714 - Made the progress bar look better for file sizes between 9999 kilobytes
13715 and 100 megabytes. They're now displayed XX.XM.
13716 - I also noticed that ftp fetches through HTTP proxies didn't add the user
13717 agent string. It does now.
13718 - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
13719 on a Linux machine. It still a) requires me to be root to do it, b) leaves
13720 the rpm packages laying at some odd place on my disk c) doesn't work to
13721 build the ssl version of curl since I didn't install openssl from an rpm
13722 package so now the rpm crap thinks I don't have openssl and refuses to build
13723 a package that depends on ssl... Did I mention I don't get along with RPM?
13724 - Once again I received a bug report about autoconf not setting -L prior to -l
13725 on the command line when checking for libs. In this case it made the native
13726 cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
13727 reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
13728 is a pity there's no newer release around...
13730 Daniel (4 April 2000):
13731 - Marco G. Salvagno supplied me with two fixes that
13732 appearantly makes the OS/2 port work better with multiple URLs.
13734 Daniel (2 April 2000):
13735 - Another Location: fix. This time, when curl connected to a port and then
13736 followed a location with an absolute URL to another port, it misbehaved.
13738 Daniel (27 March 2000):
13739 - H. Daphne Luong pointed out that curl was wrongly
13740 messing up the proxy string when fetching a document through a http proxy,
13741 which screwed up multiple fetches such as in location: followings.
13743 Daniel (23 March 2000):
13744 - Marco G. Salvagno corrected my badly applied patch he
13745 actually already told me about!
13747 - H. Daphne Luong brought me a fix that now makes curl
13748 ignore select() errors in the download if errno is EINTR, which turns out to
13749 happen every now and then when using libcurl multi-threaded...
13751 Daniel (22 March 2000):
13752 - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
13753 was accidentally #defined in config-win32.h, which it shouldn't have been.
13754 The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
13755 makefile for MS VC++.
13757 Daniel (21 March 2000):
13758 - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
13759 one of the AM_* macros searches for a BSD compatible install already. Janne
13760 Johansson made me aware of this.
13764 Daniel (21 March 2000):
13765 - Paul Harrington quickly pointed out to me that 6.5.1
13766 crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
13767 the -D adjustments in src/main.c.
13771 Daniel (20 March 2000):
13772 - An anonymous post on sourceforge correctly pointed out a possible buffer
13773 overflow in the curl_unescape() function for URL conversions. The main
13774 problem with this bug is that the ftp download uses that function and this
13775 single- byte overflow could lead to very odd bugs (as one reported by Janne
13778 Daniel (19 March 2000):
13779 - Marco G. Salvagno supplied me with a series of patches
13780 that now allows curl to get compiled on OS/2. It even includes a section in
13781 the INSTALL file. Very nice job!
13783 Daniel (17 March 2000):
13784 - Wham Bang supplied a patch for the lib/Makefile.vc6
13785 file. We still need some fixes for the config-win32.h since it appears that
13786 VC++ and mingw32 have different opinions about (at least) unistd.h's
13789 Daniel (15 March 2000):
13790 - I modified the -D/--dump-header workings so that it doesn't write anything
13791 to the file until it needs to. This way, you can actually use -b and -D
13792 on the same file if you want repeated invokes to store and read the cookies
13793 in that one single file.
13795 - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
13796 Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
13797 stuff from the sources (they're covered by the config-win32.h now).
13799 - Pascal Gaudette fixed a missing ldap.c problem in the
13800 Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
13802 Daniel (14 March 2000):
13803 - Paul Harrington pointed out that the 'http_code' variable in the -w output
13804 was never written. I fixed it now.
13806 - Janne Johansson reported the complaints that OpenBSD does
13807 when getdate.c #includes malloc.h. It claims stdlib.h should be included
13808 instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
13809 the configure.in for malloc.h and stdlib.h.
13813 Daniel (13 March 2000):
13814 - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
13815 single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
13816 the standards say, but I added a white space between the name/value pairs to
13817 perhaps make them work better.
13819 - Added the perl check back in the configure.in again since the mkhelp.pl
13822 - Made some beautifications in the curl man page.
13824 Daniel (3 March 2000):
13825 - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
13828 Daniel (3 March 2000):
13829 - Uploaded the 6.5pre2 package.
13831 Daniel (2 March 2000):
13832 - Removed the perl-programs from the distribution, they never made many people
13833 happy and I'll still keep them available on the web.
13835 - Added the -w and -N stuff to the man page. Documented the new progress meter
13836 display in README.curl.
13838 - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
13839 Möller from the openssl development team helped bringing me the details for
13840 fixing an OpenSSL usage flaw. It became apparent when they released openssl
13841 0.9.5 since that barfed on curl's bad behavior (not seeding a random number
13844 - Yet another option: -N/--no-buffer disables buffering in the output stream.
13845 Probably most useful for very slow transfers when you really want to get
13846 every byte curl receives within some preferred time. Andrew <tmr at gci.net>
13849 - Damien Adant mailed me his fixes for making curl compile on Ultrix.
13851 Daniel (24 February 2000):
13852 - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
13854 I should also make a note here, if nothing else to myself, that when using
13855 the %-syntax for variables in DOS command prompts, you must use two %-
13856 letters for each one since that is an escape letter there! Maybe I should
13857 use another letter instead!
13859 - Added more variables to -w:
13867 - Made -w@filename read the syntax from a file and -w@- reads the syntax from
13868 stdin in the good old "standard" curl way.
13870 Daniel (22 February 2000):
13871 - Released a 6.5pre1 version to get some test and user feedback.
13873 Daniel (21 February 2000):
13875 - I added the -w/--write-out flag and some variables to go with it. -w is a
13876 single string, whatever you enter there will be written out when curl has
13877 completed a successful request. There are some variable substitutions and
13878 they are specified as '%{variable}' (without the quotes). Variables that
13879 exist as of this moment are:
13881 total_time - total transfer time in seconds (with 2 decimals)
13882 size_download - total downloaded amount of bytes
13883 size_upload - total uploaded amount of bytes
13884 speed_download - the average speed of the entire download
13885 speed_upload - the average speed of the entire upload
13887 I will of course add more variables, but I need input on these and others.
13889 - It struck me that the -# progress bar will be hard to just apply on the new
13890 progress bar concept. I need some feedback on this before that'll get re-
13893 Daniel (16 February 2000):
13894 - Jörn Hartroth brought me some fixes for the progress meter and I continued
13895 working on it. It seems to work for http download, http post, ftp download
13896 and ftp upload. It should be a pretty good test it works generally good.
13898 - Still need to add the -# progress bar into the new style progress interface.
13900 - Gonna have a go at my new output option parameter next.
13902 Daniel (15 February 2000):
13903 - The progress meter stuff is slowly taking place. There's more left before it
13904 is working ok and everything is tested, but we're reaching there. Slowly!
13906 Daniel (11 February 2000):
13907 - Paul Marquis fixed the config file parsing of curl to
13908 deal with any-length lines, removing the previous limit of 4K.
13910 - Eetu Ojanen's suggestion of supporting the @-style for -b
13911 is implemented. Now -b@<filename> works as well as the old style. -b@- also
13912 similarly reads the cookies from stdin.
13914 - Reminder: -D should not write to the file until it needs to, in the same way
13915 -o does. That would enable curl to use -b and -D on the same file...
13917 - Ellis Pritchard made getdate.y work for MacOS X.
13919 - Paul Harrington helped me out finding the crash in the
13920 cookie parser. He also pointed out curl's habit of sending empty cookies to
13923 Daniel (8 February 2000):
13924 - Ron Zapp corrected a problem in src/urlglob.c that
13925 prevented curl from getting compiled on sunos 4. The problem had to do
13926 with the difference in sprintf() return code types.
13928 - Transfer() should now be able to download and upload simultaneously. Let's
13929 do some progress meter fixes later this week.
13931 Daniel (31 January 2000):
13932 - Paul Harrington found another core dump in the cookie
13933 parser. Curl doesn't properly recognize the 'version' keyword and I think
13934 that is what caused this. I need to refresh some specs on cookies and see
13935 what else curl lacks to improve this a bit more once and for all.
13937 RFC 2109 clearly specifies how cookies should be dealt with when they are
13938 compliant with that spec. I don't think many servers are though...
13940 - Mark W. Eichin found that while curl is uploading a form
13941 to a web site, it doesn't read incoming data why it'll hang after a while
13942 since the socket "pipe" becomes full.
13944 It took me two hours to rewrite Download() and Upload() into the new
13945 single function Transfer(). It even seems to work! More testing is required
13946 of course... I should get the header-sending together in a kind of queue
13947 and let them get "uploaded" in Transfer() as well.
13949 - Zhibiao Wu pointed out a curl bug in the location: area,
13950 although I did not get a reproducible way to do this why I have to wait
13951 with fixing anything.
13953 - Bob Schader suggested I should implement resume
13954 support for the HTTP PUT operation, and as I think it is a valid suggestion
13957 Daniel (25 January 2000):
13958 - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
13961 - Jens Schleusener pointed out a problem to compile
13962 curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
13963 by Jörn's recent #include modifications!
13965 Daniel (19 January 2000):
13966 - Oskar Liljeblad pointed out and corrected a problem
13967 in the Location: following system that made curl following a location: to a
13968 different protocol to fail.
13970 At January 31st I re-considered this fix and the surrounding source code. I
13971 could not really see that the patch did any difference, why I removed it
13972 again for further research and debugging. (It disabled location: following
13973 on server not running on default ports.)
13975 - Jörn Hartroth brought a fix that once again
13976 made it possible to select progress bar.
13978 - Jörn also fixed a few include problems.
13982 Daniel (17 January 2000):
13983 - Based on suggestions from Björn Stenberg, I made the
13984 progress deal better with larger files and added a "Time" field which shows
13985 the time spent on the download so far.
13986 - I'm now using the CVS repository on sourceforge.net, which also allows web
13987 browsing. See http://curl.haxx.nu.
13989 Daniel (10 January 2000):
13990 - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
13991 - Added "postquote" support to the ftp section that enables post-ftp-transfer
13993 - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
13994 that command will be issued AFTER a successful ftp transfer. This can of
13995 course be used to delete or rename a file after it has been uploaded or
13996 downloaded. Use your imagination! ;-)
13997 - Since I do the main development on solaris 2.6 now, I had to download and
13998 install GNU groff to generate the hugehelp.c file. The solaris nroff cores
13999 on the man page! So, in order to make the solaris configure script find a
14000 better result I made gnroff get checked prior to the regular nroff.
14001 - Added all the curl exit codes to the man page.
14002 - Jim Gallagher properly tracked down a bug in autoconf
14003 2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
14004 flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
14005 and therefore you can't make the configure script find the openssl libs!
14007 Daniel (28 December 1999):
14008 - Tim Verhoeven correctly identified that curl
14009 doesn't support URL formatted file names when getting ftp. Now, there's a
14010 problem with getting very weird file names off FTP servers. RFC 959 defines
14011 that the file name syntax to use should be the same as in the native OS of
14012 the server. Since we don't know the peer server system we currently just
14013 translate the URL syntax into plain letters. It is still better and with
14014 the solaris 2.6-supplied ftp server it works with spaces in the file names.
14016 Daniel (27 December 1999):
14017 - When curl parsed cookies straight off a remote site, it corrupted the input
14018 data, which, if the downloaded headers were stored made very odd characters
14019 in the saved data. Correctly identified and reported by Paul Harrington.
14021 Daniel (13 December 1999):
14022 - General cleanups in the library interface. There had been some bad kludges
14023 added during times of stress and I did my best to clean them off. It was
14024 both regarding the lib API as well as include file confusions.
14026 Daniel (3 December 1999):
14027 - A small --stderr bug was reported by Eetu Ojanen...
14029 - who also brought the suggestion of extending the -X flag to ftp list as
14030 well. So, now it is and the long option is now --request instead. It is
14031 only for ftp list for now (and the former http stuff too of course).
14033 Lars J. Aas (24 November 1999):
14034 - Patched curl to compile and build under BeOS. Doesn't work yet though!
14036 - Corrected the Makefile.am files to allow putting object files in
14037 different directories than the sources.
14041 Daniel (23 November 1999):
14042 - I've had this major disk crash. My good old trust-worthy source disk died
14043 along with the machine that hosted it. Thank goodness most of all the
14044 things I've done are either backed up elsewhere or stored in this CVS
14047 - Michael S. Steuer pointed out a bug in the -F handling
14048 that made curl hang if you posted an empty variable such as '-F name='. It
14049 was one of those old bugs that never have worked properly...
14051 - Jason Baietto pointed out a general flaw in the HTTP
14052 download. Curl didn't complain if it was prematurely aborted before the
14053 entire download was completed. It does now.
14055 Daniel (19 November 1999):
14056 - Chris Maltby very accurately criticized the lack of
14057 return code checks on the fwrite() calls. I did a thorough check for all
14058 occurrences and corrected this.
14060 Daniel (17 November 1999):
14061 - Paul Harrington pointed out that the -m/--max-time option
14062 doesn't work for the slow system calls like gethostbyname()... I don't have
14063 any good fix yet, just a slightly less bad one that makes curl exit hard
14064 when the timeout is reached.
14066 - Bjorn Reese helped me point out a possible problem that might be the reason
14067 why Thomas Hurst experience problems in his Amiga version.
14069 Daniel (12 November 1999):
14070 - I found a crash in the new cookie file parser. It crashed when you gave
14071 a plain http header file as input...
14075 Daniel (10 November 1999):
14076 - I kind of found out that the HTTP time-conditional GETs (-z) aren't always
14077 respected by the web server and the document is therefore sent in whole
14078 again, even though it doesn't match the requested condition. After reading
14079 section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
14080 my own check as well. If curl thinks the condition isn't met, the transfer
14081 is aborted prematurely (after all the headers have been received).
14083 - After comments from Robert Linden I also rewrote some parts of the man page
14084 to better describe how the -F works.
14086 - Michael Anti put up a new curl download mirror in
14087 China: http://www.pshowing.com/curl/
14089 - I added the list of download mirrors to the README file
14091 - I did add more explanations to the man page
14093 Daniel (8 November 1999):
14094 - I made the -b/--cookie option capable of reading netscape formatted cookie
14095 files as well as normal http-header files. It should be able to
14096 transparently figure out what kind of file it got as input.
14098 Daniel (29 October 1999):
14099 - Another one of Sebastiaan van Erk's ideas (that has been requested before
14100 but I seem to have forgotten who it was), is to add support for ranges in
14101 FTP downloads. As usual, one request is just a request, when they're two
14102 it is a demand. I've added simple support for X-Y style fetches. X has to
14103 be the lower number, though you may omit one of the numbers. Use the -r/
14104 --range switch (previously HTTP-only).
14106 - Sebastiaan van Erk suggested that curl should be
14107 able to show the file size of a specified file. I think this is a splendid
14108 idea and the -I flag is now working for FTP. It displays the file size in
14110 Content-Length: XXXX
14111 As it resembles normal headers, and leaves us the opportunity to add more
14112 info in that display if we can come up with more in the future! It also
14113 makes sense since if you access ftp through a HTTP proxy, you'd get the
14114 file size the same way.
14116 I changed the order of the QUOTE command executions. They're now executed
14117 just after the login and before any other command. I made this to enable
14118 quote commands to run before the -I stuff is done too.
14120 - I found out that -D/--dump-header and -V/--version weren't documented in
14123 - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
14124 some text about this in the man page for the range option. The thread in
14125 the mailing list that started this was initiated by Michael Anti.
14127 - I get reports about nroff crashes on solaris 2.6+ when displaying the curl
14128 man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
14129 reported and brought the suggestion.
14131 - In a dialogue with Johannes G. Kristinsson we came
14132 up with the idea to let -H/--header specified headers replace the
14133 internally generated headers, if you happened to select to add a header
14134 that curl normally uses by itself. The advantage with this is not entirely
14135 obvious, but in Johannes' case it means that he can use another Host: than
14136 the one curl would set.
14138 Daniel (27 October 1999):
14139 - Jongki Suwandi brought a nice patch for (yet another) crash when following
14140 a location:. This time you had to follow a https:// server's redirect to
14145 Daniel (21 October 1999):
14146 - I think I managed to remove the suspicious (nil) that has been seen just
14147 before the "Host:" in HTTP requests when -v was used.
14148 - I found out that if you followed a location: when using a proxy, without
14149 having specified http:// in the URL, the protocol part was added once again
14150 when moving to the next URL! (The protocol part has to be added to the
14151 URL when going through a proxy since it has no protocol-guessing system
14153 - Benjamin Ritcey reported a core dump under solaris 2.6
14154 with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
14155 that occurred after the download was done and completed.
14156 - Benjamin found ftp downloads to show the first line of the download meter
14157 to get written twice, and I removed that problem. It was introduced with
14158 the multiple URL support.
14159 - Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
14160 honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
14161 case-insensitive..." HTTP header parsing assumed a certain casing. Dan
14162 also provided me with a patch that corrected this, which I took the liberty
14163 of editing slightly.
14164 - Dan Zitter also provided a nice patch for config.guess to better recognize
14166 - Dan also corrected a minor problem in the lib/Makefile that caused linking
14169 Daniel (19 October 1999):
14170 - Len Marinaccio came up with some problems with curl. Since Windows has a
14171 crippled shell, it can't redirect stderr and that causes trouble. I added
14172 --stderr today which allows the user to redirect the stderr stream to a
14175 Daniel (18 October 1999):
14176 - The configure script now understands the '--without-ssl' flag, which now
14177 totally disable SSL/https support. Previously it wasn't possible to force
14178 the configure script to leave SSL alone. The previous functionality has
14179 been retained. Troy Engel helped test this new one.
14181 Version 6.1 (October 17 1999)
14183 Daniel (17 October 1999):
14184 - I ifdef'ed or commented all the zlib stuff in the sources and configure
14185 script. It turned out we needed to mock more with zlib than I initially
14186 thought, to make it capable of downloading compressed HTTP documents and
14187 uncompress them on the fly. I didn't mean the zlib parts of curl to become
14188 more than minor so this means I halt the zlib expedition for now and wait
14189 until someone either writes the code or zlib gets updated and better
14190 adjusted for this kind of usage. I won't get into details here, but a
14191 short a summary is suitable:
14192 - zlib can't automatically detect whether to use zlib or gzip
14193 decompression methods.
14194 - zlib is very neat for reading gzipped files from a file descriptor,
14195 although not as nice for reading buffer-based data such as we would
14197 - there are still some problems with the win32 version when reading from
14198 a file descriptor if that is a socket
14200 Daniel (14 October 1999):
14201 - Moved the (external) include files for libcurl into a subdirectory named
14202 curl and adjusted all #include lines to use <curl/XXXX> to maintain a
14203 better name space and control of the headers. This has been requested.
14205 Daniel (12 October 1999):
14206 - I modified the 'maketgz' script to perform a 'make' too before a release
14207 archive is put together in an attempt to make the time stamps better and
14208 hopefully avoid the double configure-running that use to occur.
14210 Daniel (11 October 1999):
14211 - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as
14212 some other missing zlib #ifdef and more text on the multiple URL docs in
14217 Daniel (6 October 1999):
14218 - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
14219 just made: the -d switch is now capable of reading post data from a named
14220 file or stdin. Use it similarly to the -F. To read the post data from a
14223 curl -d @path/to/filename www.postsite.com
14225 or let curl read it out from stdin:
14227 curl -d @- www.postit.com
14229 Jörn Hartroth (3 October 1999):
14230 - Brought some more patches for multiple URL functionality. The MIME
14231 separation ideas are almost scrapped now, and a custom separator is being
14232 used instead. This is still compile-time "flagged".
14235 - Updated curl.1 with multiple URL info.
14237 Daniel (30 September 1999):
14238 - Felix von Leitner brought openssl-check fixes for configure.in to work
14239 out-of-the-box when the openssl files are installed in the system default
14242 Daniel (28 September 1999)
14243 - Added libz functionality. This should enable decompressing gzip, compress
14244 or deflate encoding HTTP documents. It also makes curl send an accept that
14245 it accepts that kind of encoding. Compressed contents usually shortens
14246 download time. I *need* someone to tell me a site that uses compressed HTTP
14247 documents so that I can test this out properly.
14249 - As a result of the adding of zlib awareness, I changed the version string
14250 a little. I plan to add openldap version reporting in there too.
14252 Daniel (17 September 1999)
14253 - Made the -F option allow stdin when specifying files. By using '-' instead
14254 of file name, the data will be read from stdin.
14256 Version 6.0 (September 14 1999)
14258 Daniel (13 September 1999)
14259 - Added -X/--http-request <request> to enable any HTTP command to be sent.
14260 Do not that your server has to support the exact string you enter. This
14261 should possibly a string like DELETE or TRACE.
14263 - Applied Douglas' mingw32-fixes for the makefiles.
14265 Daniel (10 September 1999)
14266 - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
14267 servers return code properly after the --quote commands were issued. It
14268 took anything non 200 as an error, when all 2XX codes should be accepted as
14271 - Sending cookies to the same site in multiple lines like curl used to do
14272 turned out to be bad and breaking the cookie specs. Curl now sends all
14273 cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
14274 doubt that many servers do use that syntax (yet).
14276 Daniel (8 September 1999)
14277 - Jörn helped me make sure it still compiles nicely with mingw32 under win32.
14279 Daniel (7 September 1999)
14280 - FTP upload through proxy is now turned into a HTTP PUT. Requested by
14283 - Added the ldap files to the .m32 makefile.
14285 Daniel (3 September 1999)
14286 - Made cookie matching work while using HTTP proxy.
14288 Bjorn Reese (31 August 1999)
14289 - Passed his ldap:// patch. Note that this requires the openldap shared
14290 library to be installed and that LD_LIBRARY_PATH points to the
14291 directory where the lib will be found when curl is run with a
14294 Jörn Hartroth (31 August 1999)
14295 - Made the Mingw32 makefiles into single files.
14296 - Made file:// work for Win32. The same code is now used for unix as well for
14297 performance reasons.
14299 Douglas E. Wegscheid (30 August 1999)
14300 - Patched the Mingw32 makefiles for SSL builds.
14302 Matthew Clarke (30 August 1999)
14303 - Made a cool patch for configure.in to allow --with-ssl to specify the
14304 root dir of the openssl installation, as in
14306 ./configure --with-ssl=/usr/ssl_here
14308 - Corrected the 'reconf' script to work better with some shells.
14310 Jörn Hartroth (26 August 1999)
14311 - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
14316 Daniel (25 August 1999)
14317 - John Weismiller pointed out a bug in the header-line
14318 realloc() system in download.c.
14320 - I added lib/file.[ch] to offer a first, simple, file:// support. It
14321 probably won't do much good on win32 system at this point, but I see it
14324 - Made the release archives get a Makefile in the root dir, which can be
14325 used to start the compiling/building process easier. I haven't really
14326 changed any INSTALL text yet, I wanted to get some feed-back on this
14329 Daniel (17 August 1999)
14330 - Another Location: bug. Curl didn't do proper relative locations if the
14331 original URL had cgi-parameters that contained a slash. Nusu's page
14334 - Corrected the NO_PROXY usage. It is a list of substrings that if one of
14335 them matches the tail of the host name it should connect to, curl should
14336 not use a proxy to connect there. Pointed out to me by Douglas
14337 E. Wegscheid. I also changed the README text a little regarding this.
14339 Daniel (16 August 1999)
14340 - Fixed a memory bug with http-servers that sent Location: to a Location:
14341 page. Nusu's page showed this too.
14343 - Made cookies work a lot better. Setting the same cookie name several times
14344 used to add more cookies instead of replacing the former one which it
14345 should've. Nusu <nus at intergorj.ro> brought me an URL that made this
14346 painfully visible...
14348 Troy (15 August 1999)
14349 - Brought new .spec files as well as a patch for configure.in that lets the
14350 configure script find the openssl files better, even when the include
14351 files are in /usr/include/openssl
14355 Daniel (13 August 1999)
14356 - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
14357 OpenSSL. Now why couldn't they simply add a *new* function instead of
14358 modifying the parameters of an already existing function? This way, we get
14359 a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
14360 to come up with a #if construction that deals with this...
14362 - Made curl output the SSL version number get displayed properly with 0.9.4.
14364 Troy (12 August 1999)
14365 - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
14368 Daniel (12 August 1999)
14369 - I had to copy a good <arpa/telnet.h> include file into the curl source
14370 tree to enable the silly win32 systems to compile. The distribution rights
14371 allows us to do that as long as the file remains unmodified.
14373 - I corrected a few minor things that made the compiler complain when
14374 -Wall -pedantic was used.
14376 - I'm moving the official curl web page to http://curl.haxx.nu. I think it
14377 will make it easier to remember as it is a lot shorter and less cryptic.
14378 The old one still works and shows the same info.
14380 Daniel (11 August 1999)
14381 - Albert Chin-A-Young mailed me another correction for NROFF in the
14382 configure.in that is supposed to be better for IRIX users.
14384 Daniel (10 August 1999)
14385 - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
14386 some fiddling with the getdate.c stuff that he had problems with under
14387 HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
14388 yacc or bison is found by the configure script. Since this is slightly new,
14389 we need to test the output getdate.c with win32 systems to make sure it
14390 still compiles there.
14392 Daniel (5 August 1999)
14393 - I've just setup a new mailing list with the intention to keep discussions
14394 around libcurl development in it. I mainly expect it to be for thoughts and
14395 brainstorming around a "next generation" library, rather than nitpicking
14396 about the current implementation or details in the current libcurl.
14398 To join our happy bunch of future-looking geeks, enter 'subscribe
14399 <address>' in the body of a mail and send it to
14400 libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
14401 talk and everything else should still be kept in this mailing list. I've
14402 started to archive this mailing list and have put the libcurl web page at
14403 www.fts.frontec.se/~dast/libcurl/.
14405 - Stefan Kanthak contacted me regarding a few problems in the configure
14406 script which he discovered when trying to make curl compile and build under
14407 Siemens SINIX-Z V5.42B2004!
14409 - Marcus Klein very accurately informed me that src/version.h was not present
14410 in the CVS repository. Oh, how silly...
14412 - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
14413 support. If you run curl like 'curl telnet://host' you'll get all output on
14414 the screen and curl will read input from stdin. You'll be able to login and
14415 run commands etc, but since the output is buffered, expect to get a little
14418 This is still in its infancy and it might get changed. We need your
14419 feed-back and input in how this is best done.
14421 WIN32 NOTE: I bet we'll get problems when trying to compile the current
14422 lib/telnet.c on win32, but I think we can sort them out in time.
14424 - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
14425 defined for getdate.c to compile properly on HP-UX 11.0. I updated the
14426 configure script to check for alloca.h which should make it.
14428 Daniel (4 August 1999)
14429 - I finally got to understand Marcus Klein's ftp download resume problem,
14430 which turns out to be due to different outputs from different ftp
14431 servers. It makes ftp download resuming a little trickier, but I've made
14432 some modifications I really believe will work for most ftp servers and I do
14433 hope you report if you have problems with this!
14435 - Added text about file transfer resuming to README.curl.
14437 Daniel (2 August 1999)
14438 - Applied a progress-bar patch from Lars J. Aas. It offers
14439 a new styled progress bar enabled with -#/--progress-bar.
14441 T. Yamada <tai at imasy.or.jp> (30 July 1999)
14442 - It breaks with segfault when 1) curl is using .netrc to obtain
14443 username/password (option '-n'), and 2) is automatically redirected to
14444 another location (option '-L').
14446 There is a small bug in lib/url.c (block starting from line 641), which
14447 tries to take out username/password from user- supplied command-line
14448 argument ('-u' option). This block is never executed on first attempt since
14449 CONF_USERPWD bit isn't set at first, but curl later turns it on when it
14450 checks for CONF_NETRC bit. So when curl tries to redo everything due to
14451 redirection, it segfaults trying to access *data->userpwd.
14455 Daniel (30 July 1999)
14456 - Steve Walch pointed out that there is a memory leak in the formdata
14457 functions. I added a FormFree() function that is now used and supposed to
14460 - Mark Wotton reported:
14461 'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
14462 correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
14463 0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
14464 don't know whether it is curl or SSLeay that is to blame for that.
14467 Reported an FTP upload resume bug that I really can't repeat nor understand.
14468 I leave it here so that it won't be forgotten.
14470 Daniel (29 July 1999)
14471 - Costya Shulyupin suggested support for longer URLs when following Location:
14472 and I could only agree and fix it!
14474 - Leigh Purdie found a problem in the upload/POST department. It turned out
14475 that http.c accidentaly cleared the pointer instead of the byte counter
14478 - Costya Shulyupin pointed out a problem with port numbers and Location:. If
14479 you had a server at a non-standard port that redirected to an URL using a
14480 standard port number, curl still used that first port number.
14482 - Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
14483 and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
14484 the 302-code that the follow location header outputs it will never show any
14485 html on location: pages. I have now made it look for >=400 codes if
14486 CONF_FOLLOWLOCATION is set.
14488 - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
14491 - Joshua Swink and Rick Welykochy were the first to point out to me that the
14492 latest OpenSSL package now have moved the standard include path. It is now
14493 in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
14494 option for the configure script to use that as the primary path, and I
14495 leave the former path too to work with older packages of OpenSSL too.
14497 Daniel (9 June 1999)
14498 - I finally understood the IRIX problem and now it seem to compile on it!
14499 I am gonna remove those #define strcasecmp() things once and for all now.
14501 Daniel (4 June 1999)
14502 - I adjusted the FTP reply 227 parser to make the PASV command work better
14503 with more ftp servers. Appearantly the Roxen Challanger server replied
14504 something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
14505 and Mark Butler brought a solution for it.
14507 Daniel (26 May 1999)
14508 - Rearranged. README is new, the old one is now README.curl and I added a
14509 README.libcurl with text I got from Ralph Beckmann.
14511 - I also updated the INSTALL text.
14513 Daniel (25 May 1999)
14514 - David Jonathan Lowsky correctly pointed out that curl didn't properly deal
14515 with form posting where the variable shouldn't have any content, as in curl
14516 -F "form=" www.site.com. It was now fixed.
14518 Version 5.9 (May 22 1999)
14520 Daniel (22 May 1999)
14521 - I've got a bug report from Aaron Scarisbrick in which he states he has some
14522 problems with -L under FreeBSD 3.0. I have previously got another bug
14523 report from Stefan Grether which points at an error with similar sympthoms
14524 when using win32. I made the allocation of the new url string a bit faster
14525 and different, don't know if it actually improves anything though...
14527 Daniel (20 May 1999)
14528 - Made the cookie parser deal with CRLF newlines too.
14530 Daniel (19 May 1999)
14531 - Download() didn't properly deal with failing return codes from the sread()
14532 function. Adam Coyne found the problem in the win32 version, and Troy Engel
14533 helped me out isolating it.
14535 Daniel (16 May 1999)
14536 - Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
14537 work anymore! :-/ I fixed it now.
14539 - After a suggestion by Joshua Swink I added -S / --show-error to force curl
14540 to display the error message in case of an error, even if -s/--silent was
14543 Daniel (10 May 1999)
14544 - I moved the stuff concerning HTTP, DICT and TELNET it their own source
14545 files now. It is a beginning on my clean-up of the sources to make them
14546 layer all those protocols better to enable more to be added easier in the
14549 - Leon Breedt sent me some files I've not put into the main curl
14550 archive. They're for creating the Debian package thingie. He also sent me a
14551 debian package that I've made available for download at the web page
14553 Daniel (9 May 1999)
14554 - Made it compile on cygwin too.
14556 Troy Engel (7 May 1999)
14557 - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
14560 Daniel (6 May 1999)
14561 - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
14562 will be easier to discover systems that don't have that function and thus
14563 can't use -z successfully. Made the strftime() get used if WIN32 is defined
14568 Daniel (5 May 1999)
14569 - I've had it with this autoconf/automake mess. It seems to work allright
14570 for most people who don't have automake installed, but for those who have
14571 there are problems all over.
14573 I've got like five different bug reports on this only the last
14574 week... Claudio Neves and Federico Bianchi and root <duggerj001 at
14575 hawaii.rr.com> are some of them reporting this.
14577 Currently, I have no really good fix since I want to use automake myself to
14578 generate the Makefile.in files. I've found out that the @SHELL@-problems
14579 can often be fixed by manually invoking 'automake' in the archive root
14580 before you run ./configure... I've hacked my maketgz script now to fiddle
14581 a bit with this and my tests seem to work better than before at least!
14583 Daniel (4 May 1999)
14584 - mkhelp.pl has been doing badly lately. I corrected a case problem in
14587 - I've now remade the -o option to not touch the file unless it needs to.
14588 I had to do this to make -z option really fine, since now you can make a
14589 curl fetch and use a local copy's time when downloading to that file, as
14592 curl -z dump -o dump remote.site.com/file.html
14594 This will only get the file if the remote one is newer than the local.
14595 I'm aware that this alters previous behaviour a little. Some scripts out
14596 there may depend on that the file is always touched...
14598 - Corrected a bug in the SSLv2/v3 selection.
14600 - Felix von Leitner requested that curl should be able to send
14601 "If-Modified-Since" headers, which indeed is a fair idea. I implemented it
14602 right away! Try -z <expression> where expression is a full GNU date
14603 expression or a file name to get the date from!
14605 Stephan Lagerholm (30 Apr 1999)
14606 - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
14607 isn't set and causes the make to fail.
14609 Daniel (26 April 1999)
14610 - Am I silly or what? Irving Wolfe pointed out to me that the curl version
14611 number was not set properly. Hasn't been since 5.6. This was due to a bug
14612 in my maketgz script!
14614 David Eriksson (25 Apr 1999)
14615 - Found a bug in cookies.c that made it crash at times.
14619 Doug Kaufman (23 Apr 1999)
14620 - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
14621 below and the other one a correction in include/stdcheaders.h
14623 - Added a paragraph about compiling with the US-version of openssl to the
14627 - New mailing list address. Info updated on the web page as well as in the
14630 Greg Onufer (20 Apr 1999)
14631 - hostip.c didn't compile properly on SunOS 5.5.1.
14632 It needs an #include <sys/types.h>
14636 Daniel (Apr 20 1999)
14637 - Decided to upload a non-beta version right now!
14639 - Made curl support any-length HTTP headers. The destination buffer is now
14640 simply enlarged every time it turns out to be too small!
14642 - Added the FAQ file to the archive. Still a bit smallish, but it is a
14645 Eric Thelin (15 Apr 1999)
14646 - Made -D accept '-' instead of filename to write to stdout.
14650 Daniel (Apr 12 1999)
14652 - Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
14653 in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
14654 try to get some decent win32-replacement there. Anyone?
14656 - The old -3/--crlf option is now ONLY --crlf!
14658 - I changed the "SSL fix" to a more lame one, but that doesn't remove as
14659 much functionality. Now I've enabled the lib to select what SSL version it
14660 should try first. Appearantly some older SSL-servers don't like when you
14661 talk v3 with them so you need to be able to force curl to talk v2 from the
14662 start. The fix dated April 6 and posted on the mailing list forced curl to
14663 use v2 at all times using a modern OpenSSL version, but we don't really
14664 want such a crippled solution.
14666 - Marc Boucher sent me a patch that corrected a math error for the
14667 "Curr.Speed" progress meter.
14669 - Eric Thelin sent me a patch that enables '-K -' to read a config file from
14672 - I found out we didn't close the file properly before so I added it!
14674 Daniel (Apr 9 1999)
14675 - Yu Xin pointed out a problem with ftp download resume. It didn't work at
14678 Daniel (Apr 6 1999)
14679 - Corrected the version string part generated for the SSL version.
14681 - I found a way to make some other SSL page work with openssl 0.9.1+ that
14682 previously didn't (ssleay 0.8.0 works with it though!). Trying to get
14683 some real info from the OpenSSL guys to see how I should do to behave the
14684 best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
14688 Daniel (Apr 4 1999)
14689 - Finally have curl more cookie "aware". Now read carefully. This is how
14691 To make curl read cookies from an already existing file, in plain header-
14692 format (like from the headers of a previous fetch) invoke curl with the
14695 curl -b file http://site/foo.html
14697 Curl will then use all cookies it finds matching. The old style that sets
14698 a single cookie with -b is still supported and is used if the string
14699 following -b includes a '=' letter, as in "-b name=daniel".
14701 To make curl read the cookies sent in combination with a location: (which
14702 sites often do) point curl to read a non-existing file at first (i.e
14703 to start with no existing cookies), like:
14705 curl -b nowhere http://site/setcookieandrelocate.html
14707 - Added a paragraph in the TODO file about the SSL problems recently
14708 reported. Evidently, some kind of SSL-problem curl may need to address.
14710 - Better "Location:" following.
14712 Douglas E. Wegscheid (Tue, 30 Mar 1999)
14713 - A subsecond display patch.
14715 Daniel (Mar 14 1999)
14716 - I've separated the version number of libcurl and curl now. To make
14717 things a little easier, I decided to start the curl numbering from
14718 5.6 and the former version number known as "curl" is now the one
14721 - Removed the 'enable-no-pass' from configure, I doubt anyone wanted
14724 - Made lots of tiny adjustments to compile smoothly with cygwin under
14725 win32. It's a killer for porting this to win32, bye bye VC++! ;-)
14726 Compiles and builds out-of-the-box now. See the new wordings in
14727 INSTALL for details.
14729 - Beginning experiments with downloading multiple document from a http
14730 server while remaining connected.
14734 Daniel (Mar 13 1999)
14735 - Since I've changed so much, I thought I'd just go ahead and implement the
14736 suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
14737 HTTP headers separately in the specified file.
14739 - Added new text to INSTALL on what to do to build this on win32 now.
14741 - Aaargh. I had to take a step back and prefix the shared #include files
14742 in the sources with "../include/" to please VC++...
14744 Daniel (Mar 12 1999)
14745 - Split the url.c source into many tiny sources for better readability
14748 Daniel (Mar 11 1999)
14749 - Started to change stuff for a move to make libcurl and a more separate
14750 curl application that uses the libcurl. Made the libcurl sources into
14751 the new lib directory while the curl application will remain in src as
14752 before. New makefiles, adjusted configure script and so.
14754 libcurl.a built quickly and easily. I better make a better interface to
14755 the lib functions though.
14757 The new root dir include/ is supposed to contain the public information
14758 about the new libcurl. It is a little ugly so far :-)
14761 Daniel (Mar 1 1999)
14762 - Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
14763 info that RFC 2109 specifies how to use them. The link is now in the
14764 README and the RFC in the RESOURCES.
14766 Daniel (Feb 23 1999)
14767 - Finally made configure accept --with-ssl to look for SSL libs and includes
14768 in the "standard" place /usr/local/ssl...
14770 Daniel (Feb 22 1999)
14771 - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
14774 Henri Gomez (Fri Feb 5 1999)
14775 - Sent in an updated curl-ssl.spec. I still miss the script that builds an
14776 RPM automatically...
14780 Mark Butler (27 Jan 1999)
14781 - Corrected problems in Download().
14783 Danitel Stenberg (25 Jan 1999)
14784 - Jeremie Petit pointed out a few flaws in the source that prevented it from
14785 compile warning free with the native compiler under Digital Unix v4.0d.
14789 Daniel Stenberg (15 Jan 1999)
14790 - Added Bjorns small text to the README about the DICT protocol.
14792 Daniel Stenberg (11 Jan 1999)
14793 - <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
14794 ALL_PROXY environment variable". Turned out to be because of the static-
14795 buffer nature of the win32 environment variable calls!
14797 Bjorn Reese (10 Jan 1999)
14798 - I have attached a simple addition for the DICT protocol (RFC 2229).
14799 It performs dictionary lookups. The output still needs to be better
14802 To test it try (the exact format, and more examples are described in
14805 dict://dict.org/m:hello
14806 dict://dict.org/m:hello::soundex
14809 Vicente Garcia (10 Jan 1999)
14810 - Corrected the progress meter for files larger than 20MB.
14812 Daniel Stenberg (7 Jan 1999)
14813 - Corrected the -t and -T help texts. They claimed to be FTP only.
14819 - Irving Wolfe reported that curl -s didn't always supress the progress
14820 reporting. It was the form post that autoamtically always switched it on
14821 again. This is now corrected!
14824 - Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
14825 you use -t or -T now on a http or https server, PUT will be used for file
14828 I removed the former use of -T with HTTP. I doubt anyone ever really used
14832 - Erik Jacobsen found a width bug in the mprintf() function. I corrected it
14836 - As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
14837 should now accept path parts that are up to at least 4096 bytes.
14839 - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
14842 Version 5.3a (win32 only)
14845 - Corrected a win32 bug in the environment variable part.
14849 Gilbert Ramirez Jr. (21 Dec 1998)
14850 - I have implemented the "quote" function of FTP clients. It allows you to
14851 send arbitrary commands to the remote FTP server. I chose the -Q/--quote
14852 command-line arguments.
14854 You can have more than one quoted string, and curl will apply them in
14855 order. This is what I use for my MVS upload:
14857 curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
14859 Curl will send the two quoted "site" commands in the proper order.
14861 - Made it compile smoothly on AIX.
14863 Gilbert Ramirez Jr. (18 Dec 1998)
14864 - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
14866 Troy Engel (17 Dec 1998)
14867 - Brought a correction that fixes the win32 curl bug.
14870 - A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
14871 flag on certain systems. Actually, all systems should've!
14873 - Added a few defines to make directories/file names get build nicer (with _
14874 instead of . and \ instead of / in win32).
14876 - steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
14877 ftp server response line had a parenthesis on the line before the (size)
14878 info. I hope it works better now!
14882 Steven G. Johnson (Dec 14, 1998)
14883 - Brought a fix that corrected a crash in 5.2 due to bad treatment of the
14884 environment variables.
14888 Daniel Stenberg (Dec 14, 1998)
14889 - Rewrote the mkhelp script and now, the mkhelp.pl script generates the
14890 hugehelp.c file from the README *and* the man page file curl.1. By using
14891 both files, I no longer need to have double information in both the man
14892 page and the README as well. So, win32-users will only have the hugehelp.c
14893 file for all info, but then, they download the plain binary most times
14896 - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
14897 if I don't explicitly typecast the argument to isdigit() or isspace() to
14898 int. So I did to compile warning free with that too.
14900 - Added checks for 'long double' and 'long long' in the configure script. I
14901 need those for the mprintf.c source to compile well on non long long
14902 comforming systems!
14904 Version 5.1 (not publicly released)
14906 Daniel Stenberg (Dec 10, 1998)
14907 - I got a request for a pre-compiled NT Alpha version. Anyone?
14909 - Added Lynx/CERN www lib proxy environment variable support. That means curl
14910 now reads and understands the following environment variables:
14912 HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
14914 They should be set for protocol-specific proxies. General proxy should be
14919 And a comma-separated list of host names that shouldn't go through any
14920 proxy is set in (only an asterisk, '*' matches all hosts).
14924 The usage of the -x/--proxy flag overrides the environment variables.
14926 - Proxy can now be specified with a procotol:// prefix.
14928 - Wrote the curl.1 man page.
14930 - Introduced a whole new dynamic buffer system for all sprintf()s. It is
14931 based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
14932 there aren't that many buffer overflow risks left now.
14934 - Ah, I should mention I've compiled and built curl successfully under
14935 solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
14937 Oren Tirosh (Dec 3, 1998)
14938 - Brought two .spec files, to use when creating (Linux) Redhat style RPM
14939 packages. They're named curl.spec and curl-ssl.spec.
14942 - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
14946 Daniel Stenberg (Dec 1, 1998)
14947 - Not a single bug report in ages.
14948 - Corrected getpass.c and main.c to compile warning and error free with the
14951 Version 5.0 beta 24
14953 Daniel Stenberg (Nov 20, 1998)
14955 HOW TO BUILD A RELEASE ARCHIVE:
14957 * Pre-requisite software:
14958 What To build what Reads data from
14959 ==== ============= ===============
14960 GNU automake Makefile.in, aclocal.m4 configure.in
14963 GNU autoconf configure configure.in
14964 GNU autoheader(2) config.h.in configure.in, acconfig.h
14966 * Make sure all files that should be part of the archive are put in FILES.
14968 * Run './maketgz' and enter version number of the new to become archive.
14972 - Enters the newly created version number in url.h.
14973 - (If you don't have automake, this script will warn about that, but unless
14974 you have changed the Makefile.am files, that is nothing to care about.)
14975 If you have it, it'll run it.
14976 - If you have autoconf, the configure.in will be edited to get the newly
14977 created version number and autoconf will be run.
14978 - Creates a new directory named curl-<version>. (Actually, it uses the base
14979 name of the current directory up to the first '-'.)
14980 - Copies all files mentioned in FILES to the new directory. Saving
14981 permissions and directory structure.
14982 - Uses tar to create an archive of it all, named curl-<version>.tar.gz
14983 - gzips the archive
14984 - Removes the new directory and all its contents.
14986 * When done, you have an archive stored in your directory named
14987 curl-<version>.tar.gz.
14991 (1) They're required to make automake run properly.
14992 (2) It is distributed as a part of the GNU autoconf archive.
14994 Daniel Stenberg (Nov 18, 1998)
14995 - I changed the TAG-system. If you ever used urlget() from this package in
14996 another product, you need to recompile with the new headers. I did this
14997 new stuff to better deal with different compilers and system with different
14998 variable sizes. I think it makes it a little more portable. This proves
14999 to compile warning free with the problematic IRIX compiler!
15000 - Win32 compiled with a silly error. Corrected now.
15001 - Brian Chaplin reported yet another problem in
15002 multiline FTP responses. I've tried to correct it. I mailed him a new
15003 version and I hope he gets back soon with positive feedback!
15004 - Improved the 'maketgz' to create a temporary directory tree which it makes
15005 an archive from instead of the previous renaming of the current one.
15006 - Mailing list opened (see README).
15007 - Made -v more verbose on the PASV section of ftp transfers. Now it tells
15008 host name and IP of the new host (and port number). I also added a section
15009 about PORT vs PASV in the README.
15011 Version 5.0 beta 21
15013 Angus Mackay (Nov 15, 1998)
15014 - Introduced automake stuff.
15016 Daniel Stenberg (Nov 13, 1998)
15017 - Just made a successful GET of a document from an SSL-server using my own
15018 private certificate for authentication! The certificate has to be in PEM
15019 format. You do that the easiest way (although not *that* easy) by
15020 downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
15021 at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
15022 convert any modern Netscape or (even) MSIE certificate to PEM-format. Use
15023 it with 'curl -E <certificate:password> https://site.com'. If this isn't a
15024 cool feature, then I don't know what cool features look like! ;-)
15025 - Working slowly on telnet connections. #define TRY_TELNET to try it out.
15026 (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
15027 have problem to define how it should work. The prime purpose for this must
15028 be to get (8bit clean) files via telnet, and it really isn't that easy to
15029 get files this way. Still having problems with \n being converted to \r\n.
15031 Angus Mackay (Nov 12, 1998)
15032 - Corrected another bug in the long parameter name parser.
15033 - Modified getpass.c (NOTE: see the special licensing in the top of that
15036 Daniel Stenberg (Nov 12, 1998)
15037 - We may have removed the silly warnings from url.c when compiled under IRIX.
15038 Thanks again to Bjorn Reese and Martin Staael.
15039 - Wrote formfind.pl which is a new perl script intended to help you find out
15040 how a FORM submission should be done. This needs a little more work to get
15043 Daniel Stenberg (Nov 11, 1998)
15044 - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
15045 Appearantly some proxies/sites add such at times (my test proxy did when I
15046 downloaded a gopher page with it)!
15047 - Moved the former -h to -M and made -h show the short help text instead. I
15048 had to enable a forced help text option. Now an even shorter help text will
15049 be presented when an unknown option and similar, is used.
15050 - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
15051 changes don't make other versions go nuts instead.
15053 Daniel Stenberg (Nov 10, 1998)
15054 - Added a weird check in the configure script to check for the silly AIX
15055 warnings about my #define strcasecmp() stuff. I do that define to prevent
15056 me and other contributors to accidentaly use that function name instead
15058 - I bugfixed Angus's getpass.c very little.
15059 - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
15060 sufficient instead of --location as "loc" is a unique prefix. Also, anything
15061 after a '--' is treated as an URL. So if you do have a host with a weeeird
15062 name you can do 'curl -- -host.com'.
15063 - Another getopt-adjust; curl now accepts flags after the URL on the command
15064 line. 'curl www.foo.com -O' is perfectly valid.
15065 - Corrected the .curlrc parser so that strtok() is no longer used and I
15066 believe it works better. Even URLs can be specified in it now.
15068 Angus Mackay (Nov 9, 1998)
15069 - Replaced getpass.c with a newly written one, not under GPL license
15070 - Changed OS to a #define in config.h instead of compiler flag
15071 - Makefile now uses -DHAVE_CONFIG_H
15073 Daniel Stenberg (Nov 9, 1998)
15074 - Ok, I expanded the tgz-target to update the version string on each occation
15075 I build a release archive!
15076 - I reacted on Angus Mackay's initiative and remade the parameter parser to
15077 be more getopt compliant. Curl now supports "merged" flags as in
15078 curl -lsv ftp.site.com
15079 Do note that I had to move three short-names of the options. Parameters
15080 that needs an additional string such as -x must be stand-alone or the
15081 last in a merged sequence:
15082 curl -lsx my-proxy ftp.site.com
15083 is ok, but using the flags in a different order like '-lxs' would cause
15084 unexpected results (as the 's' option would be skipped).
15085 - I've changed the headers in all files that are subject to the MozPL
15086 license, as they are supposed to look like when conforming.
15087 - Made the configure script make the config.h. The former config.h is now
15089 - The RESOURCES and TODO files have been added to the archive.
15091 Angus Mackay (Nov 5, 1998)
15092 - Fixed getpass.c and various configure stuff
15094 Daniel Stenberg (Nov 3, 1998)
15095 - Use -H/--header for custom HTTP-headers. Lets you pass on your own
15096 specified headers to the remote server. I wouldn't recommend trying to use
15097 a header with a defined usage according to standards. Use this flag once
15098 for every custom header you want to add.
15099 - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
15100 - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
15101 usage in there! Since the introduction of the .curlrc file, it is easier to
15102 write scripts that use curl since proxies and stuff should be in the
15103 .curlrc file anyway.
15104 - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
15105 which means it is gonna be possible to upload files etc through HTTP POST.
15106 Shiraz Kanga asked for the feature and my brother,
15107 Björn Stenberg helped me design the user
15108 interface for this beast. This feature requires quite some docs,
15109 since it has turned out not only quite capable, but also complicated! :-)
15110 - A note here, since I've received mail about it. SSLeay versions prior to
15111 0.8 will *not* work with curl!
15112 - Wil Langford reported a bug that occurred since curl
15113 did not properly use CRLF when issuing ftp commands. I fixed it.
15114 - Rearranged the order config files are read. .curlrc is now *always* read
15115 first and before the command line flags. -K config files then act as
15116 additional config items.
15117 - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
15118 - You can now disable a proxy by using -x "". Useful if the .curlrc file
15119 specifies a proxy and you wanna fetch something without going through
15121 - I'm thinking of dropping the -p support. Its really not useful since ports
15122 could (and should?) be specified as :<port> appended on the host name
15123 instead, both in URLs and to proxy host names.
15124 - Martin Staael reports curl -L bugs under Windows NT
15125 (test with URL http://come.to/scsde). This bug is not present in this
15127 - Added support for the weird FTP URL type= thing. You can download a file
15128 using ASCII transfer by appending ";type=A" to the right of it. Other
15129 available types are type=D for dir-list (NLST) and type=I for binary
15130 transfer. I can't say I've ever seen anyone use this kind of URL though!
15132 - Troy Engel pointed out a bug in my getenv("HOME")
15133 usage for win32 systems. I introduce getenv.c to better cope with
15134 this. Mr Engel helps me with the details around that...
15135 - A little note to myself and others, I should make the win32-binary built
15136 with SSL support...
15137 - Ryan Nelson sent me comments about building curl
15138 with SSL under FreeBSD. See the Makefile for details. Using the configure
15139 script, it should work better and automatically now...
15140 - Cleaned up in the port number mess in the source. No longer stores and uses
15141 proxy port number separate from normal port number.
15142 - 'configure' script working. Confirmed compiles on:
15145 SunOS 5.5.1 yes gcc
15146 SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem)
15147 SunOS 4.1.3 no gcc (without ANSI C headers)
15148 SunOS 4.1.2 no gcc (native compiler failed)
15149 Linux 2.0.18 no gcc
15150 Linux 2.0.32 yes gcc
15151 Linux 2.0.35 no gcc (with glibc)
15152 IRIX 6.2 no gcc (cc compiles generate a few warnings)
15153 IRIX 6.4 no cc (generated warnings though)
15157 - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
15159 - When using a proxy, curl now guesses and uses the protocol part in cases
15161 curl -x proxy:80 www.site.com
15162 Proxies normally go nuts unless http:// is prepended to the host name, so
15163 if curl is used like this, it guesses protocol and appends the protocol
15164 string before passing it to the proxy. It already did this when used
15166 - Better port usage with SSL through proxy now. If you specified a different
15167 https-port when accessing through a proxy, it didn't use that number
15168 correctly. I also rewrote the code that parses the stuff read from the
15169 proxy when you wanna connect through it with SSL.
15170 - Bjorn Reese helped me work around one of the compiler
15171 warnings on IRIX native cc compiles.
15173 Version 4.10 (Oct 26, 1998)
15175 - John A. Bristor suggested a config file switch,
15176 and since I've been having that idea kind of in the background for a long
15177 time I rewrote the parameter parsing function a little and now I introduce
15178 the -K/--config flag. I also made curl *always* (unless -K is used) try to
15179 load the .curlrc file for command line parameters. The syntax for the
15180 config file is the standard command line argument style. Details in 'curl
15182 - I removed the -k option. Keep-alive isn't really anything anyone would
15183 want to enable with curl anyway.
15184 - Martin Staael helped me add the 'irix' target. Now
15185 "make irix" should build curl successfully on non-gcc SGI machines.
15186 - Single switches now toggle behaviours. I.e if you use -v -v the second
15187 will switch off the verbose mode the first one enabled. This is so that
15188 you can disable a default setting a .curlrc file enables etc.
15190 Version 4.9 (Oct 7, 1998)
15192 - Martin Staael suggested curl would support cookies.
15193 I added -b/--cookie to enable free-text cookie data to be passed. There's
15194 also a little blurb about general cookie stuff in the README/help text.
15195 - dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
15196 manually get curl to resume HTTP documents, I made the -c resume flag work
15197 for HTTP too (unless -r is used too, which would be very odd anyway).
15198 - Added checklinks.pl to the archive. It is a still experimental perl script
15199 that checks all links of a web page by using curl.
15200 - Rearranged the archive hierarchy a little. Build the executable in the
15201 src/ dir from now on!
15202 - Version 4.9 and hereafter, is no longer released under the GPL license.
15203 I have now updated the LEGAL file etc and now this is released using the
15204 Mozilla Public License to avoid the plague known as "the GPL virus". You
15205 must make the source available if you decide to change and/or redistribute
15206 curl, but if you decide to use curl within something else you do not need
15207 to offer the world the source to that too.
15208 - Curl did not like HTTP servers that sent no headers at all on a GET
15209 request. It is a violation of RFC2068 but appearantly some servers do
15210 that anyway. Thanks to Gordon Beaton for the report!
15211 - -L/--location was added after a suggestion from Martin Staael. This makes
15212 curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
15213 headers. If -i or -I is used with this flag, you will see headers from all
15214 sites the Location: points to. Do note that the first server can point to a
15215 second that points to a third etc. It seems the Location: parameter (said
15216 to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
15217 made curl ATTEMPT to do the best it can to deal with the reality.
15218 - Added getlinks.pl to the archive. getlinks.pl selectively downloads
15219 files that a web page links to.
15223 - As Julian Romero Nieto reported, curl reported wrong version number.
15224 - As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
15225 other versions for win32) didn't work with binary files since I'm too used
15226 to the UNIX style fopen() where binary and text don't differ...
15227 - Ralph Beckmann brought me some changes that lets curl compile error and
15228 warning free with -Wall -pedantic with g++. I also took the opportunity to
15229 clean off some unused variables and similar.
15230 - Ralph Beckmann made me aware of a really odd bug now corrected. When curl
15231 read a set of headers from a HTTP server, divided into more than one read
15232 and the first read showed a full line *exactly* (i.e ending with a
15233 newline), curl did not behave well.
15237 - I was too quick to release 4.8.2 with too little testing. One of the
15238 changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
15239 upload files. I still think both problems corrected in 4.8.2 remain
15240 corrected. Reported by Julian Romero Nieto.
15244 - Bernhard Iselborn reported two FTP protocol errors curl did. They're now
15245 corrected. Both appeared when getting files from a MS FTP server! :-)
15249 - Added a last update of the progress meter when the transfer is done. The
15250 final output on the screen didn't have to be the final size transfered
15251 which made it sometimes look odd.
15252 - Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
15253 had nothing but header. Appearantly Solaris deals with negative sizes in
15254 fwrite() calls a lot better than Linux does... =B-]
15256 Version 4.8 (Aug 31, 1998)
15258 - Continue FTP file transfer. -c is the switch. Note that you need to
15259 specify a file name if you wanna resume a download (you can't resume a
15260 download sent to stdout). Resuming upload may be limited by the server
15261 since curl is then using the non-RFC959 command SIZE to get the size of
15262 the target file before upload begins (to figure out which offset to
15263 use). Use -C to specify the offset yourself! -C is handy if you're doing
15264 the output to something else but a plain file or when you just want to get
15266 - recursiveftpget.pl now features a maximum recursive level argument.
15270 - Added support to abort a download if the speed is below a certain amount
15271 (speed-limit) bytes per second for a certain (speed-time) time.
15272 - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
15273 whole ftp directory tree. It is meant as an example of how curl can be
15274 used. I agree it isn't the wisest thing to do to make a separate new
15275 connection for each file and directory for this.
15279 - Added a first attempt to optionally parse the .netrc file for login user
15280 and password. If used with http, it enables user authentication. -n is
15282 - Removed the extra newlines on the default user-agent string.
15283 - Corrected the missing ftp upload error messages when it failed without the
15284 verbose flag set. Gary W. Swearingen found it.
15285 - Now using alarm() to enable second-precision timeout even on the name
15286 resolving/connecting phase. The timeout is although reset after that first
15287 sequence. (This should be corrected.) Gary W. Swearingen reported.
15288 - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
15289 - Added bug report email address in the README.
15290 - Added a "current speed" field to the progress meter. It shows the average
15291 speed the last 5 seconds. The other speed field shows the average speed of
15292 the entire transfer so far.
15296 - SSL through proxy fix
15297 - Added -A to allow User-Agent: changes
15300 - Made the -A work when SSL-through-proxy.
15304 - More SSL corrections
15305 - I've added a port to AIX.
15306 - running SSL through a proxy causes a chunk of code to be executred twice.
15307 one of those blocks needs to be deleted.
15310 - Made -i and -I work again
15314 - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
15319 - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
15320 support network interface names in win32. I couldn't figure out how!
15323 Linas Vepstas / Sampo Kellomaki
15324 - Added SSL / SSLeay support (https://)
15325 - Added the -T usage for HTTP POST.
15328 - Bugfixed the SSL implementation.
15329 - Made -P a lot better to use other IP addresses. It now accepts a following
15330 parameter that can be either
15331 interface - i.e "eth0" to specify which interface's IP address you
15333 IP address - i.e "192.168.10.1" to specify exact IP number
15334 host name - i.e "my.host.domain" to specify machine
15335 "-" - (any single-letter string) to make it pick the machine's
15337 - The Makefile is now ready to compile for solaris, sunos4 and linux right
15339 - Better generated version string seen with 'curl -V'
15343 - The IP number returned by the ftp server as a reply to PASV does no longer
15344 have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
15345 - Binds better to available port when -P is used.
15346 - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
15347 for this is that exactly that site, ftp.funet.fi, does not allow LIST /
15348 while LIST ./ is fine. Any objections?
15350 Version 4 (1998-03-20)
15352 - I took another huge step and changed both version number and project name!
15353 The reason for the new name is that there are just one too many programs
15354 named urlget already and this program already can a lot more than merely
15355 getting URLs, and the reason for the version number is that I did add the
15356 pretty big change in -P and since I changed name I wanted to start with
15358 - The --style flags are working better now.
15359 - Listing directories with FTP often reported that the file transfer was
15360 incomplete. Wrong assumptions were too common for directories, why no
15361 size will be attempted to get compared on them from now on.
15362 - Implemented the -P flag that let's the ftp control issue a PORT command
15363 instead of the standard PASV.
15364 - -a for appending FTP uploads works.
15366 ***************************************************************************
15368 Version 3.12 (14 March 1998)
15370 - End-of-header tracking still lacked support for \r\n or just \n at the
15371 end of the last header line.
15373 - Added PROXY authentication.
15375 - Fixed some little bugs.
15379 - The header parsing was still not correct since the 3.2 modification...
15383 - 3.7 and 3.9 were simultaneously developed and merged into this version.
15384 - FTP upload did not work correctly since 3.2.
15388 - Added the "-e <url> / --referer <url>" option where we can specify
15389 the referer page. Obviously, this is necessary only to fool the
15394 - Now checks the last error code sent from the ftp server after a file has
15395 been received or uploaded. Wasn't done previously.
15396 - When 'urlget <host>' is used without a 'protocol://' first in the host part,
15397 it now checks for host names starting with ftp or gopher and if it does,
15398 it uses that protocol by default instead of http.
15402 - Silly mistake made the POST bug. This has now also been tested to work with
15407 - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
15408 functional POST, I applied his changes into this version and made them work.
15409 (It seems POST requires the Content-Type and Content-Length headers.) It is
15410 now usable with the -d switch.
15413 Passed to avoid confusions
15417 - Major rewrite of two crucial parts of this code: upload and download.
15418 They are both now using a select() switch, that allows much better
15419 progress meter and time control.
15420 - alarm() usage removed completely
15421 - FTP get can now list directory contents if the path ends with a slash '/'.
15422 Urlget on a ftp-path that doesn't end with a slash means urlget will
15423 attempt getting it as a file name.
15424 - FTP directory view supports -l for "list-only" which lists the file names
15426 - All operations support -m for max time usage in seconds allowed.
15427 - FTP upload now allows the size of the uploaded file to be provided, and
15428 thus it can better check it actually uploaded the whole file. It also
15429 makes the progress meter for uploads much better!
15430 - Made the parameter parsing fail in cases like 'urlget -r 900' which
15431 previously tried to connect to the host named '900'.
15435 - Pointed out how to correct the 3 warnings in win32-compiles.
15438 - Removed all calls to exit().
15439 - Made the short help text get written to stdout instead of stderr.
15440 - Made this file instead of keeping these comments in the source.
15441 - Made two callback hooks, that enable external programs to use urlget()
15442 easier and to grab the output/offer the input easier.
15443 - It is evident that Win32-compiles are painful. I watched the output from
15444 the Borland C++ v5 and it was awful. Just ignore all those warnings.
15448 - Added FTP upload capabilities. The name urlget gets a bit silly now
15449 when we can put too... =)
15450 - Restructured the source quite a lot.
15451 Changed the urlget() interface. This way, we will survive changes much
15452 better. New features can come and old can be removed without us needing
15453 to change the interface. I've written a small explanation in urlget.h
15455 - New flags include -t, -T, -O and -h. The -h text is generated by the new
15460 - Added a fix to make it compile smoothly on Amiga using the SAS/C
15464 - Believe it or not, but the STUPID Novell web server seems to require
15465 that the Host: keyword is used, so well I use it and I (re-introduce) the
15466 urlget User-Agent:. I still have to check that this Host: usage works with
15467 proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
15471 - some little modifications
15475 - Removed the -l option and introduced the -f option instead. Now I'll
15476 rewrite the former -l kludge in an external script that'll use urlget to
15477 fetch multipart files like that.
15478 - '-f' is introduced, it means Fail without output in case of HTTP server
15479 errors (return code >=300).
15480 - Added support for -r, ranges. Specify which part of a document you
15481 want, and only that part is returned. Only with HTTP/1.1-servers.
15482 - Split up the source in 3 parts. Now all pure URL functions are in
15483 urlget.c and stuff that deals with the stand-alone program is in main.c.
15484 - I took a few minutes and wrote an embryo of a README file to explain
15489 - Made the -l (loop) thing use the new CONF_FAILONERROR which makes
15490 urlget() return error code if non-successful. It also won't output anything
15491 then. Now finally removed the HTTP 1.0 and error 404 dependencies.
15492 - Added -I which uses the HEAD request to get the header only from a
15497 - Made the progress meter use HHH:MM:SS instead of only seconds.
15501 - Added progress meter. It appears when downloading > BUFFER SIZE and
15502 mute is not selected. I found out that when downloading large files from
15503 really really slow sites, it is desirable to know the status of the
15504 download. Do note that some downloads are done unawaring of the size, which
15505 makes the progress meter less thrilling ;) If the output is sent to a tty,
15506 the progress meter is shut off.
15507 - Increased buffer size used for reading.
15508 - Added length checks in the user+passwd parsing.
15509 - Made it grok user+passwd for HTTP fetches. The trick is to base64
15510 encode the user+passwd and send an extra header line. Read chapter 11.1 in
15511 RFC2068 for details. I added it to be used just like the ftp one. To get a
15512 http document from a place that requires user and password, use an URL
15515 http://user:passwd@www.site.to.leach/doc.html
15517 I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
15518 USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
15519 not if used with proxy. To do the same as the above one, you can invoke:
15521 urlget -u user:passwd http://www.site.to.leach/doc.html
15525 - Added "-o" option (output file)
15526 - Added URG_HTTP_NOT_FOUND return code.
15528 Perhaps we should detect all kinds of errors and instead of writing that
15529 custom string for the particular 404-error, use the error text we actually
15530 get from the server. See further details in RFC2068 (HTTP 1.1
15531 definition). The current way also relies on a HTTP/1.0 reply, which newer
15532 servers might not do.
15533 - Looping mode ("-l" option). It's easier to get various split files.
15535 Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
15536 make urlget to attempt to fetch all files named file1.html, file2.html etc
15537 until no more files are found. This is only a modification of the
15538 STAND_ALONE part, nothing in the urlget() function was modfified for this.
15540 - Changed the -h to be -i instead. -h should be preserved to help use.
15541 - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
15542 VC++ WIN32 define and therefore I added a little fix for that.
15546 - The urlget function didn't set the path to url when using proxy.
15547 - Fixed bug with IMC proxy. Now using (almost) complete GET command.
15550 - Made it compile on Solaris. Had to reorganize the includes a bit.
15551 (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
15552 - Made Johan's keepalive keyword optional with the -k flag (since it
15553 makes a lot of urlgets take a lot longer time).
15554 - Made a '-h' switch in case you want the HTTP-header in the output.
15557 Daniel Stenberg and Kjell Ericson
15559 - No more global variables
15560 - Mute option (no output at all to stderr)
15561 - Full range of return codes from urlget(), which is now written to be a
15562 function for easy-to-use in [other] programs.
15563 - Define STAND_ALONE to compile the stand alone urlget program
15564 - Now compiles with gcc options -ansi -Wall -pedantic ;)
15567 - Introducing ftp GET support. The FTP URL type is recognized and used.
15568 - Renamed the project to 'urlget'.
15569 - Supports the user+passwd in the FTP URL (otherwise it tries anonymous
15570 login with a weird email address as password).
15574 - The skip_header() crap messed it up big-time. By simply removing that
15575 one we can all of a sudden download anything ;)
15576 - No longer requires a trailing slash on the URLs.
15577 - If the given URL isn't prefixed with 'http://', HTTP is assumed and
15579 - 'void main()' is history.
15583 - The gopher source used the ppath variable instead of path which could
15588 - Well, I added a lame text about the time it took to get the data. I also
15589 fought against Johan to prevent his -f option (to specify a file name
15590 that should be written instead of stdout)! =)
15591 - Made it write 'connection refused' for that particular connect()
15593 - Renumbered the version. Let's not make silly 1.0.X versions, this is
15594 a plain 1.3 instead.
15598 - Discovered and fixed the problem with getting binary files. puts() is
15599 now replaced with fwrite(). (Daniel's note: this also fixed the buffer
15600 overwrite problem I found in the previous version.)
15603 - Let "-p" before "-x".
15606 - Bugfixed the proxy usage. It should *NOT* use nor strip the port number
15607 from the URL but simply pass that information to the proxy. This also
15608 made the user/password fields possible to use in proxy [ftp-] URLs.
15609 (like in ftp://user:password@ftp.my.site:8021/README)
15612 - Implemented HTTP proxy support.
15613 - Receive byte counter added.
15616 - Implemented URLs (and skipped the old syntax).
15617 - Output is written to stdout, so to achieve the above example, do:
15618 httpget http://143.54.10.6/info_logo.gif > test.gif
15622 - Adjusted it slightly to accept named hosts on the command line. We
15623 wouldn't wanna use IP numbers for the rest of our lifes, would we?
15627 - Wrote the initial httpget, which started all this!