tizen 2.4 release
[external/curl.git] / CHANGES.0
1                                   _   _ ____  _
2                               ___| | | |  _ \| |
3                              / __| | | | |_) | |
4                             | (__| |_| |  _ <| |___
5                              \___|\___/|_| \_\_____|
6
7                                  Old Changelog
8
9 Changes done to curl and libcurl from 1997 to 2010, edited manually. The most
10 recent changes are always generated into the CHANGES file straight from git.
11
12 Kamil Dudka (17 June 2010)
13 - Improve test575 in order to not fail with threaded DNS resolver.
14
15 Version 7.21.0 (16 June 2010)
16
17 Daniel Stenberg (5 June 2010)
18 - Constantine Sapuntzakis fixed a case of spurious SSL connection aborts using
19   libcurl and OpenSSL. "I tracked it down to uncleared error state on the
20   OpenSSL error stack - patch attached deals with that."
21
22 Daniel Stenberg (5 June 2010)
23 - Frank Meier added CURLINFO_PRIMARY_PORT, CURLINFO_LOCAL_IP and
24   CURLINFO_LOCAL_PORT to curl_easy_getinfo().
25
26 Yang Tse (4 June 2010)
27 - Enabled OpenLDAP support for cygwin builds. This support was disabled back
28   in 2008 due to incompatibilities between OpenSSL and OpenLDAP headers.
29   cygwin's OpenSSL 0.9.8l and OpenLDAP 2.3.43 versions on cygwin 1.5.25
30   allow building an OpenLDAP enabled libcurl supporting back to Windows 95.
31
32   Removed the non-functional CURL_LDAP_HYBRID code and references.
33
34 Daniel Stenberg (2 June 2010)
35 - Jason McDonald posted bug report #3006786 when he found that the SFTP code
36   didn't timeout properly in several places in the code even if a timeout was
37   set properly.
38
39   Based on his suggested patch, I wrote a different implementation that I
40   think addressed the issue better and also uses the connect timeout for the
41   initial part of the SSH/SFTP done during the "protocol connect" phase.
42
43   (http://curl.haxx.se/bug/view.cgi?id=3006786)
44
45 Yang Tse (2 June 2010)
46 - Added missing new libcurl files to non-configure targets. Adjusted
47   libcurl standard internal header inclusions in new files. Fixed an
48   SPNEGO related memory leak. Fixed several LDAP related compilation
49   issues, and fixed some compiler warnings.
50
51 Daniel Stenberg (1 June 2010)
52 - Igor Novoseltsev reported a problem with the multi socket API and using
53   timeouts and timers. It boiled down to a problem with libcurl's use of
54   GetTickCount() interally to figure out the current time, while Igor's own
55   application code used another function call.
56
57   It made his app call the socket API timeout function a bit _before_ libcurl
58   would consider the timeout to trigger, and that could easily lead to
59   timeouts or stalls in the app. It seems GetTickCount() in general often has
60   no better resolution than 16ms and switching to the alternative function
61   QueryPerformanceCounter has its share of problems:
62       http://www.virtualdub.org/blog/pivot/entry.php?id=106
63
64   We address this problem by simply having libcurl treat timers that already
65   has occured or will occur within 40ms subject for treatment. I'm confident
66   that there are other implementations and operating systems with similarly in
67   accurate timer functions so it makes sense to have applied generically and I
68   don't believe we sacrifice much by adding a 40ms inaccuracy on these
69   timeouts.
70
71 Kamil Dudka (27 May 2010)
72 - added a new test for CRL support (test313)
73
74 - Tor Arntsen changed the alternative definition of bool to use enum instead
75   of unsigned char.
76
77 Daniel Stenberg (25 May 2010)
78 - Julien Chaffraix fixed the warning seen when compiling lib/rtmp.c: one
79   unused variables, several unused arguments and some missing #include.
80
81 - Julien Chaffraix fixed 2 OOM errors: a missing NULL-check in
82   lib/http_negociate.c and a potential NULL dereferencing in lib/splay.c
83
84 - Howard Chu brought a patch that makes the LDAP code much cleaner, nicer and
85   in general being a better libcurl citizen. If a new enough OpenLDAP version
86   is detect, the new and shiny lib/openldap.c code is then used instead of the
87   old cruft.
88
89 Daniel Stenberg (21 May 2010)
90 - Eric Mertens posted bug #3003705: when we made TFTP use the correct timeout
91   option when sent to the server (fixed May 18th 2010) it became obvious that
92   libcurl used invalid timeout values (300 by default while the RFC allows
93   nothing above 255). While of course it is obvious that as TFTP has worked
94   thus far without being able to set timeout at all, just removing the setting
95   wouldn't make any difference in behavior. I decided to still keep it (but
96   fix the problem) as it now actually allows for easier (future) customization
97   of the timeout.
98
99   (http://curl.haxx.se/bug/view.cgi?id=3003705)
100
101 - Douglas Kilpatrick filed bug report #3004787 and pointed out that the TFTP
102   code didn't handle block id wraps correctly. His suggested fix inspired the
103   fix I committed.
104
105   (http://curl.haxx.se/bug/view.cgi?id=3004787)
106
107 Daniel Stenberg (20 May 2010)
108 - Tanguy Fautre brought a fix to allow curl to build with Microsoft VC10.
109
110 Daniel Stenberg (18 May 2010)
111 - Eric Mertens posted bug report #3003005 pointing out that the libcurl TFTP
112   code was not sending the timeout option properly to the server, and
113   suggested a fix.
114
115   (http://curl.haxx.se/bug/view.cgi?id=3003005)
116
117 Kamil Dudka (16 May 2010)
118 - Pavel Raiskup introduced a new option CURLOPT_FNMATCH_DATA in order to pass
119   a custom data pointer to the callback specified by CURLOPT_FNMATCH_FUNCTION.
120
121 Daniel Stenberg (14 May 2010)
122 - John-Mark Bell filed bug #3000052 that identified a problem (with an
123   associated patch) with the OpenSSL handshake state machine when the multi
124   interface is used:
125
126   Performing an https request using a curl multi handle and using select or
127   epoll to wait for events results in a hang. It appears that the cause is the
128   fix for bug #2958179, which makes ossl_connect_common unconditionally return
129   from the step 2 loop when fetching from a multi handle.
130
131   When ossl_connect_step2 has completed, it updates connssl->connecting_state
132   to ssl_connect_3. ossl_connect_common will then return to the caller, as a
133   multi handle is in use. Eventually, the client code will call
134   curl_multi_fdset to obtain an updated fdset to select or epoll on. For https
135   requests, curl_multi_fdset will cause https_getsock to be called.
136   https_getsock will only return a socket handle if the connecting_state is
137   ssl_connect_2_reading or ssl_connect_2_writing.  Therefore, the client will
138   never obtain a valid fdset, and thus not drive the multi handle, resulting
139   in a hang.
140
141   (http://curl.haxx.se/bug/view.cgi?id=3000052)
142
143 - Sebastian V reported bug #3000056 identifying a problem with redirect
144   following. It showed that when curl followed redirects it didn't properly
145   ignore the response body of the 30X response if that response was using
146   compressed Content-Encoding!
147
148   (http://curl.haxx.se/bug/view.cgi?id=3000056)
149
150 Daniel Stenberg (12 May 2010)
151 - Howard Chu brought support for RTMP. This is powered by the underlying
152   librtmp library. It supports a range of variations and "sub-protocols"
153   within the RTMP family.
154
155 - Pavel Raiskup brought support for FTP directory wildcard matching to allow
156   selective downloading. To provide that, a set of new options were added:
157
158    CURLOPT_WILDCARDMATCH
159    CURLOPT_CHUNK_BGN_FUNCTION
160    CURLOPT_CHUNK_END_FUNCTION
161    CURLOPT_CHUNK_DATA
162    CURLOPT_FNMATCH_FUNCTION
163
164   There were also a set of new tests added (574 - 577) to verify this.
165
166 Kamil Dudka (11 May 2010)
167 - CRL support in libcurl-NSS has been completely broken. Now it works. Original
168   bug report: https://bugzilla.redhat.com/581926
169
170 Daniel Stenberg (7 May 2010)
171 - Dirk Manske reported a regression. When connecting with the multi interface,
172   there were situations where libcurl wouldn't store connect time correctly as
173   it used to (and is documented to) do.
174
175   Using his fine sample program we could repeat it, and I wrote up test case
176   573 using that code. The problem does not easily show itself using the local
177   test suite though.
178
179   The fix, also as suggested by Dirk, is a bit on the ugly side as it adds yet
180   another call to Curl_verboseconnect() and setting the TIMER_CONNECT time.
181   That situation is subject for some closer inspection in the future.
182
183 - Howard Chu split the I/O handling functions into private handlers.
184
185   Howard Chu brought the bulk work of this patch that properly moves out the
186   sending and recving of data to the parts of the code that are properly
187   responsible for the various ways of doing so.
188
189   Daniel Stenberg assisted with polishing a few bits and fixed some minor
190   flaws in the original patch.
191
192   Another upside of this patch is that we now abuse CURLcodes less with the
193   "magic" -1 return codes and instead use CURLE_AGAIN more consistently.
194
195 Daniel Stenberg (5 May 2010)
196 - Hoi-Ho Chan introduced support for using the PolarSSL library. You control
197   this with the new configure option --with-polarssl.
198
199 Daniel Stenberg (29 Apr 2010)
200 - Ben Greear made telnet a lot better/easier to use by an application:
201
202   The main change is to allow input from user-specified methods, when they are
203   specified with CURLOPT_READFUNCTION.  All calls to fflush(stdout) in
204   telnet.c were removed, which makes using 'curl telnet://foo.com' painful
205   since prompts and other data are not always returned to the user promptly.
206   Use 'curl --no-buffer telnet://foo.com' instead.  In general, the user
207   should have their CURLOPT_WRITEFUNCTION do a fflush for interactive use.
208
209   Also fix assumption that reading from stdin never returns < 0.
210   Old code could crash in that case.
211
212   Call progress functions in telnet main loop.
213
214 Daniel Stenberg (26 Apr 2010)
215 - Make use of the libssh2_init/exit functions that libssh2 added in version
216   1.2.5. Using them will improve how libcurl works in threaded situations when
217   SCP and SFTP are transfered.
218
219 Daniel Stenberg (25 Apr 2010)
220 - Based on work by Kamil Dudka, I've introduced the new configure option
221   --enable-threaded-resolver. When used, the configure script will check for
222   pthreads and if around, it will build libcurl to use pthreads to do name
223   resolving in a threaded manner. Note that this is just a fix to offer an
224   option that can enable the code that already included. The threader resolver
225   code was mostly added on Jan 26 2010.
226
227 Daniel Stenberg (24 Apr 2010)
228 - Alex Bligh introduced the --proto and -proto-redir options that limit what
229   protocols curl accepts for the requests and when following redirects.
230
231 Kamil Dudka (24 Apr 2010)
232 - Fixed test536 in order to not fail with threaded DNS resolver and tweaked
233   comments in certain examples using curl_multi_fdset().
234
235 - Fixed SSL handshake timeout underflow in libcurl-NSS, which caused test405
236   to hang on a slow machine.
237
238 Daniel Stenberg (21 Apr 2010)
239 - The -O option caused curl to crash on windows and DOS due to the tool
240   writing out of boundary memory.
241
242 Yang Tse (20 Apr 2010)
243 - Ruslan Gazizov detected that MSVC makefiles were using wsock32.lib instead
244   of ws2_32.lib, this generated linking issues on MSVC IPv6 enabled builds
245   that were done using those makefiles.
246
247 Daniel Stenberg (19 Apr 2010)
248 - -J/--remote-header-name didn't strip trailing carriage returns or linefeeds
249   properly, so they could be used in the file name.
250
251 Daniel Stenberg (16 Apr 2010)
252 - Jerome Vouillon made the GnuTLS SSL handshake phase non-blocking.
253
254 - The recent overhaul of the SSL recv function made the GnuTLS specific code
255   treat a zero returned from gnutls_record_recv() as an error, and this caused
256   our HTTPS test cases to fail. We leave it to upper layer code to detect if
257   an EOF is a problem or not.
258
259 - I reverted the resolver fix from yesterday and instead removed all uses of
260   AI_CANONNAME all over libcurl and made the only user of that info (krb5.c)
261   use the host name from the URL instead. No reverse resolving is a good
262   thing.
263
264 - Paul Howarth made configure properly detect GSS "on ancient Linux distros"
265   by editing in which order we use headers to detect GSS.
266
267 Daniel Stenberg (15 Apr 2010)
268 - Rainer Canavan filed bug report #2987196 that identified libcurl doing
269   unnecesary reverse name lookups in many cases when built to use IPv4 and
270   getaddrinfo(). The logic for IPv6 is now used for IPv4 too.
271
272   (http://curl.haxx.se/bug/view.cgi?id=2963679)
273
274 Version 7.20.1 (14 April 2010)
275
276 Daniel Stenberg (9 Apr 2010)
277 - Prefixing the FTP quote commands with an asterisk really only worked for the
278   postquote actions. This is now fixed and test case 227 has been extended to
279   verify.
280
281 Kamil Dudka (4 Apr 2010)
282 - Eliminated a race condition in Curl_resolv_timeout().
283
284 - Refactorized interface of Curl_ssl_recv()/Curl_ssl_send().
285
286 - libcurl-NSS now provides more accurate messages and error codes in case of
287   client certificate problem.  Either during connection, or transfer phase.
288
289 Daniel Stenberg (1 Apr 2010)
290 - Matt Wixson found and fixed a bug in the SCP/SFTP area where the code
291   treated a 0 return code from libssh2 to be the same as EAGAIN while in
292   reality it isn't. The problem caused a hang in SFTP transfers from a
293   MessageWay server.
294
295 Daniel Stenberg (28 Mar 2010)
296 - Ben Greear: If you pass a URL to pop3 that does not contain a message ID as
297   part of the URL, it would previously ask for 'INBOX' which just causes the
298   pop3 server to return an error.
299
300   Now libcurl treats en empty message ID as a request for LIST (list of pop3
301   message IDs).  User's code could then parse this and download individual
302   messages as desired.
303
304 Daniel Stenberg (27 Mar 2010)
305 - Ben Greear brought a patch that from now on allows all protocols to specify
306   name and user within the URL, in the same manner HTTP and FTP have been
307   allowed to in the past - although far from all of the libcurl supported
308   protocls actually have that feature in their URL definition spec.
309
310 Daniel Stenberg (26 Mar 2010)
311 - Ben Greear brought code that makes the rate limiting code for the easy
312   interface a bit smoother as it introduces sub-second sleeps during it and it
313   also takes the buffer sizes into account.
314
315 Daniel Stenberg (24 Mar 2010)
316 - Bob Richmond: There's an annoying situation where libcurl will read new HTTP
317   response data from a socket, then check if it's a timeout if one is set. If
318   the last packet received constitutes the end of the response body, libcurl
319   still treats it as a timeout condition and reports a message like:
320
321   "Operation timed out after 3000 milliseconds with 876 out of 876 bytes
322   received"
323
324   It should only a timeout if the timer lapsed and we DIDN'T receive the end
325   of the response body yet.
326
327 - Christopher Conroy fixed a problem with RTSP and GET_PARAMETER reported
328   to us by Massimo Callegari. There's a new test case 572 that verifies this
329   now.
330
331 - The 'ares' subtree has been removed from the source repository. It was
332   always a separate project that sort of piggybacked on the curl project since
333   the dawn of times and now the time has come for it to go stand on its own
334   legs and continue living its own life. All details on c-ares and its new
335   source code repository is found at http://c-ares.haxx.se/
336
337 Daniel Stenberg (23 Mar 2010)
338 - Kenny To filed the bug report #2963679 with patch to fix a problem he
339   experienced with doing multi interface HTTP POST over a proxy using
340   PROXYTUNNEL. He found a case where it would connect fine but bits.tcpconnect
341   was not set correct so libcurl didn't work properly.
342
343   (http://curl.haxx.se/bug/view.cgi?id=2963679)
344
345 - Akos Pasztory filed debian bug report #572276
346   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572276 mentioning a problem
347   with a resource that returns chunked-encoded _and_ with a Content-Length
348   and libcurl failed to properly ignore the latter information.
349
350 - Hauke Duden provided an example program that made the multi interface crash.
351   His example simply used the multi interface and did first one FTP transfer
352   and after completion it used a second easy handle and did another FTP
353   transfer on the same FTP server.
354
355   This triggered a bug in the "delayed easy handle kill" system that curl
356   uses: when an FTP connection is left alive it must keep an easy handle
357   around internally - only for the purpose of having an easy handle when it
358   later disconnects it. The code assumed that when the easy handle was removed
359   and an internal reference was made, that version could be killed later on
360   when a new easy handle came using the same connection. This was wrong as
361   Hauke's example showed that the removed handle wasn't killed for real until
362   later. This caused a double close attempt => segfault.
363
364 Daniel Stenberg (22 Mar 2010)
365 - Thomas Lopatic fixed the alarm()-based DNS timeout:
366
367   Looking at the code of Curl_resolv_timeout() in hostip.c, I think that in
368   case of a timeout, the signal handler for SIGALRM never gets removed. I
369   think that in my case it gets executed at some point later on when execution
370   has long left Curl_resolv_timeout() or even the cURL library.
371
372   The code that is jumped to with siglongjmp() simply sets the error message
373   to "name lookup timed out" and then returns with CURLRESOLV_ERROR. I guess
374   that instead of simply returning without cleaning up, the code should have a
375   goto that jumps to the spot right after the call to Curl_resolv().
376
377 Kamil Dudka (22 Mar 2010)
378 - Douglas Steinwand contributed a patch fixing insufficient initialization in
379   Curl_clone_ssl_config()
380
381 Daniel Stenberg (21 Mar 2010)
382 - Ben Greear improved TFTP: the error code returning and the treatment
383   of TSIZE == 0 when uploading.
384
385 - We've switched from CVS to git. See http://curl.haxx.se/source.html
386
387 Kamil Dudka (19 Mar 2010)
388 - Improved Curl_read() to not ignore the error returned from Curl_ssl_recv().
389
390 Daniel Stenberg (15 Mar 2010)
391 - Constantine Sapuntzakis brought a patch:
392
393   The problem mentioned on Dec 10 2009
394   (http://curl.haxx.se/bug/view.cgi?id=2905220) was only partially fixed.
395   Partially because an easy handle can be associated with many connections in
396   the cache (e.g. if there is a redirect during the lifetime of the easy
397   handle).  The previous patch only cleaned up the first one. The new fix now
398   removes the easy handle from all connections, not just the first one.
399
400 Daniel Stenberg (6 Mar 2010)
401 - Ben Greear brought a patch that fixed the rate limiting logic for TFTP when
402   the easy interface was used.
403
404 Daniel Stenberg (5 Mar 2010)
405 - Daniel Johnson provided fixes for building curl with the clang compiler.
406
407 Yang Tse (5 Mar 2010)
408 - Constantine Sapuntzakis detected and fixed a double free in builds done
409   with threaded resolver enabled (Windows default configuration) that would
410   get triggered when a curl handle is closed while doing DNS resolution.
411
412 Daniel Stenberg (2 Mar 2010)
413 - [Daniel Johnson] I've been trying to build libcurl with clang on Darwin and
414   ran into some issues with the GSSAPI tests in configure.ac. The tests first
415   try to determine the include dirs and libs and set CPPFLAGS and LIBS
416   accordingly. It then checks for the headers and finally sets LIBS a second
417   time, causing the libs to be included twice. The first setting of LIBS seems
418   redundant and should be left out, since the first part is otherwise just
419   about finding headers.
420
421   My second issue is that 'krb5-config --libs gssapi' on Darwin is less than
422   useless and returns junk that, while it happens to work with gcc, causes
423   clang to choke. For example, --libs returns $CFLAGS along with the libs,
424   which is really retarded. Simply setting 'LIBS="$LIBS -lgssapi_krb5
425   -lresolv"' on Darwin is sufficient.
426
427 - Based on patch provided by Jacob Moshenko, the transfer logic now properly
428   makes sure that when using sub-second timeouts, there's no final bad 1000ms
429   wait. Previously, a sub-second timeout would often make the elapsed time end
430   up the time rounded up to the nearest second (e.g. 1s for 200ms timeout)
431
432 - Andrei Benea filed bug report #2956698 and pointed out that the
433   CURLOPT_CERTINFO feature leaked memory due to a missing OpenSSL function
434   call. He provided the patch to fix it too.
435
436   http://curl.haxx.se/bug/view.cgi?id=2956698
437
438 - Markus Duft pointed out in bug #2961796 that even though Interix has a
439   poll() function it doesn't quite work the way we want it so we must disable
440   it, and he also provided a patch for it.
441
442   http://curl.haxx.se/bug/view.cgi?id=2961796
443
444 - Made the pingpong timeout code properly deal with the response timeout AND
445   the global timeout if set. Also, as was reported in the bug report #2956437
446   by Ryan Chan, the time stamp to use as basis for the per command timeout was
447   not set properly in the DONE phase for FTP (and not for SMTP) so I fixed
448   that just now. This was a regression compared to 7.19.7 due to the
449   conversion of FTP code over to the generic pingpong concepts.
450
451   http://curl.haxx.se/bug/view.cgi?id=2956437
452
453 Daniel Stenberg (1 Mar 2010)
454 - Ben Greear provided an update for TFTP that fixes upload.
455
456 - Wesley Miaw reported bug #2958179 which identified a case of looping during
457   OpenSSL based SSL handshaking even though the multi interface was used and
458   there was no good reason for it.
459
460   http://curl.haxx.se/bug/view.cgi?id=2958179
461
462 Daniel Stenberg (26 Feb 2010)
463 - Pat Ray in bug #2958474 pointed out an off-by-one case when receiving a
464   chunked-encoding trailer.
465
466   http://curl.haxx.se/bug/view.cgi?id=2958474
467
468 Daniel Fandrich (25 Feb 2010)
469 - Fixed a couple of out of memory leaks and a segfault in the SMTP & IMAP code.
470
471 Yang Tse (25 Feb 2010)
472 - I fixed bug report #2958074 indicating
473   (http://curl.haxx.se/bug/view.cgi?id=2958074) that curl on Windows with
474   option --trace-time did not use local time when timestamping trace lines.
475   This could also happen on other systems depending on time souurce.
476
477 Patrick Monnerat (22 Feb 2010)
478 - Proper handling of STARTTLS on SMTP, taking CURLUSESSL_TRY into account.
479 - SMTP falls back to RFC821 HELO when EHLO fails (and SSL is not required).
480 - Use of true local host name (i.e.: via gethostname()) when available, as
481   default argument to SMTP HELO/EHLO.
482 - Test case 804 for HELO fallback.
483
484 Daniel Stenberg (20 Feb 2010)
485 - Fixed the SMTP compliance by making sure RCPT TO addresses are specified
486   properly in angle brackets. Recipients provided with CURLOPT_MAIL_RCPT now
487   get angle bracket wrapping automatically by libcurl unless the recipient
488   starts with an angle bracket as then the app is assumed to deal with that
489   properly on its own.
490
491 - I made the SMTP code expect a 250 response back from the server after the
492   full DATA has been sent, and I modified the test SMTP server to also send
493   that response. As usual, the DONE operation that is made after a completed
494   transfer is still not doable in a non-blocking way so this waiting for 250
495   is unfortunately made blockingly.
496
497 Yang Tse (14 Feb 2010)
498 - Overhauled test suite getpart() function. Fixing potential out of bounds
499   stack and memory overwrites triggered with huge test case definitions.
500
501 Daniel Stenberg (13 Feb 2010)
502 - Martin Hager reported and fixed a problem with a missing quote in libcurl.m4
503
504   (http://curl.haxx.se/bug/view.cgi?id=2951319)
505
506 - Tom Donovan fixed the CURL_FORMAT_* defines when building with cmake.
507
508   (http://curl.haxx.se/bug/view.cgi?id=2951269)
509
510 Daniel Stenberg (12 Feb 2010)
511 - Jack Zhang reported a problem with SMTP: we wrongly used multiple addresses
512   in the same RCPT TO line, when they should be sent in separate single
513   commands. I updated test case 802 to verify this.
514
515 - I also fixed a bad use of my_setopt_str() of CURLOPT_MAIL_RCPT in the curl
516   tool which made it try to output it as string for the --libcurl feature
517   which could lead to crashes.
518
519 Yang Tse (11 Feb 2010)
520 - Steven M. Schweda fixed VMS builder bad behavior when used in a batch job,
521   removed obsolete batch_compile.com and defines.com and updated VMS readme.
522
523 Version 7.20.0 (9 February 2010)
524
525 Daniel Stenberg (9 Feb 2010)
526 - When downloading compressed content over HTTP and the app asked libcurl to
527   automatically uncompress it with the CURLOPT_ENCODING option, libcurl could
528   wrongly provide the callback with more data than the maximum documented
529   amount. An application could thus get tricked into badness if the maximum
530   limit was trusted to be enforced by libcurl itself (as it is documented).
531
532   This is further detailed and explained in the libcurl security advisory
533   20100209 at
534
535     http://curl.haxx.se/docs/adv_20100209.html
536
537 Daniel Fandrich (3 Feb 2010)
538 - Changed the Watcom makefiles to make them easier to keep in sync with
539   Makefile.inc since that can't be included directly.
540
541 Yang Tse (2 Feb 2010)
542 - Symbol CURL_FORMAT_OFF_T now obsoleted, will be removed in a future release,
543   symbol will not be available when building with CURL_NO_OLDIES defined. Use
544   of CURL_FORMAT_CURL_OFF_T is preferred since 7.19.0
545
546 Daniel Stenberg (1 Feb 2010)
547 - Using the multi_socket API, it turns out at times it seemed to "forget"
548   connections (which caused a hang). It turned out to be an existing (7.19.7)
549   bug in libcurl (that's been around for a long time) and it happened like
550   this:
551
552   The app calls curl_multi_add_handle() to add a new easy handle, libcurl will
553   then set it to timeout in 1 millisecond so libcurl will tell the app about
554   it.
555
556   The app's timeout fires off that there's a timeout, the app calls libcurl as
557   we so often document it:
558
559   do {
560    res = curl_multi_socket_action(... TIMEOUT ...);
561   } while(CURLM_CALL_MULTI_PERFORM == res);
562
563   And this is the problem number one:
564
565   When curl_multi_socket_action() is called with no specific handle, but only
566   a timeout-action, it will *only* perform actions within libcurl that are
567   marked to run at this time. In this case, the request would go from INIT to
568   CONNECT and return CURLM_CALL_MULTI_PERFORM. When the app then calls libcurl
569   again, there's no timer set for this handle so it remains in the CONNECT
570   state. The CONNECT state is a transitional state in libcurl so it reports no
571   sockets there, and thus libcurl never tells the app anything more about that
572   easy handle/connection.
573
574   libcurl _does_ set a 1ms timeout for the handle at the end of
575   multi_runsingle() if it returns CURLM_CALL_MULTI_PERFORM, but since the loop
576   is instant the new job is not ready to run at that point (and there's no
577   code that makes libcurl call the app to update the timout for this new
578   timeout). It will simply rely on that some other timeout will trigger later
579   on or that something else will update the timeout callback. This makes the
580   bug fairly hard to repeat.
581
582   The fix made to adress this issue:
583
584   We introduce a loop in lib/multi.c around all calls to multi_runsingle() and
585   simply check for CURLM_CALL_MULTI_PERFORM internally. This has the added
586   benefit that this goes in line with my long-term wishes to get rid of the
587   CURLM_CALL_MULTI_PERFORM all together from the public API.
588
589   The downside of this fix, is that the counter we return in 'running_handles'
590   in several of our public functions then gets a slightly new and possibly
591   confusing behavior during times:
592
593   If an app adds a handle that fails to connect (very quickly) it may just
594   as well never appear as a 'running_handle' with this fix. Previously it
595   would first bump the counter only to get it decreased again at next call.
596   Even I have used that change in handle counter to signal "end of a
597   transfer". The only *good* way to find the end of a individual transfer
598   is calling curl_multi_info_read() to see if it returns one.
599
600   Of course, if the app previously did the looping before it checked the
601   counter, it really shouldn't be any new effect.
602
603 Yang Tse (26 Jan 2010)
604 - Constantine Sapuntzakis' and Joshua Kwan's work done in the last four months
605   relative to the asynchronous DNS lookups, along with with some integration
606   adjustments I have done are finally committed to CVS.
607
608   Currently these enhancements will benefit builds done using c-ares on any
609   platform as well as Windows builds using the default threaded resolver.
610
611   This release does not make generally available POSIX threaded DNS lookups
612   yet. There is no configure option to enable this feature yet. It is possible
613   to experimantally try this feature running configure with compiler flags that
614   make simultaneous definition of preprocessor symbols USE_THREADS_POSIX and
615   HAVE_PTHREAD_H, as well as whatever reentrancy compiler flags and linker ones
616   are required to link and properly use pthread_* functions on each platform.
617
618 Daniel Stenberg (26 Jan 2010)
619 - Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the
620   proxy that cannot be resolved when using c-ares. This matches the behaviour
621   when not using c-ares.
622
623 Björn Stenberg (23 Jan 2010)
624 - Added a new flag: -J/--remote-header-name. This option tells the
625   -O/--remote-name option to use the server-specified Content-Disposition
626   filename instead of extracting a filename from the URL.
627
628 Daniel Stenberg (21 Jan 2010)
629 - Chris Conroy brought support for RTSP transfers, and with it comes 8(!) new
630   libcurl options for controlling what to get and how to receive posssibly
631   interleaved RTP data.
632
633 Daniel Stenberg (20 Jan 2010)
634 - As was pointed out on the http-state mailing list, the order of cookies in a
635   HTTP Cookie: header _needs_ to be sorted on the path length in the cases
636   where two cookies using the same name are set more than once using
637   (overlapping) paths. Realizing this, identically named cookies must be
638   sorted correctly. But detecting only identically named cookies and take care
639   of them individually is harder than just to blindly and unconditionally sort
640   all cookies based on their path lengths. All major browsers also already do
641   this, so this makes our behavior one step closer to them in the cookie area.
642
643   Test case 8 was the only one that broke due to this change and I updated it
644   accordingly.
645
646 Daniel Stenberg (19 Jan 2010)
647 - David McCreedy brought a fix and a new test case (129) to make libcurl work
648   again when downloading files over FTP using ASCII and it turns out that the
649   final size of the file is not the same as the initial size the server
650   reported. This is very common since servers don't take the newline
651   conversions into account.
652
653 Kamil Dudka (14 Jan 2010)
654 - Suppressed side effect of OpenSSL configure checks, which prevented NSS from
655   being properly detected under certain circumstances. It had been caused by
656   strange behavior of pkg-config when handling PKG_CONFIG_LIBDIR. pkg-config
657   distinguishes among empty and non-existent environment variable in that case.
658
659 Daniel Stenberg (12 Jan 2010)
660 - Gil Weber reported a peculiar flaw with the multi interface when doing SFTP
661   transfers: curl_multi_fdset() would return -1 and not set and file
662   descriptors several times during a transfer of a single file. It turned out
663   to be due to two different flaws now fixed. Gil's excellent recipe helped me
664   nail this.
665
666 Daniel Stenberg (11 Jan 2010)
667 - Made sure that the progress callback is repeatedly called at a regular
668   interval even during very slow connects.
669
670 - The tests/runtests.pl script now checks to see if the test case that runs is
671   present in the tests/data/Makefile.am and outputs a notice message on the
672   screen if not. Each test file has to be included in that Makefile.am to get
673   included in release archives and forgetting to add files there is a common
674   mistake. This is an attempt to make it harder to forget.
675
676 Daniel Stenberg (9 Jan 2010)
677 - Johan van Selst found and fixed a OpenSSL session ref count leak:
678
679   ossl_connect_step3() increments an SSL session handle reference counter on
680   each call. When sessions are re-used this reference counter may be
681   incremented many times, but it will be decremented only once when done (by
682   Curl_ossl_session_free()); and the internal OpenSSL data will not be freed
683   if this reference count remains positive. When a session is re-used the
684   reference counter should be corrected by explicitly calling
685   SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid
686   introducing a memory leak.
687
688   (http://curl.haxx.se/bug/view.cgi?id=2926284)
689
690 Daniel Stenberg (7 Jan 2010)
691 - Make sure the progress callback is called repeatedly even during very slow
692   name resolves when c-ares is used for resolving.
693
694 Claes Jakobsson (6 Jan 2010)
695 - Julien Chaffraix fixed so that the fragment part in an URL is not sent
696   to the server anymore.
697
698 Kamil Dudka (3 Jan 2010)
699 - Julien Chaffraix eliminated a duplicated initialization in singlesocket().
700
701 Daniel Stenberg (2 Jan 2010)
702 - Make curl support --ssl and --ssl-reqd instead of the previous FTP-specific
703   versions --ftp-ssl and --ftp-ssl-reqd as these options are now used to
704   control SSL/TLS for IMAP, POP3 and SMTP as well in addition to FTP. The old
705   option names are still working but the new ones are the ones listed and
706   documented.
707
708 Daniel Stenberg (1 Jan 2010)
709 - Ingmar Runge enhanced libcurl's FTP engine to support the PRET command. This
710   command is a special "hack" used by the drftpd server, but even though it is
711   a custom extension I've deemed it fine to add to libcurl since this server
712   seems to survive and people keep using it and want libcurl to support
713   it. The new libcurl option is named CURLOPT_FTP_USE_PRET, and it is also
714   usable from the curl tool with --ftp-pret. Using this option on a server
715   that doesn't support this command will make libcurl fail.
716
717   I added test cases 1107 and 1108 to verify the functionality.
718
719   The PRET command is documented at
720   http://www.drftpd.org/index.php/Distributed_PASV
721
722 Yang Tse (30 Dec 2009)
723 - Steven M. Schweda improved VMS build system, and Craig A. Berry helped
724   with the patch and testing.
725
726 Daniel Stenberg (26 Dec 2009)
727 - Renato Botelho and Peter Pentchev brought a patch that makes the libcurl
728   headers work correctly even on FreeBSD systems before v8.
729
730   (http://curl.haxx.se/bug/view.cgi?id=2916915)
731
732 Daniel Stenberg (17 Dec 2009)
733 - David Byron fixed Curl_ossl_cleanup to actually call ENGINE_cleanup when
734   available.
735
736 - Follow-up fix for the proxy fix I did for Jon Nelson's bug. It turned out I
737   was a bit too quick and broke test case 1101 with that change. The order of
738   some of the setups is sensitive. I now changed it slightly again to make
739   sure we do them in this order:
740
741   1 - parse URL and figure out what protocol is used in the URL
742   2 - prepend protocol:// to URL if missing
743   3 - parse name+password off URL, which needs to know what protocol is used
744       (since only some allows for name+password in the URL)
745   4 - figure out if a proxy should be used set by an option
746   5 - if no proxy option, check proxy environment variables
747   6 - run the protocol-specific setup function, which needs to have the proxy
748       already set
749
750 Daniel Stenberg (15 Dec 2009)
751 - Jon Nelson found a regression that turned out to be a flaw in how libcurl
752   detects and uses proxies based on the environment variables. If the proxy
753   was given as an explicit option it worked, but due to the setup order
754   mistake proxies would not be used fine for a few protocols when picked up
755   from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added
756   test case 1106 that verifies this functionality.
757
758   (http://curl.haxx.se/bug/view.cgi?id=2913886)
759
760 Daniel Stenberg (12 Dec 2009)
761 - IMAP, POP3 and SMTP support and their TLS versions (including IMAPS, POP3S
762   and SMTPS) are now supported. The current state may not yet be solid, but
763   the foundation is in place and the test suite has some initial support for
764   these protocols. Work will now persue to make them nice libcurl citizens
765   until release.
766
767   The work with supporting these new protocols was sponsored by
768   networking4all.com - thanks!
769
770 Daniel Stenberg (10 Dec 2009)
771 - Siegfried Gyuricsko found out that the curl manual said --retry would retry
772   on FTP errors in the transient 5xx range. Transient FTP errors are in the
773   4xx range. The code itself only tried on 5xx errors that occured _at login_.
774   Now the retry code retries on all FTP transfer failures that ended with a
775   4xx response.
776
777   (http://curl.haxx.se/bug/view.cgi?id=2911279)
778
779 - Constantine Sapuntzakis figured out a case which would lead to libcurl
780   accessing alredy freed memory and thus crash when using HTTPS (with
781   OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
782   of cleaning things up. I fixed it.
783
784   (http://curl.haxx.se/bug/view.cgi?id=2905220)
785
786 Daniel Stenberg (7 Dec 2009)
787 - Martin Storsjo made libcurl use the Expect: 100-continue header for posts
788   with unknown size. Previously it was only used for posts with a known size
789   larger than 1024 bytes.
790
791 Daniel Stenberg (1 Dec 2009)
792 - If the Expect: 100-continue header has been set by the application through
793   curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
794   data->state.expect100header accordingly - the current code (in 7.19.7 at
795   least) doesn't handle this properly. Martin Storsjo provided the fix!
796
797 Yang Tse (28 Nov 2009)
798 - Added Diffie-Hellman parameters to several test harness certificate files in
799   PEM format. Required by several stunnel versions used by our test harness.
800
801 Daniel Stenberg (28 Nov 2009)
802 - Markus Koetter provided a polished and updated version of Chad Monroe's TFTP
803   rework patch that now integrates TFTP properly into libcurl so that it can
804   be used non-blocking with the multi interface and more. BLKSIZE also works.
805
806   The --tftp-blksize option was added to allow setting the TFTP BLKSIZE from
807   the command line.
808
809 Daniel Stenberg (26 Nov 2009)
810 - Extended and fixed the change I did on Dec 11 for the the progress
811   meter/callback during FTP command/response sequences. It turned out it was
812   really lame before and now the progress meter SHOULD get called at least
813   once per second.
814
815 Daniel Stenberg (23 Nov 2009)
816 - Bjorn Augustsson reported a bug which made curl not report any problems even
817   though it failed to write a very small download to disk (done in a single
818   fwrite call). It turned out to be because fwrite() returned success, but
819   there was insufficient error-checking for the fclose() call which tricked
820   curl to believe things were fine.
821
822 Yang Tse (23 Nov 2009)
823 - David Byron modified Makefile.dist vc8 and vc9 targets in order to allow
824   finer granularity control when generating src and lib makefiles.
825
826 Yang Tse (22 Nov 2009)
827 - I modified configure to force removal of the curlbuild.h file included in
828   distribution tarballs for use by non-configure systems. As intended, this
829   would get overwriten when doing in-tree builds. But VPATH builds would end
830   having two curlbuild.h files, one in the source tree and another in the
831   build tree. With the modification I introduced 5 Nov 2009 this could become
832   an issue when running libcurl's test suite.
833
834 Daniel Stenberg (20 Nov 2009)
835 - Constantine Sapuntzakis identified a write after close, as the sockets were
836   closed by libcurl before the SSL lib were shutdown and they may write to its
837   socket. Detected to at least happen with OpenSSL builds.
838
839 - Jad Chamcham pointed out a bug with connection re-use. If a connection had
840   CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the
841   same proxy with the tunnel option disabled would still wrongly re-use that
842   previous connection and the outcome would only be badness.
843
844 Yang Tse (18 Nov 2009)
845 - I modified the memory tracking system to make it intolerant with zero sized
846   malloc(), calloc() and realloc() function calls.
847
848 Daniel Stenberg (17 Nov 2009)
849 - Constantine Sapuntzakis provided another fix for the DNS cache that could
850   end up with entries that wouldn't time-out:
851
852   1. Set up a first web server that redirects (307) to a http://server:port
853      that's down
854   2. Have curl connect to the first web server using curl multi
855
856   After the curl_easy_cleanup call, there will be curl dns entries hanging
857   around with in_use != 0.
858
859   (http://curl.haxx.se/bug/view.cgi?id=2891591)
860
861 - Marc Kleine-Budde fixed: curl saved the LDFLAGS set during configure into
862   its pkg-config file.  So -Wl stuff ended up in the .pc file, which is really
863   bad, and breaks if there are multiple -Wl in our LDFLAGS (which are in
864   PTXdist). bug #2893592 (http://curl.haxx.se/bug/view.cgi?id=2893592)
865
866 Kamil Dudka (15 Nov 2009)
867 - David Byron improved the configure script to use pkg-config to find OpenSSL
868   (and in particular the list of required libraries) even if a path is given
869   as argument to --with-ssl
870
871 Yang Tse (15 Nov 2009)
872 - I removed enable-thread / disable-thread configure option. These were only
873   placebo options. The library is always built as thread safe as possible on
874   every system.
875
876 Claes Jakobsson (14 Nov 2009)
877 - curl-config now accepts '--configure' to see what arguments was
878   passed to the configure script when building curl.
879
880 Daniel Stenberg (14 Nov 2009)
881 - Claes Jakobsson restored the configure functionality to detect NSS when
882   --with-nss is set but not "yes".
883
884   I think we can still improve that to check for pkg-config in that path etc,
885   but at least this patch brings back the same functionality we had before.
886
887 - Camille Moncelier added support for the file type SSL_FILETYPE_ENGINE for
888   the client certificate. It also disable the key name test as some engines
889   can select a private key/cert automatically (When there is only one key
890   and/or certificate on the hardware device used by the engine)
891
892 Yang Tse (14 Nov 2009)
893 - Constantine Sapuntzakis provided the fix that ensures that an SSL connection
894   won't be reused unless protection level for peer and host verification match.
895
896   I refactored how preprocessor symbol _THREAD_SAFE definition is done.
897
898 Kamil Dudka (12 Nov 2009)
899 - Kevin Baughman provided a fix preventing libcurl-NSS from crash on doubly
900   closed NSPR descriptor. The issue was hard to find, reported several times
901   before and always closed unresolved. More info at the RH bug:
902   https://bugzilla.redhat.com/534176
903
904 - libcurl-NSS now tries to reconnect with TLS disabled in case it detects
905   a broken TLS server. However it does not happen if SSL version is selected
906   manually. The approach was originally taken from PSM. Kaspar Brand helped me
907   to complete the patch. Original bug reports:
908   https://bugzilla.redhat.com/525496
909   https://bugzilla.redhat.com/527771
910
911 Yang Tse (12 Nov 2009)
912 - I modified configure script to make the getaddrinfo function check also
913   verify if the function is thread safe.
914
915 Yang Tse (11 Nov 2009)
916 - Marco Maggi reported that compilation failed when configured --with-gssapi
917   and GNU GSS installed due to a missing mutual exclusion of header files in
918   the Kerberos 5 code path. He also verified that my patch worked for him.
919
920 Daniel Stenberg (11 Nov 2009)
921 - Constantine Sapuntzakis posted bug #2891595
922   (http://curl.haxx.se/bug/view.cgi?id=2891595) which identified how an entry
923   in the DNS cache would linger too long if the request that added it was in
924   use that long. He also provided the patch that now makes libcurl capable of
925   still doing a request while the DNS hash entry may get timed out.
926
927 - Christian Schmitz noticed that the progress meter/callback was not properly
928   used during the FTP connection phase (after the actual TCP connect), while
929   it of course should be. I also made the speed check get called correctly so
930   that really slow servers will trigger that properly too.
931
932 Kamil Dudka (5 Nov 2009)
933 - Dropped misleading timeouts in libcurl-NSS and made sure the SSL socket works
934   in non-blocking mode.
935
936 Yang Tse (5 Nov 2009)
937 - I removed leading 'curl' path on the 'curlbuild.h' include statement in
938   curl.h, adjusting auto-makefiles include path, to enhance portability to
939   OS's without an orthogonal directory tree structure such as OS/400.
940
941 Daniel Stenberg (4 Nov 2009)
942 - I fixed several problems with the transfer progress meter. It showed the
943   wrong percentage for small files, most notable for <1000 bytes and could
944   easily end up showing more than 100% at the end. It also didn't show any
945   percentage, transfer size or estimated transfer times when transferring
946   less than 100 bytes.
947
948 Version 7.19.7 (4 November 2009)
949
950 Daniel Stenberg (2 Nov 2009)
951 - As reported independent by both Stan van de Burgt and Didier Brisebourg,
952   CURLINFO_SIZE_DOWNLOAD (the -w variable size_download) didn't work when
953   getting data from ldap!
954
955 Daniel Stenberg (31 Oct 2009)
956 - Gabriel Kuri reported a problem with CURLINFO_CONTENT_LENGTH_DOWNLOAD if the
957   download was 0 bytes, as libcurl would then return the size as unknown (-1)
958   and not 0. I wrote a fix and test case 566 to verify it.
959
960 Daniel Stenberg (30 Oct 2009)
961 - Liza Alenchery mentioned a problem with re-used SCP connection when a bad
962   auth is used, as it caused a crash. I failed to repeat the issue, but still
963   made a change that now forces the TCP connection used for a freed SCP
964   session to get closed and not be re-used.
965
966 - "Tom" posted a bug report that mentioned how libcurl did wrong when doing a
967   POST using a read callback, with Digest authentication and
968   "Transfer-Encoding: chunked" enforced.  I would then cause the first request
969   to be wrongly sent and then basically hang until the server closed the
970   connection. I fixed the problem and added test case 565 to verify it.
971
972 Daniel Stenberg (25 Oct 2009)
973 - Dima Barsky made the curl cookie parser accept cookies even with blank or
974   unparsable expiry dates and then treat them as session cookies - previously
975   libcurl would reject cookies with a date format it couldn't parse. Research
976   shows that the major browser treat such cookies as session cookies. I
977   modified test 8 and 31 to verify this.
978
979 Daniel Stenberg (21 Oct 2009)
980 - Attempt to use pkg-config for finding out libssh2 installation details
981   during configure.
982
983 - A patch in bug report #2883177 (http://curl.haxx.se/bug/view.cgi?id=2883177)
984   by Johan van Selst introduced the --crlfile option to curl, which makes curl
985   tell libcurl about a file with CRL (certificate revocation list) data to
986   read.
987
988 Daniel Stenberg (18 Oct 2009)
989 - Ray Dassen provided a patch in Debian's bug tracker (bug number #551461)
990   that now makes curl_getdate(3) actually handles RFC 822 formatted dates that
991   use the "single letter military timezones".
992   http://www.rfc-ref.org/RFC-TEXTS/822/chapter5.html has the details.
993
994 - Fixed memory leak in the SCP/SFTP code as it never freed the knownhosts
995   data!
996
997 - John Dennis filed bug report #2873666
998   (http://curl.haxx.se/bug/view.cgi?id=2873666) which identified a problem
999   which made libcurl loop infinitely when given incorrect credentials when
1000   using HTTP GSS negotiate authentication. He also provided a small and simple
1001   patch for it.
1002
1003 - Kevin Baughman found a double close() problem with libcurl-NSS, as when
1004   libcurl called NSS to close the SSL "session" it also closed the actual
1005   socket.
1006
1007 Yang Tse (17 Oct 2009)
1008 - Bug report #2866724 indicated
1009   (http://curl.haxx.se/bug/view.cgi?id=2866724) that curl on Windows failed
1010   when writing files whose file names originally contained characters which
1011   are not valid for file names on Windows. Dan Fandrich provided an initial
1012   patch and another revised one to fix this issue.
1013
1014 Daniel Stenberg (1 Oct 2009)
1015 - Tom Mueller correctly reported in bug report #2870221
1016   (http://curl.haxx.se/bug/view.cgi?id=2870221) that libcurl returned an
1017   incorrect return code from the internal trynextip() function which caused
1018   him grief. This is a regression that was introduced in 7.19.1 and I find it
1019   strange it hasn't hit us harder, but I won't persue into figuring out
1020   exactly why.
1021
1022 - Constantine Sapuntzakis: The current implementation will always set
1023   SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger.  The
1024   patch doesn't do a setsockopt if SO_SNDBUF is already greater than
1025   CURL_WRITE_SIZE. This should help folks who have set up their computer with
1026   large send buffers.
1027
1028 Daniel Stenberg (27 Sep 2009)
1029 - I introduced a maximum limit for received HTTP headers. It is controlled by
1030   the define CURL_MAX_HTTP_HEADER which is even exposed in the public header
1031   file to allow for users to fairly easy rebuild libcurl with a modified
1032   limit. The rationale for a fixed limit is that libcurl is realloc()ing a
1033   buffer to be able to put a full header into it, so that it can call the
1034   header callback with the entire header, but that also risk getting it into
1035   trouble if a server by mistake or willingly sends a header that is more or
1036   less without an end. The limit is set to 100K.
1037
1038 Daniel Stenberg (26 Sep 2009)
1039 - John P. McCaskey posted a bug report that showed how libcurl did wrong when
1040   saving received cookies with no given path, if the path in the request had a
1041   query part. That is means a question mark (?) and characters on the right
1042   side of that. I wrote test case 1105 and fixed this problem.
1043
1044 Kamil Dudka (26 Sep 2009)
1045 - Implemented a protocol independent way to specify blocking direction, used by
1046   transfer.c for blocking. It is currently used only by SCP and SFTP protocols.
1047   This enhancement resolves an issue with 100% CPU usage during SFTP upload,
1048   reported by Vourhey.
1049
1050 Daniel Stenberg (25 Sep 2009)
1051 - Chris Mumford filed bug report #2861587
1052   (http://curl.haxx.se/bug/view.cgi?id=2861587) identifying that libcurl used
1053   the OpenSSL function X509_load_crl_file() wrongly and failed if it would
1054   load a CRL file with more than one certificate within. This is now fixed.
1055
1056 Daniel Stenberg (16 Sep 2009)
1057 - Sven Anders reported that we introduced a cert verfication flaw for OpenSSL-
1058   powered libcurl in 7.19.6. If there was a X509v3 Subject Alternative Name
1059   field in the certficate it had to match and so even if non-DNS and non-IP
1060   entry was present it caused the verification to fail.
1061
1062 Daniel Fandrich (15 Sep 2009)
1063 - Moved the libssh2 checks after the SSL library checks. This helps when
1064   statically linking since libssh2 needs the SSL library link flags to be
1065   set up already to satisfy its dependencies. This wouldn't be necessary if
1066   the libssh2 configure check was changed to use pkg-config since the
1067   --static flag would add the dependencies automatically.
1068
1069 Yang Tse (14 Sep 2009)
1070 - Revert Joshua Kwan's patch committed 11 Sep 2009.
1071
1072   Some systems poll function sets POLLHUP in revents without setting
1073   POLLIN, and sets POLLERR without setting POLLIN and POLLOUT. In some
1074   libcurl code execution paths this could trigger busy wait loops with
1075   high CPU usage until a timeout condition aborted the loop.
1076
1077   The reverted patch addressed the above issue for a very specific case,
1078   when awaiting c-ares to resolve. A libcurl-wide fix for Curl_poll now
1079   superceeds this one.
1080
1081 Guenter Knauf (11 Sep 2009)
1082 - Joshua Kwan provided a patch to pass POLLERR / POLLHUP back to c-ares.
1083   This fixes a loop problem with high CPU usage.
1084
1085 Daniel Stenberg (10 Sep 2009)
1086 - Claes Jakobsson fixed a problem with cookie expiry dates at exctly the epoch
1087   start second "Thu Jan 1 00:00:00 GMT 1970" as the date parser then returns 0
1088   which internally then is treated as a session cookie. That particular date
1089   is now made to get the value of 1.
1090
1091 Daniel Stenberg (2 Sep 2009)
1092 - Daniel Johnson found a flaw in the code converting sftp-errors to libcurl
1093   errors.
1094
1095 Daniel Stenberg (1 Sep 2009)
1096 - Peter Sylvester made a debug feature for Curl_resolv() that now will force
1097   libcurl to resolve 'localhost' whatever name you use in the URL *if* you set
1098   the --interface option to (exactly) "LocalHost". This will enable us to
1099   write tests for custom hosts names but still use a local host server.
1100
1101 - configure now tries to use pkg-config for a number of sub-dependencies even
1102   when cross-compiling. The key to success is then you properly setup
1103   PKG_CONFIG_PATH before invoking configure.
1104
1105   I also improved how NSS is detected by trying nss-config if pkg-config isn't
1106   present, and as a last resort just use the lib name and force the user to
1107   setup the LIBS/LDFLAGS/CFLAGS etc properly. The previous last resort would
1108   add a range of various libs that would almost never be quite correct.
1109
1110 Daniel Stenberg (31 Aug 2009)
1111 - When using the multi interface with FTP and you asked for NOBODY, you did no
1112   QUOTE commands and the request used the same path as the connection had
1113   already changed to, it would decide that no commands would be necessary for
1114   the "DO" action and that was not handled properly but libcurl would instead
1115   hang.
1116
1117 Kamil Dudka (28 Aug 2009)
1118 - Improved error message for not matching certificate subject name in
1119   libcurl-NSS. Originally reported at:
1120   https://bugzilla.redhat.com/show_bug.cgi?id=516056#c9
1121
1122 Patrick Monnerat (24 Aug 2009)
1123 - Introduced a SYST-based test to properly set-up name format when dealing
1124   with the OS/400 FTP server.
1125
1126 - Fixed an ftp_readresp() bug preventing detection of failing control socket
1127   and causing FTP client to loop forever.
1128
1129 Daniel Stenberg (24 Aug 2009)
1130 - Marc de Bruin pointed out that configure --with-gnutls=PATH didn't work
1131   properly and provided a fix. http://curl.haxx.se/bug/view.cgi?id=2843008
1132
1133 - Eric Wong introduced support for the new option -T. (dot) that makes curl
1134   read stdin in a non-blocking fashion. This also brings back -T- (minus) to
1135   the previous blocking behavior since it could break stuff for people at
1136   times.
1137
1138 Michal Marek (21 Aug 2009)
1139 - With CURLOPT_PROXY_TRANSFER_MODE, avoid sending invalid URLs like
1140   ftp://example.com;type=i if the user specified ftp://example.com without the
1141   slash.
1142
1143 Daniel Stenberg (21 Aug 2009)
1144 - Andre Guibert de Bruet pointed out a missing return code check for a
1145   strdup() that could lead to segfault if it returned NULL. I extended his
1146   suggest patch to now have Curl_retry_request() return a regular return code
1147   and better check that.
1148
1149 - Lots of good work by Krister Johansen, mostly related to pipelining:
1150
1151   Fix SIGSEGV on free'd easy_conn when pipe unexpectedly breaks
1152   Fix data corruption issue with re-connected transfers
1153   Fix use after free if we're completed but easy_conn not NULL
1154
1155 Kamil Dudka (13 Aug 2009)
1156 - Changed NSS code to not ignore the value of ssl.verifyhost and produce more
1157   verbose error messages. Originally reported at:
1158   https://bugzilla.redhat.com/show_bug.cgi?id=516056
1159
1160 Daniel Stenberg (12 Aug 2009)
1161 - Karl Moerder fixed the Makefile.vc* makefiles to include the new file
1162   nonblock.c so that they work fine again
1163
1164 - I expanded test 517 with a bunch of more dates that originate from the
1165   Chrome browser test suite. It turns out most of them get parsed the same
1166   way.
1167
1168 Version 7.19.6 (12 August 2009)
1169
1170 Daniel Stenberg (12 Aug 2009)
1171 - Carsten Lange reported a bug and provided a patch for TFTP upload and the
1172   sending of the TSIZE option. I don't like fixing bugs just hours before
1173   a release, but since it was broken and the patch fixes this for him I decided
1174   to get it in anyway.
1175
1176 Daniel Stenberg (11 Aug 2009)
1177 - Peter Sylvester made the HTTPS test server use specific certificates for
1178   each test, so that the test suite can now be used to actually test the
1179   verification of cert names etc. This made an error show up in the OpenSSL-
1180   specific code where it would attempt to match the CN field even if a
1181   subjectAltName exists that doesn't match. This is now fixed and verified
1182   in test 311.
1183
1184 - Benbuck Nason posted the bug report #2835196
1185   (http://curl.haxx.se/bug/view.cgi?id=2835196), fixing a few compiler
1186   warnings when mixing ints and bools.
1187
1188 Daniel Fandrich (10 Aug 2009)
1189 - Fixed a memory leak in the FTP code and an off-by-one heap buffer overflow.
1190
1191 Daniel Fandrich (9 Aug 2009)
1192 - Fixed some memory leaks in the command-line tool that caused most of the
1193   torture tests to fail.
1194
1195 Daniel Stenberg (2 Aug 2009)
1196 - Curt Bogmine reported a problem with SNI enabled on a particular server. We
1197   should introduce an option to disable SNI, but as we're in feature freeze
1198   now I've addressed the obvious bug here (pointed out by Peter Sylvester): we
1199   shouldn't try to enable SNI when SSLv2 or SSLv3 is explicitly selected.
1200   Code for OpenSSL and GnuTLS was fixed. NSS doesn't seem to have a particular
1201   option for SNI, or are we simply not using it?
1202
1203 Daniel Stenberg (1 Aug 2009)
1204 - Scott Cantor posted the bug report #2829955
1205   (http://curl.haxx.se/bug/view.cgi?id=2829955) mentioning the recent SSL cert
1206   verification flaw found and exploited by Moxie Marlinspike. The presentation
1207   he did at Black Hat is available here:
1208   https://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike
1209
1210   Apparently at least one CA allowed a subjectAltName or CN that contain a
1211   zero byte, and thus clients that assumed they would never have zero bytes
1212   were exploited to OK a certificate that didn't actually match the site. Like
1213   if the name in the cert was "example.com\0theatualsite.com", libcurl would
1214   happily verify that cert for example.com.
1215
1216   libcurl now better uses the length of the extracted name, not using the zero
1217   termination for getting the string length.
1218
1219   This fixing only made and needed in OpenSSL interfacing code.
1220
1221 - Tanguy Fautre pointed out that OpenSSL's function RAND_screen() (present
1222   only in some OpenSSL installs - like on Windows) isn't thread-safe and we
1223   agreed that moving it to the global_init() function is a decent way to deal
1224   with this situation.
1225
1226 - Alexander Beedie provided the patch for a noproxy problem: If I have set
1227   CURLOPT_NOPROXY to "*", or to a host that should not use a proxy, I actually
1228   could still end up using a proxy if a proxy environment variable was set.
1229
1230 Daniel Stenberg (27 Jul 2009)
1231 - All the quote options (CURLOPT_QUOTE, CURLOPT_POSTQUOTE and
1232   CURLOPT_PREQUOTE) now accept a preceeding asterisk before the command to
1233   send when using FTP, as a sign that libcurl shall simply ignore the response
1234   from the server instead of treating it as an error. Not treating a 400+ FTP
1235   response code as an error means that failed commands will not abort the
1236   chain of commands, nor will they cause the connection to get disconnected.
1237
1238 Daniel Stenberg (26 Jul 2009)
1239 - Johan van Selst posted bug report #2825989
1240   (http://curl.haxx.se/bug/view.cgi?id=2825989) pointing out that
1241   OpenSSL-powered libcurl didn't support the SHA-2 digest algorithm, and
1242   provided the solution too: to use OpenSSL_add_all_algorithms() in addition
1243   to the older SSLeay_* alternative. OpenSSL_add_all_algorithms was added in
1244   OpenSSL 0.9.5
1245
1246 Daniel Stenberg (23 Jul 2009)
1247 - Added CURLOPT_SSH_KNOWNHOSTS, CURLOPT_SSH_KEYFUNCTION, CURLOPT_SSH_KEYDATA.
1248   They introduce known_host support for SSH keys to libcurl. See docs for
1249   details. Note that this feature depends on a new enough libssh2 version, to
1250   be supported in libssh2 1.2 and later (or current git repo at this time).
1251
1252 Michal Marek (22 Jul 2009)
1253 - David Binderman found a memory and fd leak in lib/gtls.c:load_file()
1254   (https://bugzilla.novell.com/523919). When looking at the code, I found that
1255   also the ptr pointer can leak.
1256
1257 Kamil Dudka (20 Jul 2009)
1258 - Claes Jakobsson improved the support for client certificates handling in
1259   NSS-powered libcurl. Now the client certificates can be selected
1260   automatically by a NSS built-in hook. Additionally pre-login to all PKCS11
1261   slots is no more performed. It used to cause problems with HW tokens.
1262
1263 - Fixed reference counting for NSS client certificates. Now the PEM reader
1264   module should be always properly unloaded on Curl_nss_cleanup(). If the
1265   unload fails though, libcurl will try to reuse the already loaded instance.
1266
1267 Daniel Fandrich (15 Jul 2009)
1268 - Added nonblock.c to the non-automake makefiles (note that the dependencies
1269   in the Watcom makefiles aren't quite correct).
1270
1271 Michal Marek (15 Jul 2009)
1272 - Changed the description of CURLINFO_OS_ERRNO to make it clear that the
1273   errno is not reset on success.
1274
1275 Guenter Knauf (14 Jul 2009)
1276 - renamed generated config.h to curl_config.h to avoid any future clashes
1277   with config.h from other projects.
1278
1279 Daniel Stenberg (9 Jul 2009)
1280 - Eric Wong introduced curlx_nonblock() that the curl tool now (re-)uses for
1281   setting a file descriptor non-blocking. Used by the functionality Eric
1282   himself brough on June 15th.
1283
1284 Daniel Stenberg (8 Jul 2009)
1285 - Constantine Sapuntzakis posted bug report #2813123
1286   (http://curl.haxx.se/bug/view.cgi?id=2813123) and an a patch that fixes the
1287   problem:
1288
1289   Url A is accessed using auth. Url A redirects to Url B (on a different
1290   server0. Url B reuses a persistent connection. Url B has auth, even though
1291   it's on a different server.
1292
1293   Note: if Url B does not reuse a persistent connection, auth is not sent.
1294
1295   reason:
1296
1297   data->state.first_host is not initialized becuase Curl_http_connect is not
1298   called when a connection is reused.
1299
1300   Solution:
1301
1302   move initialization of data->state.first_host to Curl_http. No code before
1303   Curl_http uses data->state.first_host anyway.
1304
1305 Guenter Knauf (4 Jul 2009)
1306 - Markus Koetter provided a patch to avoid getnameinfo() usage which broke a
1307   couple of both IPv4 and IPv6 autobuilds.
1308
1309 Daniel Stenberg (29 Jun 2009)
1310 - Markus Koetter made CURLOPT_FTPPORT (and curl's -P/--ftpport) support a port
1311   range if given colon-separated after the host name/address part. Like
1312   "192.168.0.1:2000-10000"
1313
1314 - Modified the separators used for CURLOPT_CERTINFO in multi-part outputs. I
1315   don't know how they got wrong in the first place, but using this output
1316   format makes it possible to quite easily separate the string into an array
1317   of multiple items.
1318
1319 Daniel Fandrich (16 June 2009)
1320 - Added a few more compiler warning options for gcc.
1321
1322 Daniel Stenberg (16 Jun 2009)
1323 - Reuven Wachtfogel made curl -o - properly produce a binary output on windows
1324   (no newline translations). Use -B/--use-ascii if you rather get the ascii
1325   approach.
1326
1327 Michal Marek (16 Jun 2009)
1328 - When doing non-anonymous ftp via http proxies and the password is not
1329   provided in the url, add it there (squid needs this).
1330
1331 Daniel Stenberg (15 Jun 2009)
1332 - Eric Wong's patch:
1333
1334   This allows curl(1) to be used as a client-side tunnel for arbitrary stream
1335   protocols by abusing chunked transfer encoding in both the HTTP request and
1336   HTTP response.  This requires server support for sending a response while a
1337   request is still being read, of course.
1338
1339   If attempting to read from stdin returns EAGAIN, then we pause our sender.
1340   This leaves curl to attempt to read from the socket while reading from stdin
1341   (and thus sending) is paused.
1342
1343   This change was needed to allow successfully tunneling the git protocol over
1344   HTTP (--no-buffer is needed, as well).
1345
1346 Patrick Monnerat (15 Jun 2009)
1347 - Replaced use of standard C library rand()/srand() by our own pseudo-random
1348   number generator.
1349
1350 Yang Tse (11 Jun 2009)
1351 - I adapted testcurl script to allow building test harness programs when
1352   cross-compiling for a *-*-mingw* host.
1353
1354 Daniel Stenberg (10 Jun 2009)
1355 - Fabian Keil ran clang on the (lib)curl code, found a bunch of warnings and
1356   contributed a range of patches to fix them.
1357
1358 Yang Tse (10 Jun 2009)
1359 - I introduced configure script option --enable-curldebug which now allows
1360   the decoupled enabling or disabling of the curl debug memory tracking
1361   feature from the --enable-debug option which no longer controls this.
1362
1363   curl --version will list 'Debug' feature for debug enabled builds, and
1364   will list 'TrackMemory' feature for curl debug memory tracking capable
1365   builds. These features are independent and can be controlled when running
1366   the configure script. When --enable-debug is given both features will be
1367   enabled, unless some restriction prevents memory tracking from being used.
1368
1369   Internally, definition of preprocessor symbol DEBUGBUILD restricts code
1370   which is only compiled for debug enabled builds. And symbol CURLDEBUG is
1371   used to differentiate code which is _only_ used for memory tracking.
1372
1373 Yang Tse (9 Jun 2009)
1374 - Daniel Steinberg pointed out that Curl_FormInit() in formdata.c was not
1375   initializing the fread callback pointer and this triggered a compiler
1376   warning, also provided a friendly suggestion on how to fix it.
1377
1378 Daniel Stenberg (8 Jun 2009)
1379 - Claes Jakobsson provided a patch for libcurl-NSS that fixed a bad refcount
1380   issue with client certs that caused issues like segfaults.
1381   http://curl.haxx.se/mail/lib-2009-05/0316.html
1382
1383 - Triggered by bug report #2798852 and the patch in there, I fixed configure
1384   to detect gnutls build options with pkg-config only and not libgnutls-config
1385   anymore since GnuTLS has stopped distributing that tool. If an explicit path
1386   is given to configure, we will instead guess on how to link and use that
1387   lib. I did not use the patch from the bug report.
1388
1389 Yang Tse (8 Jun 2009)
1390 - Igor Novoseltsev adjusted Makefile.vxworks to get sources and headers
1391   included from Makefile.inc, and provided docs\INSTALL VxWorks section.
1392
1393 - I removed buildconf.bat from release and daily snapshot archives. This
1394   file is only for CVS tree checkout builds.
1395
1396 Daniel Stenberg (8 Jun 2009)
1397 - Eric Wong fixed --no-buffer to actually switch off output buffering. Been
1398   broken since 7.19.0
1399
1400 Bill Hoffman (6 Jun 2009)
1401 - Added some cmake docs and fixed socklen_t in the build.
1402
1403 Yang Tse (5 Jun 2009)
1404 - John E. Malmberg provided VMS specific patch: "This fixes an existing bug
1405   in urlglob.c where it was not converting the Curl Unix exit code to a VMS
1406   DCL compatible exit code.  This fix required the enhancement described next.
1407   This also adds an enhancement to main.c so that when curl is run under a
1408   Unix shell like Bash on VMS, it will return the standard Unix exit codes
1409   and messages." And another patch for docs/examples.
1410
1411   I introduced os-specific.c and os-specific.h for use in curl tool code
1412   and adjusted John E. Malmberg's patch placement to use these new files
1413   as an effort to prevent main.c from growing ad infinitum. Code already
1414   existing in main.c which is OS specific should be moved into these files.
1415
1416 Daniel Stenberg (4 June 2009)
1417 - Setting the Content-Length: header from your app when you do a POST or PUT
1418   is almost always a VERY BAD IDEA. Yet there are still apps out there doing
1419   this, and now recently it triggered a bug/side-effect in libcurl as when
1420   libcurl sends a POST or PUT with NTLM, it sends an empty post first when it
1421   knows it will just get a 401/407 back. If the app then replaced the
1422   Content-Length header, it caused the server to wait for input that libcurl
1423   wouldn't send. Aaron Oneal reported this problem in bug report #2799008
1424   (http://curl.haxx.se/bug/view.cgi?id=2799008) and helped us verify the fix.
1425
1426 Yang Tse (4 Jun 2009)
1427 - Igor Novoseltsev provided patches and information, that after some
1428   adjustments to better fit curl's way of doing things, have resulted
1429   in the posibility of building libcurl for VxWorks.
1430
1431 Daniel Fandrich (2 June 2009)
1432 - Checked in a Google Android make file. To use it, you must first
1433   create a config.h file by running configure in the Android environment,
1434   which doesn't seem to be easy to do. If no easy way can be found, a
1435   static config-android.h may need to be created and checked in to the
1436   libcurl source tree.
1437
1438 Daniel Stenberg (1 June 2009)
1439 - Claes Jakobsson fixed the configure script to better find and use NSS
1440   without pkg-config.
1441
1442 Yang Tse (1 Jun 2009)
1443 - John E. Malmberg provided a VMS specific clean-up for curl.h, and pointed
1444   out that the configure script was failing to detect the timeval struct on
1445   VMS when building with _XOPEN_SOURCE_EXTENDED undefined due to definition
1446   taking place in socket.h instead of time.h.  I have adjusted configure
1447   script to also include this header when checking struct timeval.
1448
1449 Daniel Stenberg (27 May 2009)
1450 - Frank McGeough provided a small OpenSSL #include fix to make libcurl compile
1451   fine with Nokia 5th edition 1.0 SDK for Symbian.
1452
1453 - Andre Guibert de Bruet found a call to a OpenSSL function that didn't check
1454   for a failure properly.
1455
1456 - Mike Crowe pointed out that setting CURLOPT_USERPWD to NULL used to clear
1457   the auth credentials back in 7.19.0 and earlier while now you have to set ""
1458   to get the same effect. His patch brings back the ability to use NULL.
1459
1460 - Claes Jakobsson fixed libcurl-NSS to build fine even without the
1461   PK11_CreateGenericObject() function.
1462
1463 Daniel Stenberg (25 May 2009)
1464 - bug report #2796358 (http://curl.haxx.se/bug/view.cgi?id=2796358) pointed
1465   out that the cookie parser would leak memory when it parses cookies that are
1466   received with domain, path etc set multiple times in the same header. While
1467   such a cookie is questionable, they occur in the wild and libcurl no longer
1468   leaks memory for them. I added such a header to test case 8.
1469
1470 Daniel Fandrich (22 May 2009)
1471 - Removed some obsolete digest code that caused a valgrind error in test 551.
1472
1473 Daniel Fandrich (20 May 2009)
1474 - Added "non-existing host" test keywords to make it easy to skip those
1475   tests on machines that have broken DNS configurations (such as
1476   those configured to use OpenDNS).
1477
1478 Daniel Stenberg (19 May 2009)
1479 - Kamil Dudka brought the patch from the Redhat bug entry
1480   https://bugzilla.redhat.com/show_bug.cgi?id=427966 which was libcurl closing
1481   a bad file descriptor when closing down the FTP data connection.  Caolan
1482   McNamara seems to be the original author of it.
1483
1484 Version 7.19.5 (18 May 2009)
1485
1486 Daniel Stenberg (17 May 2009)
1487 - James Bursa posted a patch to the mailing list that fixed a problem with
1488   no_proxy which made it not skip the proxy if the URL entered contained a
1489   user name. I added test case 1101 to verify.
1490
1491 Daniel Stenberg (11 May 2009)
1492 - Balint Szilakszi reported a memory leak when libcurl did gzip decompression
1493   of streams that had some parts (legitimately) missing. We now provide and use
1494   a proper cleanup function for the content encoding submodule.
1495   http://curl.haxx.se/mail/lib-2009-05/0092.html
1496
1497 - Kamil Dudka provided a fix for libcurl-NSS reported by Michael Cronenworth
1498   at https://bugzilla.redhat.com/show_bug.cgi?id=453612#c12
1499
1500   If an incorrect password is given while loading a private key, libcurl ends
1501   up in an infinite loop consuming memory. The bug is critical.
1502
1503 - I fixed the problem with doing NTLM, POST and then following a 302 redirect,
1504   as reported by Ebenezer Ikonne (on curl-users) and Laurent Rabret (on
1505   curl-library). The transfer was mistakenly marked to get more data to send
1506   but since it didn't actually have that, it just hung there...
1507
1508 Daniel Stenberg (10 May 2009)
1509 - Andre Guibert de Bruet correctly pointed out an over-alloc with one wasted
1510   byte in the digest code.
1511
1512 Yang Tse (9 May 2009)
1513 - Removed DOS and TPF package's subdirectory Makefile.am, it was only used
1514   to include some files in the distribution tarball serving no other purpose.
1515   Files from the DOS and TPF subdirectories are now included in the EXTRA_DIST
1516   of the Makefile in the parent subdirectory.
1517
1518 Yang Tse (8 May 2009)
1519 - Changed host name literal in several tests to one under the haxx.se domain.
1520
1521 - Renamed vc6 workspace and project files to avoid filename clash when used
1522   for conversion to later VS versions.
1523
1524 Daniel Stenberg (8 May 2009)
1525 - Constantine Sapuntzakis fixed bug report #2784055
1526   (http://curl.haxx.se/bug/view.cgi?id=2784055) identifying a problem to
1527   connect to SOCKS proxies when using the multi interface. It turned out to
1528   almost not work at all previously. We need to wait for the TCP connect to
1529   be properly verified before doing the SOCKS magic.
1530
1531   There's still a flaw in the FTP code for this.
1532
1533 Daniel Stenberg (7 May 2009)
1534 - Made the SO_SNDBUF setting for the data connection socket for ftp uploads as
1535   well. See change 28 Apr 2009.
1536
1537 Yang Tse (7 May 2009)
1538 - Fixed an issue affecting FTP transfers, introduced with the transfer.c
1539   patch committed May 4.
1540
1541 Daniel Stenberg (7 May 2009)
1542 - Man page *roff problems fixed thanks to input from Colin Watson. Problems
1543   reported in the Debian package.
1544
1545 - Vijay G filed bug report #2723236
1546   (http://curl.haxx.se/bug/view.cgi?id=2723236) identifying a problem with
1547   libcurl's TFTP code and its lack of dealing with the OACK packet.
1548
1549 Yang Tse (5 May 2009)
1550 - Fixed the --ftp-port address of test #251 to the CLIENTIP address, and
1551   reverted the change affecting test suite harness committed 4 May.
1552
1553 Daniel Stenberg (5 May 2009)
1554 - Inspired by Michael Smith's session id fix for OpenSSL, I did the
1555   corresponding fix in the GnuTLS code: make sure to store the new session id
1556   in case the previous re-used one is rejected.
1557
1558 Daniel Stenberg (4 May 2009)
1559 - Michael Smith posted bug report #2786255
1560   (http://curl.haxx.se/bug/view.cgi?id=2786255) with a patch, identifying how
1561   libcurl did not deal with SSL session ids properly if the server rejected a
1562   re-use of one. Starting now, it will forget the rejected one and remember
1563   the new. This change was for OpenSSL only, it is likely that other SSL lib
1564   code needs similar fixes.
1565
1566 Yang Tse (4 May 2009)
1567 - Applied David McCreedy's "transfer.c fixes for CURL_DO_LINEEND_CONV and
1568   non-ASCII platform HTTP requests" patch addressing two HTTP PUT problems:
1569   1) On non-ASCII platforms not all of the protocol portions of the PUT are
1570   being translated to ASCII.  2) On all platforms the line endings of part of
1571   the protocol portions are mangled from CRLF to CRCRLF if data->set.crlf or
1572   data->set.prefer_ascii are set (depending on CURL_DO_LINEEND_CONV).
1573
1574 - Applied David McCreedy's patch to fix test suite harness to allow test FTP
1575   server and client on different machines, providing FTP client address when
1576   running the FTP test server.
1577
1578 Daniel Fandrich (3 May 2009)
1579 - Added and disabled test case 563 which shows KNOWN_BUGS #59.  The bug
1580   report failed to mention that a proxy must be used to reproduce it.
1581
1582 Yang Tse (2 May 2009)
1583 - Use a build-time configured curl_socklen_t data type instead of socklen_t.
1584
1585 Yang Tse (1 May 2009)
1586 - Applied David McCreedy's patches "TPF-platform specific changes to various
1587   files" and "http.c fix to Curl_proxyCONNECT for non-ASCII platforms", the
1588   former with minor edits.
1589
1590 Daniel Stenberg (30 Apr 2009)
1591 - I was going to fix issue #59 in KNOWN_BUGS
1592
1593   If the CURLOPT_PORT option is used on an FTP URL like
1594   "ftp://example.com/file;type=A" the ";type=A" is stripped off.
1595
1596   I added test case 562 to verify, only to find out that I couldn't repeat
1597   this bug so I hereby consider it not a bug anymore!
1598
1599 Daniel Stenberg (29 Apr 2009)
1600 - Based on bug report #2723219 (http://curl.haxx.se/bug/view.cgi?id=2723219)
1601   I've now made TFTP "connections" not being kept for re-use within libcurl.
1602   TFTP is UDP-based so the benefit was really low (if even existing) to begin
1603   with so instead of tracking down to fix this problem we instead removed the
1604   re-use. I also enabled test case 1099 that I wrote a few days ago to verify
1605   that this change fixes the reported problem.
1606
1607 Daniel Stenberg (28 Apr 2009)
1608 - Constantine Sapuntzakis filed bug report #2783090
1609   (http://curl.haxx.se/bug/view.cgi?id=2783090) pointing out that on windows
1610   we need to grow the SO_SNDBUF buffer somewhat to get really good upload
1611   speeds. http://support.microsoft.com/kb/823764 has the details. Friends
1612   confirmed that simply adding 32 to CURL_MAX_WRITE_SIZE is enough.
1613
1614 - Bug report #2709004 (http://curl.haxx.se/bug/view.cgi?id=2709004) by Tim
1615   Chen pointed out how curl couldn't upload with resume when reading from a
1616   pipe.
1617
1618   This ended up with the introduction of a new return code for the
1619   CURLOPT_SEEKFUNCTION callback that basically says that the seek failed but
1620   that libcurl may try to resolve the situation anyway. In our case this means
1621   libcurl will attempt to instead read that much data from the stream instead
1622   of seeking and that way curl can now upload with resume when data is read
1623   from a stream!
1624
1625 Daniel Stenberg (26 Apr 2009)
1626 - Bug report #2779733 (http://curl.haxx.se/bug/view.cgi?id=2779733) by Sven
1627   Wegener pointed out that CURLINFO_APPCONNECT_TIME didn't work with the multi
1628   interface and provided a patch that fixed the problem!
1629
1630 Daniel Stenberg (24 Apr 2009)
1631 - Kamil Dudka fixed another NSS-related leak when client certs were used.
1632
1633 - Bug report #2779245 (http://curl.haxx.se/bug/view.cgi?id=2779245) by Rainer
1634   Koenig pointed out that the man page didn't tell that the *_proxy
1635   environment variables can be specified lower case or UPPER CASE and the
1636   lower case takes precedence,
1637
1638 Daniel Fandrich (21 Apr 2009)
1639 - Added new libcurl source files to Amiga, RiscOS and VC6 build files.
1640
1641 Yang Tse (21 Apr 2009)
1642 - Moved potential inclusion of system's malloc.h and memory.h header files to
1643   setup_once.h.  Inclusion of each header file is based on the definition of
1644   NEED_MALLOC_H and NEED_MEMORY_H respectively.
1645
1646   Renamed libcurl's memory.h to curl_memory.h
1647
1648 Daniel Stenberg (20 Apr 2009)
1649 - Leanic Lefever reported a crash and did some detailed research on why and
1650   how it occurs (http://curl.haxx.se/mail/lib-2009-04/0289.html). The
1651   conclusion was that if an error is detected and Curl_done() is called for
1652   the connection, ftp_done() could at times return another error code that
1653   then would take precedence and that new code confused existing logic that
1654   works for the first error code (CURLE_SEND_ERROR) only.
1655
1656 - Gisle Vanem noticed that --libtool would produce bogus strings at times for
1657   OBJECTPOINT options. Now we've introduced a new function - my_setopt_str -
1658   within the app for setting plain string options to avoid the risk of this
1659   mistake happening.
1660
1661 Daniel Stenberg (17 Apr 2009)
1662 - Pramod Sharma reported and tracked down a bug when doing FTP over a HTTP
1663   proxy. libcurl would then wrongly close the connection after each
1664   request. In his case it had the weird side-effect that it killed NTLM auth
1665   for the proxy causing an inifinite loop!
1666
1667   I added test case 1098 to verify this fix. The test case does however not
1668   properly verify that the transfers are done persistently - as I couldn't
1669   think of a clever way to achieve it right now - but you need to read the
1670   stderr output after a test run to see that it truly did the right thing.
1671
1672 Daniel Stenberg (13 Apr 2009)
1673 - bug report #2727981 (http://curl.haxx.se/bug/view.cgi?id=2727981) by Martin
1674   Storsjö pointed out how setting CURLOPT_NOBODY to 0 could be downright
1675   confusing as it set the method to either GET or HEAD. The example he showed
1676   looked like:
1677
1678    curl_easy_setopt(curl, CURLOPT_PUT, 1);
1679    curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
1680
1681   The new way doesn't alter the method until the request is about to start. If
1682   CURLOPT_NOBODY is then 1 the HTTP request will be HEAD. If CURLOPT_NOBODY is
1683   0 and the request happens to have been set to HEAD, it will then instead be
1684   set to GET. I believe this will be less surprising to users, and hopefully
1685   not hit any existing users badly.
1686
1687 - Toshio Kuratomi reported a memory leak problem with libcurl+NSS that turned
1688   out to be leaking cacerts. Kamil Dudka helped me complete the fix. The issue
1689   is found in Redhat's bug tracker:
1690   https://bugzilla.redhat.com/show_bug.cgi?id=453612
1691
1692   There are still memory leaks present, but they seem to have other reasons.
1693
1694 Daniel Fandrich (11 Apr 2009)
1695 - Added new libcurl source files to Symbian OS build files.
1696 - Improved Symbian support for SSL.
1697
1698 Yang Tse (10 Apr 2009)
1699 - Daniel Johnson improved the MacOSX-Framework shell script to now perform all
1700   the steps required to build a Mac OS X four way fat ppc/i386/ppc64/x86_64
1701   libcurl.framework.  Four way fat framework requires OS X 10.5 SDK or later.
1702
1703 Yang Tse (8 Apr 2009)
1704 - Removed Sun compilers preprocessor block from curlbuild.h.dist, this also
1705   removes it from the curlbuild.h file originally distributed by the cURL
1706   project as this file is intended for systems not capable of running the
1707   configure script.  For those who have been building curl out of the source
1708   code curl distribution tarball provided by curl.haxx.se the change implies
1709   nothing.  Previous change in this area committed 2 Apr becomes irrelevant.
1710
1711 Daniel Stenberg (6 Apr 2009)
1712 - I clarified in the docs that CURLOPT_SEEKFUNCTION should return 0 on success
1713   and 1 on fatal errors. Previously it only mentioned non-zero on fatal
1714   errors. This is a slight change in meaning, but it follows what we've done
1715   elsewhere before and it opens up for LOTS of more useful return codes
1716   whenever we can think of them...
1717
1718 Yang Tse (2 Apr 2009)
1719 - Fix curl_off_t definition for builds done using Sun compilers and a
1720   non-configured libcurl. In this case curl_off_t data type was gated
1721   to the off_t data type which depends on the _FILE_OFFSET_BITS. This
1722   configuration is exactly the unwanted configuration for our curl_off_t
1723   data type which must not depend on such setting. This breaks ABI for
1724   libcurl libraries built with Sun compilers which were built without
1725   having run the configure script with _FILE_OFFSET_BITS different than
1726   64 and using the ILP32 data model.
1727
1728 Daniel Stenberg (1 Apr 2009)
1729 - Andre Guibert de Bruet fixed a NULL pointer use in an infof() call if a
1730   strdup() call failed.
1731
1732 Daniel Fandrich (31 Mar 2009)
1733 - Properly return an error code in curl_easy_recv (reported by Jim Freeman).
1734
1735 Daniel Stenberg (18 Mar 2009)
1736 - Kamil Dudka brought a patch that enables 6 additional crypto algorithms when
1737   NSS is used. These ciphers were added in NSS 3.4 and require to be enabled
1738   explicitly.
1739
1740 Daniel Stenberg (13 Mar 2009)
1741 - Use libssh2_version() to present the libssh2 version in case the libssh2
1742   library is found to support it.
1743
1744 Yang Tse (12 Mar 2009)
1745 - Added missing Curl_read() return code checking in TELNET transfers.
1746
1747 - Pierre Brico found and fixed TELNET transfers not being aborted upon
1748   a write callback failure.
1749
1750 Daniel Stenberg (11 Mar 2009)
1751 - Kamil Dudka made the curl tool properly call curl_global_init() before any
1752   other libcurl function.
1753
1754 Yang Tse (11 Mar 2009)
1755 - Added missing TELNET timeout support for Windows builds. This issue was
1756   reported by Pierre Brico.
1757
1758 Daniel Stenberg (9 Mar 2009)
1759 - Frank Hempel found out a bug and provided the fix:
1760
1761   curl_easy_duphandle did not necessarily duplicate the CURLOPT_COOKIEFILE
1762   option. It only enabled the cookie engine in the destination handle if
1763   data->cookies is not NULL (where data is the source handle). In case of a
1764   newly initialized handle which just had the cookie support enabled by a
1765   curl_easy_setopt(handle, CURL_COOKIEFILE, "")-call, handle->cookies was
1766   still NULL because the setopt-call only appends the value to
1767   data->change.cookielist, hence duplicating this handle would not have the
1768   cookie engine switched on.
1769
1770   We also concluded that the slist-functionality would be suitable for being
1771   put in its own module rather than simply hanging out in lib/sendf.c so I
1772   created lib/slist.[ch] for them.
1773
1774 - Andreas Farber made the 'buildconf' script check for the presence of m4
1775   scripts to make it detect a bad checkout earlier. People with older
1776   checkouts who don't do cvs update with the -d option won't get the new dirs
1777   and then will get funny outputs that can be a bit hard to understand and
1778   fix.
1779
1780 Daniel Stenberg (8 Mar 2009)
1781 - Andre Guibert de Bruet found and fixed a code segment in ssluse.c where the
1782   allocation of the memory BIO was not being properly checked.
1783
1784 - Andre Guibert de Bruet fixed the gnutls-using code: There are a few places
1785   in the gnutls code where we were checking for negative values for errors,
1786   when the man pages state that GNUTLS_E_SUCCESS is returned on success and
1787   other values indicate error conditions.
1788
1789 - Bill Egert pointed out (http://curl.haxx.se/bug/view.cgi?id=2671602) that
1790   curl didn't use sprintf() in a way that is documented to work in POSIX but
1791   since we use our own printf() code (from libcurl) that shouldn't be a
1792   problem. Nonetheless I modified the code to not rely on such particular
1793   features and to not cause further raised eyebrowse with no good reason.
1794
1795 Daniel Fandrich (5 Mar 2009)
1796 - Expanded the security section of the libcurl-tutorial man page to cover
1797   more issues for authors to consider when writing robust libcurl-using
1798   applications.
1799
1800 Yang Tse (5 Mar 2009)
1801 - Fixed NTLM authentication memory leak on SSPI enabled Windows builds. This
1802   issue was noticed by Chris Deidun.
1803
1804 Daniel Fandrich (4 Mar 2009)
1805 - Fixed a problem with m4 quoting in the OpenSSL configure check reported
1806   by Daniel Johnson.
1807
1808 Daniel Stenberg (3 Mar 2009)
1809 - David James brought a patch that make libcurl close (all) dead connections
1810   whenever you attempt to open a new connection.
1811
1812   1. After cleaning up a dead connection, "continue" instead of
1813      returning FALSE. This ensures that we clean up all dead connections,
1814      rather than just cleaning up the first dead connection.
1815   2. Move up the cleanup for dead connections so that it occurs for
1816      all connections, rather than just the connections which have the same
1817      preferences as our current new connection.
1818
1819 Version 7.19.4 (3 March 2009)
1820
1821 Daniel Stenberg (3 Mar 2009)
1822 - David Kierznowski notified us about a security flaw
1823   (http://curl.haxx.se/docs/adv_20090303.html also known as CVE-2009-0037) in
1824   which previous libcurl versions (by design) can be tricked to access an
1825   arbitrary local/different file instead of a remote one when
1826   CURLOPT_FOLLOWLOCATION is enabled. This flaw is now fixed in this release
1827   together this the addition of two new setopt options for controlling this
1828   new behavior:
1829
1830   o CURLOPT_REDIR_PROTOCOLS controls what protocols libcurl is allowed to
1831   follow to when CURLOPT_FOLLOWLOCATION is enabled. By default, this option
1832   excludes the FILE and SCP protocols and thus you nee to explicitly allow
1833   them in your app if you really want that behavior.
1834
1835   o CURLOPT_PROTOCOLS controls what protocol(s) libcurl is allowed to fetch
1836   using the primary URL option. This is useful if you want to allow a user or
1837   other outsiders control what URL to pass to libcurl and yet not allow all
1838   protocols libcurl may have been built to support.
1839
1840 Daniel Stenberg (27 Feb 2009)
1841 - Senthil Raja Velu reported a problem when CURLOPT_INTERFACE and
1842   CURLOPT_LOCALPORT were used together (the local port bind failed), and
1843   Markus Koetter provided the fix!
1844
1845 Daniel Stenberg (25 Feb 2009)
1846 - As Daniel Fandrich figured out, we must do the GnuTLS initing in the
1847   curl_global_init() function to properly maintain the performing functions
1848   thread-safe. We've previously (28 April 2007) moved the init to a later time
1849   just to avoid it to fail very early when libgcrypt dislikes the situation,
1850   but that move was bad and the fix should rather be in libgcrypt or
1851   elsewhere.
1852
1853 Daniel Stenberg (24 Feb 2009)
1854 - Brian J. Murrell found out that Negotiate proxy authentication didn't work.
1855   It happened because the code used the struct for server-based auth all the
1856   time for both proxy and server auth which of course was wrong.
1857
1858 Daniel Stenberg (23 Feb 2009)
1859 - After a bug reported by James Cheng I've made curl_easy_getinfo() for
1860   CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD return
1861   -1 if the sizes aren't know. Previously these returned 0, make it impossible
1862   to detect the difference between actually zero and unknown.
1863
1864 Yang Tse (23 Feb 2009)
1865 - Daniel Johnson provided a shell script that will perform all the steps needed
1866   to build a Mac OS X fat ppc/i386 or ppc64/x86_64 libcurl.framework
1867
1868 Daniel Stenberg (23 Feb 2009)
1869 - I renamed everything in the windows builds files that used the name 'curllib'
1870   to the proper 'libcurl' as clearly this caused confusion.
1871
1872 Yang Tse (20 Feb 2009)
1873 - Do not halt compilation when using VS2008 to build a Windows 2000 target.
1874
1875 Daniel Stenberg (20 Feb 2009)
1876 - Linus Nielsen Feltzing reported and helped me repeat and fix a problem with
1877   FTP with the multi interface: when a transfer fails, like when aborted by a
1878   write callback, the control connection was wrongly closed and thus not
1879   re-used properly.
1880
1881   This change is also an attempt to cleanup the code somewhat in this area, as
1882   now the FTP code attempts to keep (better) track on pending responses
1883   necessary to get read in ftp_done().
1884
1885 Daniel Stenberg (19 Feb 2009)
1886 - Patrik Thunstrom reported a problem and helped me repeat it. It turned out
1887   libcurl did a superfluous 1000ms wait when doing SFTP downloads!
1888
1889   We read data with libssh2 while doing the "DO" operation for SFTP and then
1890   when we were about to start getting data for the actual file part, the
1891   "TRANSFER" part, we waited for socket action (in 1000ms) before doing a
1892   libssh2-read. But in this case libssh2 had already read and buffered the
1893   data so we ended up always just waiting 1000ms before we get working on the
1894   data!
1895
1896 Patrick Monnerat (18 Feb 2009)
1897 - FTP downloads (i.e.: RETR) ending with code 550 now return error
1898   CURLE_REMOTE_FILE_NOT_FOUND instead of CURLE_FTP_COULDNT_RETR_FILE.
1899
1900 Daniel Stenberg (17 Feb 2009)
1901 - Kamil Dudka made NSS-powered builds compile and run again!
1902
1903 - A second follow-up change by Andre Guibert de Bruet to fix a related memory
1904   leak like that fixed on the 14th. When zlib returns failure, we need to
1905   cleanup properly before returning error.
1906
1907 - CURLOPT_FTP_CREATE_MISSING_DIRS can now be set to 2 in addition to 1 for
1908   plain FTP connections, and it will then allow MKD to fail once and retry the
1909   CWD afterwards. This is especially useful if you're doing many simultanoes
1910   connections against the same server and they all have this option enabled,
1911   as then CWD may first fail but then another connection does MKD before this
1912   connection and thus MKD fails but trying CWD works! The numbers can
1913   (should?) now be set with the convenience enums now called
1914   CURLFTP_CREATE_DIR and CURLFTP_CREATE_DIR_RETRY.
1915
1916   Tests has proven that if you're making an application that uploads a set of
1917   files to an ftp server, you will get a noticable gain in speed if you're
1918   using multiple connections and this option will be then be very useful.
1919
1920 Daniel Stenberg (14 Feb 2009)
1921 - Andre Guibert de Bruet found and fixed a memory leak in the content encoding
1922   code, which could happen on libz errors.
1923
1924 Daniel Fandrich (12 Feb 2009)
1925 - Added support for Digest and NTLM authentication using GnuTLS.
1926
1927 Daniel Stenberg (11 Feb 2009)
1928 - CURLINFO_CONDITION_UNMET was added to allow an application to get to know if
1929   the condition in the previous request was unmet. This is typically a time
1930   condition set with CURLOPT_TIMECONDITION and was previously not possible to
1931   reliably figure out. From bug report #2565128
1932   (http://curl.haxx.se/bug/view.cgi?id=2565128) filed by Jocelyn Jaubert.
1933
1934 Daniel Fandrich (4 Feb 2009)
1935 - Don't add the standard /usr/lib or /usr/include paths to LDFLAGS and CPPFLAGS
1936   (respectively) when --with-ssl=/usr is used (patch based on FreeBSD).
1937
1938 - Added an explicit buffer limit check in msdosify() (patch based on FreeBSD).
1939   This couldn't ever overflow in curl, but might if the code were used
1940   elsewhere or under different conditions.
1941
1942 Daniel Stenberg (3 Feb 2009)
1943 - Hidemoto Nakada provided a small fix that makes it possible to get the
1944   CURLINFO_CONTENT_LENGTH_DOWNLOAD size from file:// "transfers" with
1945   CURLOPT_NOBODY set true.
1946
1947 Daniel Stenberg (2 Feb 2009)
1948 - Patrick Scott found a rather large memory leak when using the multi
1949   interface and setting CURLMOPT_MAXCONNECTS to something less than the number
1950   of handles you add to the multi handle. All the connections that didn't fit
1951   in the cache would not be properly disconnected nor freed!
1952
1953 - Craig A West brought us: libcurl now defaults to do CONNECT with HTTP
1954   version 1.1 instead of 1.0 like before. This change also introduces the new
1955   proxy type for libcurl called 'CURLPROXY_HTTP_1_0' that then allows apps to
1956   switch (back) to CONNECT 1.0 requests. The curl tool also got a --proxy1.0
1957   option that works exactly like --proxy but sets CURLPROXY_HTTP_1_0.
1958
1959   I updated all test cases cases that use CONNECT and I tried to do some using
1960   --proxy1.0 and some updated to do CONNECT 1.1 to get both versions run.
1961
1962 Daniel Stenberg (31 Jan 2009)
1963 - When building with c-ares 1.6.1 (not yet released) or later and IPv6 support
1964   enabled, we can now take advantage of its brand new AF_UNSPEC support in
1965   ares_gethostbyname(). This makes test case 241 finally run fine for me with
1966   this setup since it now parses the "::1 ip6-localhost" line fine in my
1967   /etc/hosts file!
1968
1969 Daniel Stenberg (30 Jan 2009)
1970 - Scott Cantor filed bug report #2550061
1971   (http://curl.haxx.se/bug/view.cgi?id=2550061) mentioning that I failed to
1972   properly make sure that the VC9 makefiles got included in the latest
1973   release. I've now fixed the release script and verified it so next release
1974   will hopefully include them properly!
1975
1976 Daniel Fandrich (30 Jan 2009)
1977 - Fixed --disable-proxy for FTP and SOCKS. Thanks to Daniel Egger for
1978   reporting.
1979
1980 Yang Tse (29 Jan 2009)
1981 - Introduced curl_sspi.c and curl_sspi.h for the implementation of functions
1982   Curl_sspi_global_init() and Curl_sspi_global_cleanup() which previously were
1983   named Curl_ntlm_global_init() and Curl_ntlm_global_cleanup() in http_ntlm.c
1984   Also adjusted socks_sspi.c to remove the link-time dependency on the Windows
1985   SSPI library using it now in the same way as it was done in http_ntlm.c.
1986
1987 Daniel Stenberg (28 Jan 2009)
1988 - Markus Moeller introduced two new options to libcurl:
1989   CURLOPT_SOCKS5_GSSAPI_SERVICE and CURLOPT_SOCKS5_GSSAPI_NEC to allow libcurl
1990   to do GSS-style authentication with SOCKS5 proxies. The curl tool got the
1991   options called --socks5-gssapi-service and --socks5-gssapi-nec to enable
1992   these.
1993
1994 Daniel Stenberg (26 Jan 2009)
1995 - Chad Monroe provided the new CURLOPT_TFTP_BLKSIZE option that allows an app
1996   to set desired block size to use for TFTP transfers instead of the default
1997   512 bytes.
1998
1999 - The "-no_ticket" option was introduced in Openssl0.9.8j. It's a flag to
2000   disable "rfc4507bis session ticket support".  rfc4507bis was later turned
2001   into the proper RFC5077 it seems: http://tools.ietf.org/html/rfc5077
2002
2003   The enabled extension concerns the session management. I wonder how often
2004   libcurl stops a connection and then resumes a TLS session. also, sending the
2005   session data is some overhead. .I suggest that you just use your proposed
2006   patch (which explicitly disables TICKET).
2007
2008   If someone writes an application with libcurl and openssl who wants to
2009   enable the feature, one can do this in the SSL callback.
2010
2011   Sharad Gupta brought this to my attention. Peter Sylvester helped me decide
2012   on the proper action.
2013
2014 - Alexey Borzov filed bug report #2535504
2015   (http://curl.haxx.se/bug/view.cgi?id=2535504) pointing out that realms with
2016   quoted quotation marks in HTTP Digest headers didn't work. I've now added
2017   test case 1095 that verifies my fix.
2018
2019 - Craig A West brought CURLOPT_NOPROXY and the corresponding --noproxy option.
2020   They basically offer the same thing the NO_PROXY environment variable only
2021   offered previously: list a set of host names that shall not use the proxy
2022   even if one is specified.
2023
2024 Daniel Fandrich (20 Jan 2009)
2025 - Call setlocale() for libtest tests to test the effects of locale-induced
2026   libc changes on libcurl.
2027
2028 - Fixed a couple more locale-dependent toupper conversions, mainly for
2029   clarity.  This does fix one problem that causes ;type=i FTP URLs
2030   to fail in the Turkish locale when CURLOPT_PROXY_TRANSFER_MODE is
2031   used (test case 561)
2032
2033 - Added tests 561 and 1091 through 1094 to test various combinations
2034   of ;type= and ;mode= URLs that could potentially fail in the Turkish
2035   locale.
2036
2037 Daniel Stenberg (20 Jan 2009)
2038 - Lisa Xu pointed out that the ssh.obj file was missing from the
2039   lib/Makefile.vc6 file (and thus from the vc8 and vc9 ones too).
2040
2041 Version 7.19.3 (19 January 2009)
2042
2043 Daniel Stenberg (16 Jan 2009)
2044 - Andrew de los Reyes fixed curlbuild.h for "generic" gcc builds on PPC, both
2045   32 bit and 64 bit.
2046
2047 Daniel Stenberg (15 Jan 2009)
2048 - Tim Ansell fixed a compiler warning in lib/cookie.c
2049
2050 Daniel Stenberg (14 Jan 2009)
2051 - Grant Erickson fixed timeouts for TFTP such that specifying a
2052   connect-timeout, a max-time or both options work correctly and as expected
2053   by passing the correct boolean value to Curl_timeleft via the
2054   'duringconnect' parameter.
2055
2056   With this small change, curl TFTP now behaves as expected (and likely as
2057   originally-designed):
2058
2059   1) For non-existent or unreachable dotted IP addresses:
2060
2061    a) With no options, follows the default curl 300s timeout...
2062    b) With --connect-timeout only, follows that value...
2063    c) With --max-time only, follows that value...
2064    d) With both --connect-timeout and --max-time, follows the smaller value...
2065
2066    and times out with a "curl: (7) Couldn't connect to server" error.
2067
2068   2) For transfers to/from a valid host:
2069
2070    a) With no options, follows default curl 300s timeout for the
2071       first XRQ/DATA/ACK transaction and the default TFTP 3600s
2072       timeout for the remainder of the transfer...
2073
2074    b) With --connect-time only, follows that value for the
2075       first XRQ/DATA/ACK transaction and the default TFTP 3600s
2076       timeout for the remainder of the transfer...
2077
2078    c) With --max-time only, follows that value for the first
2079       XRQ/DATA/ACK transaction and for the remainder of the
2080       transfer...
2081
2082    d) With both --connect-timeout and --max-time, follows the former
2083       for the first XRQ/DATA/ACK transaction and the latter for the
2084       remainder of the transfer...
2085
2086    and times out with a "curl: (28) Timeout was reached" error as
2087    appropriate.
2088
2089 Daniel Stenberg (13 Jan 2009)
2090 - Michael Wallner fixed a NULL pointer deref when calling
2091   curl_easy_setup(curl, CURLOPT_COOKIELIST, "SESS") on a CURL handle with no
2092   cookies data.
2093
2094 - Stefan Teleman brought a patch to fix the default curlbuild.h file for the
2095   SunPro compilers.
2096
2097 Daniel Stenberg (12 Jan 2009)
2098 - Based on bug report #2498665 (http://curl.haxx.se/bug/view.cgi?id=2498665)
2099   by Daniel Black, I've now added magic to the configure script that makes it
2100   use pkg-config to detect gnutls details as well if the existing method
2101   (using libgnutls-config) fails. While doing this, I cleaned up and unified
2102   the pkg-config usage when detecting openssl and nss as well.
2103
2104 Daniel Stenberg (11 Jan 2009)
2105 - Karl Moerder brought the patch that creates vc9 Makefiles, and I made
2106   'maketgz' now use the actual makefile targets to do the VC8 and VC9
2107   makefiles.
2108
2109 Daniel Stenberg (10 Jan 2009)
2110 - Emil Romanus fixed:
2111
2112   When using the multi interface over HTTP and the server returns a Location
2113   header, the running easy handle will get stuck in the CURLM_STATE_PERFORM
2114   state, leaving the external event loop stuck waiting for data from the
2115   ingoing socket (when using the curl_multi_socket_action stuff). While this
2116   bug was pretty hard to find, it seems to require only a one-line fix. The
2117   break statement on line 1374 in multi.c caused the function to skip the call
2118   to multistate().
2119
2120   How to reproduce this bug? Well, that's another question.  evhiperfifo.c in
2121   the examples directory chokes on this bug only _sometimes_, probably
2122   depending on how fast the URLs are added. One way of testing the bug out is
2123   writing to hiper.fifo from more than one source at the same time.
2124
2125 Daniel Fandrich (7 Jan 2009)
2126 - Unified much of the SessionHandle initialization done in Curl_open() and
2127   curl_easy_reset() by creating Curl_init_userdefined(). This had the side
2128   effect of fixing curl_easy_reset() so it now also resets
2129   CURLOPT_FTP_FILEMETHOD and CURLOPT_SSL_SESSIONID_CACHE
2130
2131 Daniel Stenberg (7 Jan 2009)
2132 - Rob Crittenden did once again provide an NSS update:
2133
2134   I have to jump through a few hoops now with the NSS library initialization
2135   since another part of an application may have already initialized NSS by the
2136   time Curl gets invoked. This patch is more careful to only shutdown the NSS
2137   library if Curl did the initialization.
2138
2139   It also adds in a bit of code to set the default ciphers if the app that
2140   call NSS_Init* did not call NSS_SetDomesticPolicy() or set specific
2141   ciphers. One might argue that this lets other application developers get
2142   lazy and/or they aren't using the NSS API correctly, and you'd be right.
2143   But still, this will avoid terribly difficult-to-trace crashes and is
2144   generally helpful.
2145
2146 Daniel Stenberg (1 Jan 2009)
2147 - 'reconf' is removed since we rather have users use 'buildconf'
2148
2149 Daniel Stenberg (31 Dec 2008)
2150 - Bas Mevissen reported http://curl.haxx.se/bug/view.cgi?id=2479030 pointing
2151   out that 'reconf' didn't properly point out the m4 subdirectory when running
2152   aclocal.
2153
2154 Daniel Stenberg (29 Dec 2008)
2155  - Phil Lisiecki filed bug report #2413067
2156   (http://curl.haxx.se/bug/view.cgi?id=2413067) that identified a problem that
2157   would cause libcurl to mark a DNS cache entry "in use" eternally if the
2158   subsequence TCP connect failed. It would thus never get pruned and refreshed
2159   as it should've been.
2160
2161   Phil provided his own patch to this problem that while it seemed to work
2162   wasn't complete and thus I wrote my own fix to the problem.
2163
2164 Daniel Stenberg (28 Dec 2008)
2165 - Peter Korsgaard fixed building libcurl with "configure --with-ssl
2166   --disable-verbose".
2167
2168 - Anthony Bryan fixed more language and spelling flaws in man pages.
2169
2170 Daniel Stenberg (22 Dec 2008)
2171 - Given a recent enough libssh2, libcurl can now seek/resume with SFTP even
2172   on file indexes beyond 2 or 4GB.
2173
2174 - Anthony Bryan provided a set of patches that cleaned up manual language,
2175   corrected spellings and more.
2176
2177 Daniel Stenberg (20 Dec 2008)
2178 - Igor Novoseltsev fixed a bad situation for the multi_socket() API when doing
2179   pipelining, as libcurl could then easily get confused and A) work on the
2180   handle that was not "first in queue" on a pipeline, or even B) tell the app
2181   to REMOVE a socket while it was in use by a second handle in a pipeline. Both
2182   errors caused hanging or stalling applications.
2183
2184 Daniel Stenberg (19 Dec 2008)
2185 - curl_multi_timeout() could return a timeout value of 0 even though nothing
2186   was actually ready to get done, as the internal time resolution is higher
2187   than the returned millisecond timer. Therefore it could cause applications
2188   running on fast processors to do short bursts of busy-loops.
2189   curl_multi_timeout() will now only return 0 if the timeout is actually
2190   alreay triggered.
2191
2192 - Using the libssh2 0.19 function libssh2_session_block_directions(), libcurl
2193   now has an improved ability to do right when the multi interface (both
2194   "regular" and multi_socket) is used for SCP and SFTP transfers. This should
2195   result in (much) less busy-loop situations and thus less CPU usage with no
2196   speed loss.
2197
2198 Daniel Stenberg (17 Dec 2008)
2199 - SCP and SFTP with the multi interface had the same flaw: the 'DONE'
2200   operation didn't complete properly if the EAGAIN equivalent was returned but
2201   libcurl would simply continue with a half-completed close operation
2202   performed. This ruined persistent connection re-use and cause some
2203   SSH-protocol errors in general. The correction is unfortunately adding a
2204   blocking function - doing it entirely non-blocking should be considered for
2205   a better fix.
2206
2207 Gisle Vanem (16 Dec 2008)
2208 - Added the possibility to use the Watt-32 tcp/ip stack under Windows.
2209   The change simply involved adding a USE_WATT32 section in the
2210   config-win32.h files (under ./lib and ./src). This section disables
2211   the use of any Winsock headers.
2212
2213 Daniel Stenberg (16 Dec 2008)
2214 - libssh2_sftp_last_error() was wrongly used at some places in libcurl which
2215   made libcurl sometimes not properly abort problematic SFTP transfers.
2216
2217 Daniel Stenberg (12 Dec 2008)
2218 - More work with Igor Novoseltsev to first fix the remaining stuff for
2219   removing easy handles from multi handles when the easy handle is/was within
2220   a HTTP pipeline. His bug report #2351653
2221   (http://curl.haxx.se/bug/view.cgi?id=2351653) was also related and was
2222   eventually fixed by a patch by Igor himself.
2223
2224 Yang Tse (12 Dec 2008)
2225 - Patrick Monnerat fixed a build regression, introduced in 7.19.2, affecting
2226   OS/400 compilations with IPv6 enabled.
2227
2228 Daniel Stenberg (12 Dec 2008)
2229 - Mark Karpeles filed bug report #2416182 titled "crash in ConnectionExists
2230   when using duphandle+curl_mutli"
2231   (http://curl.haxx.se/bug/view.cgi?id=2416182) which showed that
2232   curl_easy_duphandle() wrongly also copied the pointer to the connection
2233   cache, which was plain wrong and caused a segfault if the handle would be
2234   used in a different multi handle than the handle it was duplicated from.
2235
2236 Daniel Stenberg (11 Dec 2008)
2237 - Keshav Krity found out that libcurl failed to deal with dotted IPv6
2238   addresses if they were very long (>39 letters) due to a too strict address
2239   validity parser. It now accepts addresses up to 45 bytes long.
2240
2241 Daniel Stenberg (11 Dec 2008)
2242 - Internet Explorer had a broken HTTP digest authentication before v7 and
2243   there are servers "out there" that relies on the client doing this broken
2244   Digest authentication. Apache even comes with an option to work with such
2245   broken clients.
2246
2247   The difference is only for URLs that contain a query-part (a '?'-letter and
2248   text to the right of it).
2249
2250   libcurl now supports this quirk, and you enable it by setting the
2251   CURLAUTH_DIGEST_IE bit in the bitmask you pass to the CURLOPT_HTTPAUTH or
2252   CURLOPT_PROXYAUTH options. They are thus individually controlled to server
2253   and proxy.
2254
2255   (note that there's no way to activate this with the curl tool yet)
2256
2257 Daniel Fandrich (9 Dec 2008)
2258 - Added test cases 1089 and 1090 to test --write-out after a redirect to
2259   test a report that the size didn't work, but these test cases pass.
2260
2261 - Documented CURLOPT_CONNECT_ONLY as being useful only on HTTP URLs.
2262
2263 Daniel Stenberg (9 Dec 2008)
2264 - Ken Hirsch simplified how libcurl does FTPS: now it doesn't assume any
2265   particular state for the control connection like it did before for implicit
2266   FTPS (libcurl assumed such control connections to be encrypted while some
2267   FTPS servers such as FileZilla assumes such connections to be clear
2268   mode). Use the CURLOPT_USE_SSL option to set your desired level.
2269
2270 Daniel Stenberg (8 Dec 2008)
2271 - Fred Machado posted about a weird FTP problem on the curl-users list and when
2272   researching it, it turned out he got a 550 response back from a SIZE command
2273   and then I fell over the text in RFC3659 that says:
2274
2275    The presence of the 550 error response to a SIZE command MUST NOT be taken
2276    by the client as an indication that the file cannot be transferred in the
2277    current MODE and TYPE.
2278
2279   In other words: the change I did on September 30th 2008 and that has been
2280   included in the last two releases were a regression and a bad idea. We MUST
2281   NOT take a 550 response from SIZE as a hint that the file doesn't exist.
2282
2283 - Christian Krause filed bug #2221237
2284   (http://curl.haxx.se/bug/view.cgi?id=2221237) that identified an infinite
2285   loop during GSS authentication given some specific conditions. With his
2286   patience and great feedback I managed to narrow down the problem and
2287   eventually fix it although I can't test any of this myself!
2288
2289 Daniel Fandrich (3 Dec 2008)
2290 - Fixed the getifaddrs version of Curl_if2ip to work on systems without IPv6
2291   support (e.g. Minix)
2292
2293 Daniel Stenberg (3 Dec 2008)
2294 - Igor Novoseltsev filed bug #2351645
2295   (http://curl.haxx.se/bug/view.cgi?id=2351645) that identified a problem with
2296   the multi interface that occured if you removed an easy handle while in
2297   progress and the handle was used in a HTTP pipeline.
2298
2299 - Pawel Kierski pointed out a mistake in the cookie code that could lead to a
2300   bad fclose() after a fatal error had occured.
2301   (http://curl.haxx.se/bug/view.cgi?id=2382219)
2302
2303 Daniel Fandrich (25 Nov 2008)
2304 - If a HTTP request is Basic and num is already >=1000, the HTTP test
2305   server adds 1 to num to get the data section to return. This allows
2306   testing authentication negotiations using the Basic authentication
2307   method.
2308
2309 - Added tests 1087 and 1088 to test Basic authentication on a redirect
2310   with and without --location-trusted
2311
2312 Daniel Stenberg (24 Nov 2008)
2313 - Based on a patch by Vlad Grachov, libcurl now uses a new libssh2 0.19
2314   function when built to support SCP and SFTP that helps the library to know
2315   in which direction a particular libssh2 operation would return EAGAIN so
2316   that libcurl knows what socket conditions to wait for before trying the
2317   function call again. Previously (and still when using libssh2 0.18 or
2318   earlier), libcurl will busy-loop in this situation when the easy interface
2319   is used!
2320
2321 Daniel Fandrich (20 Nov 2008)
2322 - Automatically detect OpenBSD's CA cert bundle.
2323
2324 Daniel Stenberg (19 Nov 2008)
2325 - I removed the default use of "Pragma: no-cache" from libcurl when a proxy is
2326   used. It has been used since forever but it was never a good idea to use
2327   unless explicitly asked for.
2328
2329 - Josef Wolf's extension that allows a $TESTDIR/gdbinit$testnum file that when
2330   you use runtests.pl -g, will be sourced by gdb to allow additional fancy or
2331   whatever you see fit
2332
2333 - Christian Krause reported and fixed a memory leak that would occur with HTTP
2334   GSS/kerberos authentication (http://curl.haxx.se/bug/view.cgi?id=2284386)
2335
2336 - Andreas Wurf and Markus Koetter helped me analyze a problem that Andreas got
2337   when uploading files to a single FTP server using multiple easy handle
2338   handles with the multi interface. Occasionally a handle would stall in
2339   mysterious ways.
2340
2341   The problem turned out to be a side-effect of the ConnectionExists()
2342   function's eagerness to re-use a handle for HTTP pipelining so it would
2343   select it even if already being in use, due to an inadequate check for its
2344   chances of being used for pipelnining.
2345
2346 Daniel Fandrich (17 Nov 2008)
2347 - Added more compiler warning options for gcc 4.3
2348
2349 Yang Tse (17 Nov 2008)
2350 - Fix a remaining problem in the inet_pton() runtime configure check. And
2351   fix internal Curl_inet_pton() failures to reject certain malformed literals.
2352
2353 - Make configure script check if ioctl with the SIOCGIFADDR command can be
2354   used, and define HAVE_IOCTL_SIOCGIFADDR if appropriate.
2355
2356 Daniel Stenberg (16 Nov 2008)
2357 - Christian Krause fixed a build failure when building with gss support
2358   enabled and FTP disabled.
2359
2360 - Added check for NULL returns from strdup() in src/main.c and lib/formdata.c
2361   - reported by Jim Meyering also prevent buffer overflow on MSDOS when you do
2362   for example -O on a url with a file name part longer than PATH_MAX letters
2363
2364 - lib/nss.c fixes based on the report by Jim Meyering: I went over and added
2365   checks for return codes for all calls to malloc and strdup that were
2366   missing. I also changed a few malloc(13) to use arrays on the stack and a
2367   few malloc(PATH_MAX) to instead use aprintf() to lower memory use.
2368
2369 - I fixed a memory leak in Curl_nss_connect() when CURLOPT_ISSUERCERT is
2370   in use.
2371
2372 Daniel Fandrich (14 Nov 2008)
2373 - Added .xml as one of the few common file extensions known by the multipart
2374   form generator.
2375
2376 - Added some #ifdefs around header files and change the EAGAIN test to
2377   fix compilation on Cell (reported by Jeff Curley).
2378
2379 Yang Tse (14 Nov 2008)
2380 - Fixed several configure script issues affecting checks for inet_ntoa_r(),
2381   inet_ntop(), inet_pton(), getifaddrs(), fcntl() and getaddrinfo().
2382
2383 Yang Tse (13 Nov 2008)
2384 - Refactored configure script detection of functions used to set sockets into
2385   non-blocking mode, and decouple function detection from function capability.
2386
2387 Version 7.19.2 (13 November 2008)
2388
2389 Michal Marek (13 Nov 2008)
2390 - Fixed a potential data loss in Curl_client_write() when the transfer is
2391   paused.
2392
2393 Daniel Stenberg (11 Nov 2008)
2394 - Rainer Canavan filed bug #2255627
2395   (http://curl.haxx.se/bug/view.cgi?id=2255627) which pointed out that a
2396   program using libcurl's multi interface to download a HTTPS page with a
2397   libcurl built powered by OpenSSL, would easily get silly and instead hand
2398   over SSL details as data instead of the actual HTTP headers and body. This
2399   happened because libcurl would consider the connection handshake done too
2400   early. This problem was introduced at September 22nd 2008 with my fix of the
2401   bug #2107377
2402
2403   The correct fix is now instead done within the GnuTLS-handling code, as both
2404   the OpenSSL and the NSS code already deal with this situation in similar
2405   fashion. I added test case 560 in an attempt to verify this fix, but
2406   unfortunately it didn't trigger it even before this fix!
2407
2408 Yang Tse (11 Nov 2008)
2409 - Related with bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535)
2410   Daniel Fandrich noticed that curl_addrinfo was also missing in the build
2411   process of other four non-configure platforms. Added now.
2412
2413 Daniel Fandrich (7 Nov 2008)
2414 - The getifaddrs() version of Curl_if2ip() crashed when used on a Linux
2415   system with a TEQL load-balancing device configured, which doesn't
2416   have an address.  Thanks to Adam Sampson for spotting this (bug #2234923).
2417
2418 Yang Tse (6 Nov 2008)
2419 - Merged existing IPv4 and IPv6 Curl_ip2addr functions into a single one
2420   which now also takes a protocol address family argument.
2421
2422 - Bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535) pointed out a
2423   problem with MSVC 6 makefile that caused a build failure. It was noted that
2424   the curl_addrinfo.obj reference was missing. I took the opportunity to sort
2425   the list in which this was missing. Issue submitted by John Wilkinson.
2426
2427 Version 7.19.1 (5 November 2008)
2428
2429 Daniel Stenberg (4 Nov 2008)
2430 - CURLINFO_FILETIME now works for file:// transfers as well
2431
2432 Daniel Stenberg (3 Nov 2008)
2433 - Bug #2218480 (http://curl.haxx.se/bug/view.cgi?id=2218480) pointed out a
2434   problem with my CURLINFO_PRIMARY_IP fix from October 7th that caused a NULL
2435   pointer read. I also took the opportunity to clean up this logic (storing of
2436   the connection's IP address) somewhat as we had it stored in two different
2437   places and ways previously and they are now unified.
2438
2439 Yang Tse (3 Nov 2008)
2440 - Fix undersized IPv6 address internal buffer. IPv6 address strings longer
2441   than 35 characters would be truncated.
2442
2443 Daniel Stenberg (2 Nov 2008)
2444 - Daniel Johnson reported and fixed:
2445
2446   When c-ares isn't enabled, libcurl by default calls getaddrinfo with family
2447   set to PF_UNSPEC which causes getaddrinfo to return all available addresses,
2448   both IPv4 and IPv6. Libcurl then tries each one until it can connect. If the
2449   net connection doesn't support IPv6, libcurl can still fall back to IPv4.
2450
2451   However, since c-ares doesn't support PF_UNSPEC, when it's used it defaults
2452   to using family=PF_INET6 and therefore only returns IPv6 addresses when AAAA
2453   records are available, even if IPv4 addresses are also available. The effect
2454   is that since my ISP doesn't do IPv6, libcurl can't connect at all to a site
2455   that has AAAA records. It will work if I explicitly use CURL_IPRESOLVE_V4 or
2456   --ipv4 with the curl tool. I discovered this when curl would fail to connect
2457   to seemingly random sites. It turns out they weren't random, they were sites
2458   with AAAA records.
2459
2460   So now libcurl defaults to PF_INET... until c-ares has been tought to offer
2461   both.
2462
2463 Yang Tse (31 Oct 2008)
2464 - Tests 558 and 559 are stabilized. These two tests were initially introduced
2465   to aid in the location of a seg-fault which was only triggered on non-debug
2466   builds done with the icc 9.1 Intel compiler. Test 558 does not trigger the
2467   problem, but test 559 does trigger it. As of today, it isn't yet absolutely
2468   clear if it is a compiler optimizer issue or a memory corruption one.
2469
2470 Yang Tse (30 Oct 2008)
2471 - Use our Curl_addrinfo structure definition to handle address info data even
2472   when a system addrinfo struct is available. Provide and use a wrapper around
2473   systems getaddrinfo function, Curl_getaddrinfo_ex which returns a pointer to
2474   a list of dynamically allocated Curl_addrinfo structs.
2475
2476   Configure will check freeaddrinfo and getaddrinfo functions and define
2477   preprocessor symbols HAVE_FREEADDRINFO and HAVE_GETADDRINFO when appropriate.
2478
2479 Daniel Fandrich (29 Oct 2008)
2480 - Fixed a bug that caused a few bytes of garbage to be sent after a
2481   curl_easy_pause() during a chunky upload. Reported by Steve Roskowski.
2482
2483 Daniel Fandrich (28 Oct 2008)
2484 - Changed the "resolve" test precheck program to verify that an IPv6 socket
2485   can be created before resolving the IPv6 name.  In the context of running
2486   a test, it doesn't make sense to run an IPv6 test when a host is resolvable
2487   but IPv6 isn't usable.  This should fix failures of test 1085 on hosts with
2488   library and DNS support for IPv6 but where actual use of IPv6 has been
2489   administratively disabled.
2490
2491 Daniel Fandrich (24 Oct 2008)
2492 - Added experimental support for zlib and OpenSSL on Symbian OS.
2493
2494 Daniel Fandrich (21 Oct 2008)
2495 - Fixed some problems with SFTP range support to fix test cases 634 through
2496   637.
2497
2498 Daniel Fandrich (17 Oct 2008)
2499 - Fixed a compile error reported by Albert Chin on AIX and IRIX when using
2500   GTLS.
2501
2502 Daniel Stenberg (16 Oct 2008)
2503 - Igor Novoseltsev added CURLOPT_PROXYUSER and CURLOPT_PROXYPASSWORD that then
2504   make CURLOPT_PROXYUSERPWD sort of deprecated. The primary motive for adding
2505   these new options is that they have no problems with the colon separator
2506   that the CURLOPT_PROXYUSERPWD option does.
2507
2508 Daniel Stenberg (15 Oct 2008)
2509 - Pascal Terjan filed bug #2154627
2510   (http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl
2511   uses strcasecmp() in multiple places where it causes failures when the
2512   Turkish locale is used. This is because 'i' and 'I' isn't the same letter so
2513   strcasecmp() on those letters are different in Turkish than in English (or
2514   just about all other languages). I thus introduced a totally new internal
2515   function in libcurl (called Curl_raw_equal) for doing case insentive
2516   comparisons for english-(ascii?) style strings that thus will make "file"
2517   and "FILE" match even if the Turkish locale is selected.
2518
2519 Daniel Fandrich (15 Oct 2008)
2520 - A <precheck> command is considered to have failed if it returns a non-zero
2521   return code.  This way, if the precheck command can't be run at all for
2522   whatever reason, it's treated as a precheck failure which causes the
2523   test to be skipped.
2524
2525 Daniel Stenberg (15 Oct 2008)
2526 - John Wilkinson filed bug #2155496
2527   (http://curl.haxx.se/bug/view.cgi?id=2155496) pointing out an error case
2528   without a proper human-readable error message. When a read callback returns
2529   a too large value (like when trying to return a negative number) it would
2530   trigger and the generic error message then makes the proplem slightly
2531   different to track down. I've added an error message for this now.
2532
2533 Daniel Fandrich (9 Oct 2008)
2534 - Fixed the --interface option to work with IPv6 connections on glibc
2535   systems supporting getifaddrs(). Also fixed a problem where an IPv6
2536   address could be chosen instead of an IPv4 one for --interface when it
2537   involved a name lookup.
2538
2539 Daniel Fandrich (8 Oct 2008)
2540 - Added tests 1082 through 1085 to test symbolic --interface parameters
2541
2542 - Added tests 633 through 637 to test the new file range support for SFTP.
2543   All but the first test cause an infinite loop or other failure and so
2544   are added to DISABLED.
2545
2546 Daniel Stenberg (8 Oct 2008)
2547 - John Wilkinson filed bug #2152270
2548   (http://curl.haxx.se/bug/view.cgi?id=2152270) which identified and fixed a
2549   CURLINFO_REDIRECT_URL memory leak and an additional wrong-doing:
2550
2551   Any subsequent transfer with a redirect leaks memory, eventually crashing
2552   the process potentially.
2553
2554   Any subsequent transfer WITHOUT a redirect causes the most recent redirect
2555   that DID occur on some previous transfer to still be reported.
2556
2557 - Igor Novoseltsev filed bug #2111613
2558   (http://curl.haxx.se/bug/view.cgi?id=2111613) that eventually identified a
2559   flaw in how the multi_socket interface in some cases missed to call the
2560   timeout callback when easy interfaces are removed and added within the same
2561   millisecond.
2562
2563 - Igor Novoseltsev brought a patch that introduced two new options to
2564   curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of
2565   deprecates the good old CURLOPT_USERPWD since they allow applications to set
2566   the user name and password independently and perhaps more importantly allow
2567   both to contain colon(s) which CURLOPT_USERPWD doesn't fully support.
2568
2569 Daniel Fandrich (7 Oct 2008)
2570 - Changed the handling of read/write errors in Curl_perform() to allow a
2571   a fresh connection to be made in such cases and the request retransmitted.
2572   This should fix test case 160.  Added test case 1079 in an attempt to
2573   test a similar connection dropping scenario, but as a race condition, it's
2574   hard to test reliably.
2575
2576 - Created test cases 1080 and 1081 to reproduce a problem of
2577   CURLINFO_REDIRECT_URL leaking memory and returning incorrect results when
2578   two URLs are requested. Reported by vmpdemo in bug #2152270
2579
2580 Daniel Stenberg (7 Oct 2008)
2581 - Fixed CURLINFO_PRIMARY_IP: When libcurl created a connection to host A then
2582   the app re-used the handle to do a connection to host B and then again
2583   re-used the handle to host A, it would not update the info with host A's IP
2584   address (due to the connection being re-used) but it would instead report
2585   the info from host B.
2586
2587 Yang Tse (7 Oct 2008)
2588 - Added --enable-optimize configure option to enable and disable compiler
2589   optimizations to allow decoupled setting from --enable-debug.
2590
2591 Yang Tse (2 Oct 2008)
2592 - Added --enable-warnings configure option to enable and disable strict
2593   compiler warnings to allow decoupled setting from --enable-debug.
2594
2595   runtests.pl will now run with picky compiler warnings enabled unless
2596   explicitly disabled.
2597
2598 Daniel Fandrich (1 Oct 2008)
2599 - "make clean" now cleans out the docs and tests directories, too.
2600
2601 Daniel Stenberg (30 Sep 2008)
2602 - The libcurl FTP code now returns CURLE_REMOTE_FILE_NOT_FOUND error when SIZE
2603   gets a 550 response back for the cases where a download (or NOBODY) is
2604   wanted. It still allows a 550 as response if the SIZE is used as part of an
2605   upload process (like if resuming an upload is requested and the file isn't
2606   there before the upload). I also modified the FTP test server and a few test
2607   cases accordingly to match this modified behavior.
2608
2609 Daniel Stenberg (29 Sep 2008)
2610 - Daniel Egger provided a patch that allows you to disable proxy support in
2611   libcurl to somewhat reduce the size of the binary. Run configure
2612   --disable-proxy.
2613
2614 Daniel Fandrich (29 Sep 2008)
2615 - Moved all signal-based name resolution timeout handling into a single new
2616   Curl_resolv_timeout function to reduce coupling.
2617
2618 Daniel Stenberg (29 Sep 2008)
2619 - Ian Lynagh provided a patch that now makes CURLOPT_RANGE work fine for SFTP
2620   downloads!
2621
2622 - Maxim Ivanov filed bug report #2107803
2623   (http://curl.haxx.se/bug/view.cgi?id=2107803) "no CURLINFO_REDIRECT_URL in
2624   multi mode" together with a patch that fixed the problem.
2625
2626 Daniel Stenberg (25 Sep 2008)
2627 - Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest
2628   auth code to not behave badly when getting a blank realm with
2629   realm="". http://curl.haxx.se/bug/view.cgi?id=2126435
2630
2631 Daniel Fandrich (23 Sep 2008)
2632 - Make sure not to dereference the wrong UrlState proto union member when
2633   switching from one protocol to another in a single request (e.g.
2634   redirecting from HTTP to FTP as in test 1055) by resetting
2635   state.expect100header before every request.
2636
2637 Daniel Stenberg (23 Sep 2008)
2638 - Introducing Jamie Lokier's function for date to epoch conversion used in the
2639   date parser function. This makes our function less dependent on system-
2640   provided functions and instead we do all the magic ourselves. We also no
2641   longer depend on the TZ environment variable. Switching to our own converter
2642   has some side-effect and they are noted here for future reference (taken
2643   from a mail by mr Lokier):
2644
2645   time_t is not measured in seconds in the ANSI C standard - or even counted
2646   uniformly - weird platforms can use other numeric representations of dates
2647   in time_t - hence the difftime() function.
2648
2649   On POSIX time_t is measured in UTC seconds, which means not including leap
2650   seconds.  But it's mentioned in a few places that some old POSIX-ish
2651   environments include leap seconds in their time_t counts...
2652
2653   I'm pretty sure [the new implementation is] correct on anything truly POSIX.
2654   And it's obviously a lot less dependent on platform quirks and corner cases
2655   in many ways than the mktime() version.
2656
2657 - Rob Crittenden brought a patch to "add some locking for thread-safety to NSS
2658   implementation".
2659
2660 Daniel Stenberg (22 Sep 2008)
2661 - Made the SOCKS code use the new Curl_read_plain() function to fix the bug
2662   Markus Moeller reported: http://curl.haxx.se/mail/archive-2008-09/0016.html
2663
2664 - recv() errors other than those equal to EAGAIN now cause proper
2665   CURLE_RECV_ERROR to get returned. This made test case 160 fail so I've now
2666   disabled it until we can figure out another way to exercise that logic.
2667
2668 - Michael Goffioul filed bug report #2107377 "Problem with multi + GnuTLS +
2669   proxy" (http://curl.haxx.se/bug/view.cgi?id=2107377) that showed how a multi
2670   interface using program didn't work when built with GnuTLS and a CONNECT
2671   request was done over a proxy (basically test 502 over a proxy to a HTTPS
2672   site). It turned out the ssl connect function would get called twice which
2673   caused the second call to fail.
2674
2675 Daniel Fandrich (22 Sep 2008)
2676 - Fixed test 539 to handle an out of memory condition that shows up now
2677   that memdebug.h is included in the test programs.
2678
2679 Yang Tse (20 Sep 2008)
2680 - Fix regression in configure script which affected OpenSSL builds on MSYS.
2681
2682 Yang Tse (19 Sep 2008)
2683 - configure script now checks availability of the alarm() function.
2684
2685 Daniel Fandrich (18 Sep 2008)
2686 - Don't bother to install a SIGALRM handler unless alarm() is available.
2687   Also, leave the existing SIGALRM handler alone if the timeout is too small
2688   to handle.
2689
2690 Daniel Fandrich (17 Sep 2008)
2691 - Removed reference to curl-ca-bundle.crt in the host verification failure
2692   error message.
2693
2694 Yang Tse (17 Sep 2008)
2695 - Improve configure detection of gethostname(), localtime_r(), strstr(),
2696   getservbyport_r(), gethostbyaddr_r() and gethostbyname_r().
2697
2698 Yang Tse (14 Sep 2008)
2699 - Improve configure detection of strcasecmp(), strcasestr(), strcmpi(),
2700   stricmp(), strlcat(), strncasecmp(), strncmpi() and strnicmp().
2701
2702 Yang Tse (13 Sep 2008)
2703 - Disable tracking of fdopen() calls in the low-level memory leak tracking
2704   code when fdopen() is not available, to avoid compiler error.
2705
2706 Yang Tse (12 Sep 2008)
2707 - Further adjust detection of strerror_r() in the configure process, and
2708   ensure that errno is not modified inside Curl_strerror().
2709
2710 Yang Tse (10 Sep 2008)
2711 - Improve detection of gmtime_r(), strtoll(), sigaction(), strtok_r(),
2712   strdup() and ftruncate() in the configure process.
2713
2714 Daniel Fandrich (9 Sep 2008)
2715 - Mike Revi discovered some swapped speed switches documented in the curl man
2716   page.
2717
2718 - Checked in some documentation and code improvements and fixes that I
2719   discovered in the FreeBSD ports system.
2720
2721 Daniel Stenberg (8 Sep 2008)
2722 - Dmitry Kurochkin patched a problem: I have found bug in pipelining through
2723   proxy. I have a transparent proxy. When running with http_proxy environment
2724   variable not set my test completes fine (it goes through transparent
2725   proxy). When I set http_proxy variable my test hangs after the first
2726   downloaded is complete. Looks like the second handle never gets out from
2727   WAITDO state.
2728
2729   The fix: It makes checkPendPipeline move 1 handler from pend pipe to send
2730   pipe if pipelining is not supported by server but there are no handles in
2731   send and recv pipes.
2732
2733 - Stefan Krause pointed out that libcurl would wrongly send away cookies to
2734   sites in cases where the cookie clearly has a very old expiry date. The
2735   condition was simply that libcurl's date parser would fail to convert the
2736   date and it would then count as a (timed-based) match. Starting now, a
2737   missed date due to an unsupported date format or date range will now cause
2738   the cookie to not match.
2739
2740 Daniel Fandrich (5 Sep 2008)
2741 - Improved the logic that decides whether to use HTTP 1.1 features or not in a
2742   request.  Setting a specific version with CURLOPT_HTTP_VERSION overrides
2743   all other checks, but otherwise, a 1.0 request will be made if the server
2744   is known to support only 1.0 because it previously responded so and the
2745   connection was kept alive, or a response to a previous request on this handle
2746   came back as 1.0. The latter could take place in cases like redirection or
2747   authentication where several requests have to be made before the operation
2748   is complete.  If any one of the servers in a redirection chain supports only
2749   1.0, then remaining requests will be sent in 1.0 mode.
2750
2751 - Detect cases where an upload must be sent chunked and the server supports
2752   only HTTP 1.0 and return CURLE_UPLOAD_FAILED.
2753
2754 Daniel Stenberg (5 Sep 2008)
2755 - Martin Drasar provided the CURLOPT_POSTREDIR patch. It renames
2756   CURLOPT_POST301 (but adds a define for backwards compatibility for you who
2757   don't define CURL_NO_OLDIES). This option allows you to now also change the
2758   libcurl behavior for a HTTP response 302 after a POST to not use GET in the
2759   subsequent request (when CURLOPT_FOLLOWLOCATION is enabled). I edited the
2760   patch somewhat before commit. The curl tool got a matching --post302
2761   option. Test case 1076 was added to verify this.
2762
2763 - Introducing CURLOPT_CERTINFO and the corresponding CURLINFO_CERTINFO. By
2764   enabling this feature with CURLOPT_CERTINFO for a request using SSL (HTTPS
2765   or FTPS), libcurl will gather lots of server certificate info and that info
2766   can then get extracted by a client after the request has completed with
2767   curl_easy_getinfo()'s CURLINFO_CERTINFO option. Linus Nielsen Feltzing
2768   helped me test and smoothen out this feature.
2769
2770   Unfortunately, this feature currently only works with libcurl built to use
2771   OpenSSL.
2772
2773   This feature was sponsored by networking4all.com - thanks!
2774
2775 - Dmitriy Sergeyev pointed out that curl_easy_pause() didn't unpause properly
2776   during certain conditions. I also changed this code to use realloc() based
2777   on Daniel Fandrich's suggestion.
2778
2779 Guenter Knauf (4 Sep 2008)
2780 - MingW32 non-configure builds are now largefile feature enabled by default.
2781   NetWare LIBC builds are also now largefile feature enabled by default.
2782
2783 Yang Tse (4 Sep 2008)
2784 - Several fixes related with print formatting string directives.
2785
2786 Daniel Fandrich (3 Sep 2008)
2787 - Search for the FreeBSD CA cert file /usr/local/share/certs/ca-root.crt
2788
2789 Daniel Fandrich (2 Sep 2008)
2790 - Fixed an out of memory problem that caused torture test failures in tests
2791   706 and 707.
2792
2793 Daniel Stenberg (2 Sep 2008)
2794 - Keith Mok added supported_protocols and supported_features to the pkg-config
2795   file for libcurl, and while doing that fix he unified with curl-config.in
2796   how the supported protocols and features are extracted and used, so both those
2797   tools should now always be synced.
2798
2799 Version 7.19.0 (1 September 2008)
2800
2801 Daniel Fandrich (29 Aug 2008)
2802 - Added tests 1071 through 1074 to test automatic downgrading from HTTP 1.1
2803   to HTTP 1.0 upon receiving a response from the HTTP server.  Tests 1072
2804   and 1073 are similar to test 1069 in that they involve the impossible
2805   scenario of sending chunked data to a HTTP 1.0 server.  All these fail
2806   and are added to DISABLED.
2807
2808 - Added test 1075 to test --anyauth with Basic authentication.
2809
2810 Daniel Stenberg (29 Aug 2008)
2811 - When libcurl was doing a HTTP POST and the server would respond with
2812   "Connection: close" and actually close the connection after the
2813   response-body, libcurl could still have outstanding data to send and it
2814   would not properly notice this and stop sending. This caused weirdness and
2815   sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222
2816
2817   Note that there are still reasons to consider libcurl's behavior when
2818   getting a >= 400 response code while sending data, as Craig Perras' note
2819   "http upload: how to stop on error" specifies:
2820   http://curl.haxx.se/mail/archive-2008-08/0138.html
2821
2822 Daniel Stenberg (28 Aug 2008)
2823 - Dengminwen reported that libcurl would lock a (cookie) share twice (without
2824   an unlock in between) for a certain case and that in fact works when using
2825   regular windows mutexes but not with pthreads'! Locks should of course not
2826   get locked again so this is now fixed.
2827   http://curl.haxx.se/mail/lib-2008-08/0422.html
2828
2829 - I'm abandoning the system with the web site mirrors (but keeping download
2830   files bing mirrored) and thus I've changed the URL in the cookiejar header
2831   to no longer use curlm.haxx.se but instead use the main site curl.haxx.se
2832
2833 Daniel Fandrich (27 Aug 2008)
2834 - Fixed test case 1065 by changing the handling of CURLOPT_UPLOAD to set
2835   the HTTP method to GET (or HEAD) when given a value of 0.
2836
2837 - Added test cases 1068 and 1069 to test a simple HTTP PUT from stdin.  Test
2838   case 1069 fails in a similar manner to test 1065 so is added to DISABLED.
2839
2840 Yang Tse (27 Aug 2008)
2841 - Fix generation of MS VC6 .dsp file to make it support compilation of either
2842   dynamic (DLL) or static (LIB) libcurl libraries in debug and release modes.
2843
2844 Daniel Fandrich (26 Aug 2008)
2845 - Fixed out of memory problems that caused torture test failures in tests
2846   1021 and 1067.
2847
2848 Yang Tse (26 Aug 2008)
2849 - Added check and symbol definition for WIN32 file API usage in configure,
2850   supporting configure's --disable-largefile option for WIN32 targets also.
2851
2852 - Non-configure systems which do not use config-win32.h configuration file,
2853   and want to use the WIN32 file API, must define USE_WIN32_LARGE_FILES or
2854   USE_WIN32_SMALL_FILES as appropriate in their own configuration files.
2855
2856 Daniel Stenberg (23 Aug 2008)
2857 - Running 'make ca-firefox' in the root build dir will now run the new
2858   firefox-db2pem.sh conversion script that converts a local Firefox db of ca
2859   certs into PEM format, suitable for use with a OpenSSL or GnuTLS built
2860   libcurl.
2861
2862 - Constantine Sapuntzakis fixed a bug when doing proxy CONNECT with the multi
2863   interface, and the proxy would send Connection: close during the
2864   authentication phase.  http://curl.haxx.se/bug/view.cgi?id=2069047
2865
2866 Daniel Fandrich (22 Aug 2008)
2867 - Fixed a problem when --dump-header - was given with more than one URL,
2868   which caused an error when the second header was dumped due to stdout
2869   being closed.  Added test case 1066 to verify.  Also fixed a potential
2870   problem where a closed file descriptor might be used for an upload
2871   when more than one URL is given.
2872
2873 Yang Tse (22 Aug 2008)
2874 - Improved libcurl's internal curl_m*printf() functions integral data type
2875   size and signedness handling.
2876
2877 - Internal adjustments to better select/differentiate when large/small file
2878   support is provided using WIN32 functions directly.
2879
2880 Daniel Fandrich (20 Aug 2008)
2881 - Added an edited version of Vincent Le Normand's documentation of SFTP quote
2882   commands to the man pages.
2883
2884 Daniel Stenberg (20 Aug 2008)
2885 - Phil Pellouchoud pointed out that the windows version of libcurl had a
2886   memory leak because it never called the OpenSSL function
2887   CRYPTO_cleanup_all_ex_data() as it was supposed to. This was because of a
2888   missing define in config-win32.h!
2889
2890 Gisle Vanem (18 Aug 2008)
2891 - Updated lib/Makefile.Watcom with the option to use c-ares (USE_ARES=1).
2892
2893 Yang Tse (18 Aug 2008)
2894 - Added test case 557 to verify libcurl's internal curl_m*printf() functions
2895   formatting functionality when handling signed and unsigned longs, as well as
2896   our curl_off_t data type.
2897
2898 Yang Tse (17 Aug 2008)
2899 - OpenSSl enabled NetWare builds are changed to use the 'openssl' subdirectory
2900   when including the OpenSSL header files. This is the recommended setting, this
2901   prevents the undesired inclusion of header files with the same name as those
2902   of OpenSSL but which do not belong to the OpenSSL package. The visible change
2903   from previously released libcurl versions is that now OpenSSl enabled NetWare
2904   builds also define USE_OPENSSL in config files, and that OpenSSL header files
2905   must be located in a subdirectory named 'openssl'.
2906
2907 Yang Tse (16 Aug 2008)
2908 - Library internal only C preprocessor macros FORMAT_OFF_T and FORMAT_OFF_TU
2909   remain in use as internal curl_off_t print formatting strings for the internal
2910   *printf functions which still cannot handle print formatting string directives
2911   such as "I64d", "I64u", and others available on MSVC, MinGW, Intel's ICC, and
2912   other DOS/Windows compilers.
2913
2914 Daniel Fandrich (15 Aug 2008)
2915 - Added test case 1063 to test invalid long file ranges with file: URLs and
2916   1064 to test multiple http PUTs.
2917
2918 - Added test case 1065 to test a PUT with a single file but two URLs. This
2919   was discovered to be problematic while investigating an incident reported by
2920   Von back in May.  curl in this case doesn't include a Content-Length: or
2921   Transfer-Encoding: chunked header which is illegal. This test case is
2922   added to DISABLED until a solution is found.
2923
2924 Yang Tse (15 Aug 2008)
2925 - C preprocessor macros used internally and equally available externally which
2926   aid in the use of the curl_off_t data type are named: CURL_FORMAT_CURL_OFF_T,
2927   CURL_FORMAT_CURL_OFF_TU, CURL_SIZEOF_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_T,
2928   CURL_SUFFIX_CURL_OFF_TU, CURL_OFF_T_C and CURL_OFF_TU_C.
2929
2930 Yang Tse (13 Aug 2008)
2931 - The size of long is a build time characteristic and as such it is now recorded
2932   in curlbuild.h as CURL_SIZEOF_LONG. Definition now done from configure process
2933   and in CVS curlbuild.h.dist for non-configure systems.
2934
2935 Daniel Fandrich (12 Aug 2008)
2936 - Fixed a buffer overflow problem in Curl_proxyCONNECT that could occur
2937   when a server responded with long headers and data.  Luckily, the buffer
2938   overflowed into another unused buffer, so no actual harm was done.
2939   Added test cases 1060 and 1061 to verify.
2940
2941 Daniel Stenberg (12 Aug 2008)
2942 - Andy Tsouladze fixed runtests.pl to not attempt to execute the stunnel
2943   _directory_ if that happened to appear in the path!
2944
2945 Yang Tse (12 Aug 2008)
2946 - Added macros for minimum-width signed and unsigned curl_off_t integer
2947   constants CURL_OFF_T_C and CURL_OFF_TU_C. The clever double helper macro
2948   used internally to provide its functionality is thanks to Lars Nilsson.
2949
2950 Daniel Fandrich (11 Aug 2008)
2951 - Fixed a boundary condition error in ftp_readresp() whereby a non-terminal
2952   line of a multiline FTP response whose last byte landed exactly at the end
2953   of the BUFSIZE-length buffer would be treated as the terminal response
2954   line.  The following response code read in would then actually be the
2955   end of the previous response line, and all responses from then on would
2956   correspond to the wrong command. Test case 1062 verifies this.
2957
2958 - Stop closing a never-opened ftp socket.
2959
2960 Daniel Stenberg (11 Aug 2008)
2961 - Constantine Sapuntzakis filed bug report #2042430
2962   (http://curl.haxx.se/bug/view.cgi?id=2042430) with a patch. "NTLM Windows
2963   SSPI code is not thread safe". This was due to libcurl using static
2964   variables to tell wether to load the necessary SSPI DLL, but now the loading
2965   has been moved to the more suitable curl_global_init() call.
2966
2967 - Constantine Sapuntzakis filed bug report #2042440
2968   (http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
2969   problem when using NTLM over a proxy but the end-point does Basic, and then
2970   libcurl would do wrong when the host sent "Connection: close" as the proxy's
2971   NTLM state was erroneously cleared.
2972
2973 Yang Tse (11 Aug 2008)
2974 - Added missing signed and unsigned curl_off_t integer constant suffixes for
2975   internal and external use. CURL_SUFFIX_CURL_OFF_T, CURL_SUFFIX_CURL_OFF_TU.
2976
2977 Daniel Fandrich (7 Aug 2008)
2978 - Fixed an uninitialized variable in multi_runsingle() that could cause a
2979   request to prematurely end.
2980
2981 - Added test1059 to test the FTP proxy tunnel problem fixed July 11.
2982
2983 Yang Tse (7 Aug 2008)
2984 - Added curlbuild.h and curlrules.h header files to libcurl's public headers.
2985   File curlbuild.h is a generated file on configure-capable systems. This is
2986   a first step towards configure-based info in public headers. Currently only
2987   used to provide support for a curl_off_t data type which is not gated to
2988   off_t. Further details are documented inside these mentioned header files.
2989
2990 - Fix CURL_CHECK_DEF so that when the expansion of the preprocessor symbol
2991   results in a set of double-quoted strings, this macro will now return an
2992   expansion which consists of a single double-quoted string as the result of
2993   concatenating all of them.
2994
2995 - Skip data type check in DO_CURL_OFF_T_CHECK macro when argument is empty.
2996
2997 - Adjusted testcurl.pl to copy checked out curlbuild.h.dist as curlbuild.h
2998   for non-configure targets when the host system doesn't run buildconf.bat.
2999
3000 - Prevent buildconf from removing 'Makefile' and 'missing' files. This would
3001   blow away our CVS checked files 'missing' and 'hiper/Makefile'.
3002
3003 - Remove adjustment done to testcurl.pl to verify if change introduced by
3004   Guenter Knauf in lib/Makefile.netware is enough to get the netware autobuilds
3005   going again.
3006
3007 Yang Tse (5 Aug 2008)
3008 - Changes done to buildconf script. Validate that autom4te and autoconf, as
3009   well as aclocal and automake, versions match. Improve removal of previous
3010   run generated files. Remove verbose debug logging of aclocal on Solaris.
3011
3012 Daniel Stenberg (5 Aug 2008)
3013 - Yehoshua Hershberg found a problem that would make libcurl re-use a
3014   connection with the multi interface even if a previous use of it caused a
3015   CURLE_PEER_FAILED_VERIFICATION to get returned. I now make sure that failed
3016   SSL connections properly close the connections.
3017
3018 Daniel Stenberg (4 Aug 2008)
3019 - Test cases 1051, 1052 and 1055 were added by Daniel Fandrich on July 30 and
3020   proved how PUT and POST with a redirect could lead to a "hang" due to the
3021   data stream not being rewound properly when it had to in order to get sent
3022   properly (again) to the subsequent URL. This is now fixed and these test
3023   cases are no longer disabled.
3024
3025 Yang Tse (4 Aug 2008)
3026 - Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
3027   Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
3028   version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
3029   no matter if the system is AIX or not. To keep the traditional behaviour,
3030   and an uniform one across autoconf versions AC_AIX is replaced with our
3031   own internal macro CURL_CHECK_AIX_ALL_SOURCE.
3032
3033 Daniel Stenberg (4 Aug 2008)
3034 - Test case 1041 (added by Daniel Fandrich July 14th) proved a bug where PUT
3035   with -C - sent garbage in the Content-Range: header. I fixed this problem by
3036   making sure libcurl always sets the size of the _entire_ upload if an app
3037   attemps to do resumed uploads since libcurl simply cannot know the size of
3038   what is currently at the server end. Test 1041 is no longer disabled.
3039
3040 Yang Tse (2 Aug 2008)
3041 - No longer test availability of the gdi32 library, nor use it for linking, even
3042   when we have been doing this since revision 1.47 of configure.ac 4 years and
3043   5 months ago when cross-compiling a Windows target. We actually don't use any
3044   function from the Windows GDI (Graphics Device Interface) related with drawing
3045   or graphics-related operations.
3046
3047 Daniel Fandrich (1 Aug 2008)
3048 - Added support for --append on SFTP uploads. Unfortunately, OpenSSH doesn't
3049   support this so it goes untested.
3050
3051 Yang Tse (1 Aug 2008)
3052 - Configure process now checks if the preprocessor _REENTRANT symbol is already
3053   defined. If it isn't currently defined a set of checks are performed to test
3054   if its definition is required to make visible to the compiler a set of *_r
3055   functions. Finally, if _REENTRANT is already defined or needed it takes care
3056   of making adjustments necessary to ensure that it is defined equally for the
3057   configure process tests and generated config file.
3058
3059 - Removed definition of CURL_CHECK_WORKING_RESOLVER from acinclude.m4 it has
3060   not been in use since revision 1.81 of configure.in 6 years, 9 months ago.
3061
3062 Daniel Fandrich (31 Jul 2008)
3063 - Fixed parsing of an IPv6 proxy address to support a scope identifier,
3064   as well as IPv4 addresses in IPv6 format. Also, better handle the case
3065   of a malformatted IPv6 address (avoid empty and NULL strings).
3066
3067 - Fixed a problem with any FTP URL or any URLs containing an IPv6 address
3068   being mangled when passed to proxies when CURLOPT_PORT is also set
3069   (reported by Pramod Sharma).
3070
3071 - User names embedded in proxy URLs without a password were parsed
3072   incorrectly--the host name is treated as part of the user name and the
3073   port number becomes the password.  This can be observed in test 279
3074   (was KNOWN_ISSUE #54).
3075
3076 Daniel Stenberg (30 Jul 2008)
3077 - Phil Blundell added the CURLOPT_ADDRESS_SCOPE option, as well as adjusted
3078   the URL parser to allow numerical IPv6-addresses to be specified with the
3079   scope given, as per RFC4007 - with a percent letter that itself needs to be
3080   URL escaped. For example, for an address of fe80::1234%1 the HTTP URL is:
3081   "http://[fe80::1234%251]/"
3082
3083 - PHP's bug report #43158 (http://bugs.php.net/bug.php?id=43158) identifies a
3084   true bug in libcurl built with OpenSSL. It made curl_easy_getinfo() more or
3085   less always return 0 for CURLINFO_SSL_VERIFYRESULT because the function that
3086   would set it to something non-zero would return before the assign in almost
3087   all error cases. The internal variable is now set to non-zero from the start
3088   of the function only to get cleared later on if things work out fine.
3089
3090 - Made the curl tool's -w option support the %{ssl_verify_result} variable
3091
3092 Daniel Fandrich (30 Jul 2008)
3093 - Added test cases 1052 through 1055 to test uploading data from files
3094   during redirects.  Test cases 1052 and 1055 show problems (maybe the same
3095   root cause as 1051) and are disabled.
3096
3097 - Fixed a couple of buffer overflows in the MS-DOS port of the curl tool.
3098
3099 Daniel Fandrich (29 Jul 2008)
3100 - Fixed --use-ascii to properly convert text files on Symbian OS, MS-DOS
3101   and OS/2.
3102
3103 - Added test case 1051 to test Location: following with PUT, as reported
3104   by Ben Sutcliffe.  The test when run manually shows a problem in curl
3105   so it's disabled.
3106
3107 Daniel Fandrich (28 Jul 2008)
3108 - Fixed display of the interface bind address in the trace output when it's
3109   an IPv6 address.
3110
3111 - Added test cases 1045 through 1049 as simple tests of --interface using the
3112   localhost interface.
3113
3114 - Added test case 1050 to test --ftp-port with an IPv6 address
3115
3116 Daniel Stenberg (26 Jul 2008)
3117 - David Bau filed bug report #2026240 "CURL_READFUNC_PAUSE leads to buffer
3118   overrun" (http://curl.haxx.se/bug/view.cgi?id=2026240) identifying two
3119   problems, and providing the fix for them:
3120
3121   - CURL_READFUNC_PAUSE did in fact not pause the _sending_ of data that it is
3122     designed for but paused _receiving_ of data!
3123
3124   - libcurl didn't internally set the read counter to zero when this return
3125     code was detected, which would potentially lead to junk getting sent to
3126     the server.
3127
3128 Daniel Fandrich (26 Jul 2008)
3129 - Added test 1044 to test large file support in ftp with -I.
3130
3131 - Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4
3132   address in an IPv6 capable libcurl.
3133
3134 - Added feature in runtests.pl to select tests based on key word.
3135
3136 Daniel Fandrich (23 Jul 2008)
3137 - Changed the long logfile elision code in runtests.pl to properly handle
3138   lines ending in \r.
3139
3140 - Changed references to TRUE and FALSE in the curl_easy_setopt man page to
3141   1 and zero, respectively, since TRUE and FALSE aren't part of the
3142   libcurl API.
3143
3144 Daniel Stenberg (23 Jul 2008)
3145 - I went over the curl_easy_setopt man page and replaced most references to
3146   non-zero with the fixed value of 1. We should strive at making options
3147   support '1' for enabling them mentioned explicitly, as that then will allow
3148   us for to extend them in the future without breaking older programs.
3149
3150   Possibly we should even introduce a fancy define to use instead of '1' all
3151   over...
3152
3153 Yang Tse (21 Jul 2008)
3154 - Use the sreadfrom() wrapper to replace recvfrom() in our code.
3155
3156 Yang Tse (20 Jul 2008)
3157 - when recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
3158   now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
3159   RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
3160
3161 Yang Tse (17 Jul 2008)
3162 - RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
3163   to the data type pointed by its respective argument and not the pointer type.
3164
3165 Yang Tse (16 Jul 2008)
3166 - Configure process now checks availability of recvfrom() socket function and
3167   finds out its return type and the types of its arguments. Added definitions
3168   for non-configure systems config files, and introduced macro sreadfrom which
3169   will be used on udp sockets as a recvfrom() wrapper.
3170
3171 Yang Tse (15 Jul 2008)
3172 - Added description/comment to include paths used in several Makefile.am files.
3173   Added automake option nostdinc to test servers makefile and modified libcurl
3174   external headers include path for libtest programs.
3175
3176 Daniel Fandrich (14 Jul 2008)
3177 - Added test1040 through test1043 to test -C - on HTTP. Test 1041 failed so
3178   it's added to DISABLED.
3179
3180 Yang Tse (14 Jul 2008)
3181 - HTTP_ONLY definition check in lib/setup.h is now done once that configuration
3182   file has been included. In this way if symbol is defined in the config file
3183   it will no longer be ignored.  Removed inclusion of remaining system header
3184   files from configuration files. Moved _REENTRANT definition up/earlier in
3185   lib/setup.h
3186
3187 Yang Tse (11 Jul 2008)
3188 - Added missing multiple header inclusion prevention definition for header
3189   file content_encoding.h
3190
3191 Daniel Fandrich (11 Jul 2008)
3192 - Fixed test 553 to pass the torture test.
3193
3194 Daniel Stenberg (11 Jul 2008)
3195 - Daniel Fandrich found out we didn't pass on the user-agent properly when
3196   doing "proxy-tunnels" with non-HTTP prototols and that was simply because
3197   the code assumed the user-agent was only needed for HTTP.
3198
3199 Daniel Fandrich (10 Jul 2008)
3200 - Changed slightly the SFTP quote commands chmod, chown and chgrp to only
3201   set the attribute that has changed instead of all possible ones. Hopefully,
3202   this will solve the "Permission denied" problem that Nagarajan Sreenivasan
3203   reported when setting some modes, but regardless, it saves a protocol
3204   round trip in the chmod case.
3205
3206 - Added test cases 1038 and 1039 to test Adrian Kreher's report that ftp
3207   uploads with -C - didn't resume properly, but the tests pass.
3208
3209 Yang Tse (10 Jul 2008)
3210 - Peter Lamberg filed bug report #2015126: "poll gives WSAEINVAL when POLLPRI
3211   is set in fdset.events" (http://curl.haxx.se/bug/view.cgi?id=2015126) which
3212   exactly pinpointed the problem only triggered on Windows Vista, provided
3213   reference to docs and also a fix. There is much work behind Peter Lamberg's
3214   excellent bug report. Thank You!
3215
3216 Daniel Fandrich (9 Jul 2008)
3217 - Added tests 1036 and 1037 to verify resumed ftp downloads with -C -
3218
3219 Daniel Stenberg (9 Jul 2008)
3220 - Andreas Schuldei improved Phil Blundell's patch for IPv6 using c-ares, and I
3221   edited it slightly. Now you should be able to use IPv6 addresses fine even
3222   with libcurl built to use c-ares.
3223
3224 Daniel Fandrich (9 Jul 2008)
3225 - Fixed an OOM handling problem that cause test 11 to fail the torture test.
3226
3227 Daniel Fandrich (8 Jul 2008)
3228 - Fixed test 554 to pass the torture test.
3229
3230 Daniel Fandrich (7 Jul 2008)
3231 - Added test cases 1034 & 1035 to test IDN name conversion failures.
3232
3233 Daniel Stenberg (7 Jul 2008)
3234 - Scott Barrett provided a test case for a segfault in the FTP code and the
3235   fix for it. It occured when you did a FTP transfer using
3236   CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but
3237   switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being
3238   cleared properly.  Scott's test case is now known as test 539 and it
3239   verifies the fix.
3240
3241 Daniel Stenberg (3 Jul 2008)
3242 - Phil Blundell provided a fix for libcurl's treatment of unexpected 1xx
3243   response codes. Previously libcurl would hang on such occurances. I added
3244   test case 1033 to verify.
3245
3246 - Introcuding a new timestamp for curl_easy_getinfo():
3247   CURLINFO_APPCONNECT_TIME. This is set with the "application layer"
3248   handshake/connection is completed. Which typically is SSL, TLS or SSH and by
3249   using this you can figure out the application layer's own connect time. You
3250   can extract the time stamp using curl's -w option and the new variable named
3251   'time_appconnect'. This feature was sponsored by Lenny Rachitsky at NeuStar.
3252
3253 Daniel Fandrich (2 Jul 2008)
3254 - Support Open Watcom C on Linux (as well as Windows).
3255
3256 Yang Tse (2 Jul 2008)
3257 - The previously committed fix for bug report #1999181 prevented using the
3258   monotonic clock on any system without an always supported POSIX compliant
3259   implementation. Now the POSIX compliant configuration check is removed and
3260   will fallback to gettimeofday when the monotonic clock is unavailable at
3261   run-time.
3262
3263 - The configure process will now halt when sed, grep, egrep or ar programs
3264   can not be found among the directories in PATH variable.
3265
3266 Daniel Stenberg (1 Jul 2008)
3267 - Rolland Dudemaine provided fixes to get libcurl to build for the INTEGRITY
3268   operating system.
3269
3270 Daniel Stenberg (30 Jun 2008)
3271 - Made the internal printf() support %llu properly to print unsigned long longs.
3272
3273 - Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
3274   which output the range using a signed variable where it should rather use
3275   unsigned.
3276
3277 Yang Tse (29 Jun 2008)
3278 - John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
3279   some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
3280   that the configure script did not use the _POSIX_MONOTONIC_CLOCK feature test
3281   macro when checking monotonic clock availability. This is now fixed and the
3282   monotonic clock will not be used unless the feature test macro is defined
3283   with a value greater than zero indicating always supported.
3284
3285 Daniel Fandrich (25 Jun 2008)
3286 - Honour --stderr with the -v option.
3287
3288 - Fixed a file handle leak in the command line client if more than one
3289   --stderr option was given.
3290
3291 Daniel Stenberg (22 Jun 2008)
3292 - Eduard Bloch filed the debian bug report #487567
3293   (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487567) pointing out that
3294   libcurl used Content-Range: instead of Range when doing a range request with
3295   --head (CURLOPT_NOBODY). This is now fixed and test case 1032 was added to
3296   verify.
3297
3298 Daniel Fandrich (21 Jun 2008)
3299 - Stopped using ranges in scanf character sequences (e.g. %[a-z]) since that
3300   is not ANSI C, just a common extension.  This caused problems on
3301   at least Open Watcom C.
3302
3303 Yang Tse (20 Jun 2008)
3304 - Modified configuration script to actually verify if the compiler is good
3305   enough at detecting compilation errors or at least it has been properly
3306   configured to do so. Configuration heavily depends on this capability, so
3307   if this compiler sanity check fails the configuration process will now fail.
3308
3309 Daniel Stenberg (20 Jun 2008)
3310 - Phil Pellouchoud found a case where libcurl built with NSS failed to
3311   handshake with a SSLv2 server, and it turned out to be because it didn't
3312   recognize the cipher named "rc4-md5". In our list that cipher was named
3313   plainly "rc4". I've now added rc4-md5 to work as an alias as Phil reported
3314   that it made things work for him again.
3315
3316 - Hans-Jurgen May pointed out that trying SCP or SFTP over a SOCKS proxy
3317   crashed libcurl. This is now addressed by making sure we use "plain send"
3318   internally when doing the socks handshake instead of the Curl_write()
3319   function which is designed to use the "target" protocol. That's then SCP or
3320   SFTP in this case. I also took the opportunity and cleaned up some ssh-
3321   related #ifdefs in the code for readability.
3322
3323 Daniel Stenberg (19 Jun 2008)
3324 - Christopher Palow fixed a curl_multi_socket() issue which previously caused
3325   libcurl to not tell the app properly when a socket was closed (when the name
3326   resolve done by c-ares is completed) and then immediately re-created and put
3327   to use again (for the actual connection). Since the closure will make the
3328   "watch status" get lost in several event-based systems libcurl will need to
3329   tell the app about this close/re-create case.
3330
3331 - Dengminwen found a bug in the connection re-use function when using the
3332   multi interface with pipelining enabled as it would wrongly check for,
3333   detect and close "dead connections" even though that connection was already
3334   in use!
3335
3336 Daniel Fandrich (18 Jun 2008)
3337 - Added SSH failure test cases 628-632
3338
3339 - Fixed a memory leak in the command-line tool that caused a valgrind error.
3340
3341 Daniel Stenberg (18 Jun 2008)
3342 - Rob Crittenden brought a fix for the NSS layer that makes libcurl no longer
3343   always fire up a new connection rather than using the existing one when the
3344   multi interface is used. Original bug report:
3345   https://bugzilla.redhat.com/show_bug.cgi?id=450140
3346
3347 Yang Tse (18 Jun 2008)
3348 - Internal configure script improvement. No longer break out of shell "for"
3349   statements from inside AC_FOO_IFELSE macros, otherwise temporary macro files
3350   are not properly removed.
3351
3352 Daniel Fandrich (12 Jun 2008)
3353 - Fixed curl-config --ca which wasn't being exported by configure.
3354
3355 Daniel Stenberg (11 Jun 2008)
3356 - I did a cleanup of the internal generic SSL layer and how the various SSL
3357   libraries are supported. Starting now, each underlying SSL library support
3358   code does a set of defines for the 16 functions the generic layer (sslgen.c)
3359   uses (all these new function defines use the prefix "curlssl_"). This
3360   greatly simplified the generic layer in readability by involving much less
3361   #ifdefs and other preprocessor stuff and should make it easier for people to
3362   make libcurl work with new SSL libraries.
3363
3364   Hopefully I can later on document these 16 functions somewhat as well.
3365
3366   I also made most of the internal SSL-dependent functions (using Curl_ssl_
3367   prefix) #defined to nothing when no SSL support is requested - previously
3368   they would unnecessarily call mostly empty functions.
3369
3370   I've built libcurl with OpenSSL and GnuTLS and without SSL to test this and
3371   I've also tried building with NSS but the NSS support is a mystery to me and
3372   I failed to build libcurl with the NSS libraries I have installed. We really
3373   should A) improve our configure script to detect unsuitable NSS versions
3374   already at configure time and B) document our requirements better for the
3375   SSL libraries.
3376
3377 Daniel Stenberg (10 Jun 2008)
3378 - I made the OpenSSL code build again with OpenSSL 0.9.6. The CRLFILE
3379   functionality killed it due to its unconditional use of
3380   X509_STORE_set_flags...
3381
3382 Daniel Stenberg (8 Jun 2008)
3383 - Due to the three new libcurl changes and the massive command line option
3384   change I decided we'll mark it by bumping the next release number to 7.19.0!
3385
3386 - curl the tool now deals with its command line options somewhat differently!
3387   All boolean options (such as -O, -I, -v etc), both short and long versions,
3388   now always switch on/enable the option named. Using the same option multiple
3389   times thus make no difference. To switch off one of those options, you need
3390   to use the long version of the option and type --no-OPTION. Like to disable
3391   verbose mode you use --no-verbose!
3392
3393 - Added --remote-name-all to curl, which if used changes the default for all
3394   given URLs to be dealt with as if -O is used. So if you want to disable that
3395   for a specific URL after --remote-name-all has been used, you muse use -o -
3396   or --no-remote-name.
3397
3398 Daniel Stenberg (6 Jun 2008)
3399 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_ISSUERCERT, for
3400   OpenSSL, NSS and GnuTLS-built libcurls.
3401
3402 - Axel Tillequin and Arnaud Ebalard added support for CURLOPT_CRLFILE, for
3403   OpenSSL, NSS and GnuTLS-built libcurls.
3404
3405 - Added CURLINFO_PRIMARY_IP as a new information retrievable with
3406   curl_easy_getinfo. It returns a pointer to a string with the most recently
3407   used IP address. Modified test case 500 to also verify this feature. The
3408   implementing of this feature was sponsored by Lenny Rachitsky at NeuStar.
3409
3410 Version 7.18.2 (4 June 2008)
3411
3412 Daniel Fandrich (3 Jun 2008)
3413 - Fixed a problem where telnet data would be lost if an EWOULDBLOCK
3414   condition were encountered.
3415
3416 Marty Kuhrt (1 Jun 2008)
3417 - Updated main.c to return CURLE_OK if PARAM_HELP_REQUESTED was returned
3418   from getparameter instead of CURLE_FAILED_INIT.  No point in returning
3419   an error if --help or --version were requested.
3420
3421 Daniel Stenberg (28 May 2008)
3422 - Emil Romanus found a problem and helped me repeat it. It occured when using
3423   the curl_multi_socket() API with HTTP pipelining enabled and could lead to
3424   the pipeline basically stalling for a very long period of time until it took
3425   off again.
3426
3427 - Jeff Weber reported memory leaks with aborted SCP and SFTP transfers and
3428   provided excellent repeat recipes. I fixed the cases I managed to reproduce
3429   but Jeff still got some (SCP) problems even after these fixes:
3430   http://curl.haxx.se/mail/lib-2008-05/0342.html
3431
3432 Daniel Stenberg (26 May 2008)
3433 - Bug report #1973352 (http://curl.haxx.se/bug/view.cgi?id=1973352) identified
3434   how the HTTP redirect following code didn't properly follow to a new URL if
3435   the new url was but a query string such as "Location: ?moo=foo". Test case
3436   1031 was added to verify this fix.
3437
3438 - Andreas Faerber and Scott McCreary made (lib)curl build for the Haiku OS.
3439
3440 Yang Tse (26 May 2008)
3441 - David Rosenstrauch reported that header files spnegohelp.h and
3442   openssl/objects.h were needed to compile SPNEGO support.
3443
3444 Daniel Fandrich (22 May 2008)
3445 - Made sure to pass longs in to curl_easy_setopt where necessary in the
3446   example programs and libtest code.
3447
3448 Daniel Stenberg (19 May 2008)
3449 - When trying to repeat a multi interface problem I fell over a few multi
3450   interface problems:
3451
3452   o with pipelining disabled, the state should never be set to WAITDO but
3453     rather go straight to DO
3454
3455   o we had multiple states for which the internal function returned no socket
3456     at all to wait for, with the effect that libcurl calls the socket callback
3457     (when curl_multi_socket() is used) with REMOVE prematurely (as it would be
3458     added again within very shortly)
3459
3460   o when in DO and DOING states, the HTTP and HTTPS protocol handler functions
3461     didn't return that the socket should be waited for writing, but instead it
3462     was treated as if no socket was needing monitoring so again REMOVE was
3463     called prematurely.
3464
3465 Daniel Stenberg (13 May 2008)
3466 - Added test case 556 that uses curl_easy_send() and curl_easy_recv()
3467
3468 Daniel Stenberg (9 May 2008)
3469 - Introducing curl_easy_send() and curl_easy_recv(). They can be used to send
3470   and receive data over a connection previously setup with curl_easy_perform()
3471   and its CURLOPT_CONNECT_ONLY option. The sendrecv.c example was added to
3472   show how they can be used.
3473
3474 Yang Tse (9 May 2008)
3475 - Internal time differences now use monotonic time source if available.
3476   This also implies the removal of the winmm.lib dependency for WIN32.
3477
3478 Daniel Stenberg (9 May 2008)
3479 - Stefan Krause reported a busy-looping case when using the multi interface
3480   and doing CONNECT to a proxy. The app would then busy-loop until the proxy
3481   completed its response.
3482
3483 Michal Marek (9 May 2008)
3484 - Make Curl_write and it's callees accept a const pointer, in preparation
3485   of tetetest's patch for curl_easy_send()
3486
3487 Daniel Stenberg (7 May 2008)
3488 - Liam Healy filed the debian bug report #480044
3489   (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480044) identifying a
3490   segfault when using krb5 ftp, but the krb4 code had the same problem.
3491
3492 Yang Tse (7 May 2008)
3493 - Christopher Palow provided the patch (edited by me) that introduces the
3494   use of microsecond resolution keys for internal splay trees.
3495
3496 Daniel Stenberg (4 May 2008)
3497 - Yuriy Sosov pointed out a configure fix for detecting c-ares when that is
3498   built debug-enabled.
3499
3500 Daniel Stenberg (3 May 2008)
3501 - Ben Van Hof filed bug report #1945240: "libcurl sometimes sends body twice
3502   when using CURL_AUTH_ANY" (http://curl.haxx.se/bug/view.cgi?id=1945240).
3503   The problem was that when libcurl rewound a stream meant for upload when it
3504   would prepare for a second request, it could accidentally continue the
3505   sending of the rewound data on the first request instead of on the second.
3506   Ben also provided test case 1030 that verifies this fix.
3507
3508 Daniel Stenberg (3 May 2008)
3509 - Jean-Francois Bertrand reported a libcurl crash with CURLOPT_TCP_NODELAY
3510   since libcurl used getprotobyname() and that isn't thread-safe. We now
3511   switched to use IPPROTO_TCP unconditionally, but perhaps the proper fix is
3512   to detect the thread-safe version of the function and use that.
3513   http://curl.haxx.se/mail/lib-2008-05/0011.html
3514
3515 Daniel Stenberg (1 May 2008)
3516 - Bart Whiteley provided a patch that made libcurl work properly when an app
3517   uses the CURLOPT_OPENSOCKETFUNCTION callback to create a unix domain socket
3518   to a http server.
3519
3520 Daniel Stenberg (29 Apr 2008)
3521 - To make it easier for applications that want lots of magic stuff done on
3522   redirections and thus cannot use CURLOPT_FOLLOWLOCATION easily, we now
3523   introduce the new CURLINFO_REDIRECT_URL option that lets applications
3524   extract the URL libcurl would've redirected to if it had been told to. This
3525   then enables the application to continue to that URL as it thinks is
3526   suitable, without having to re-implement the magic of creating the new URL
3527   from the Location: header etc. Test 1029 verifies it.
3528
3529 Yang Tse (29 Apr 2008)
3530 - Improved easy interface resolving timeout handling in c-ares enabled builds
3531
3532 Daniel Fandrich (28 Apr 2008)
3533 - Added test 1028 to test an HTTP redirect to a FTP URL.
3534
3535 Daniel Stenberg (28 Apr 2008)
3536 - Norbert Frese filed bug report #1951588: "Problem with curlftpfs and
3537   libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
3538   identical report to what Denis Golovan reported in
3539   http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the
3540   user/password pointers properly even though there might've been a new
3541   struct/cconnection getting used.
3542
3543 Daniel Stenberg (26 Apr 2008)
3544 - Reverted back to use automake 1.9.6 in the next release (from automake
3545   1.10.1) since it *still* suffers from Solaris-related bugs. Our previous
3546   automake 1.10 problem was reported in bug #1701360
3547   (http://curl.haxx.se/bug/view.cgi?id=1701360) and this recent problem was
3548   bug #1944825 (http://curl.haxx.se/bug/view.cgi?id=1944825). I have not
3549   personally approached the automake team about either one of these but I
3550   figure we need a Solaris 10 guy to do it!
3551
3552 Yang Tse (25 Apr 2008)
3553 - Added 'timeout' and 'delay' attributes support for the test harness
3554   <command> subsection.
3555
3556 Daniel Fandrich (24 Apr 2008)
3557 - Made --stderr able to redirect all stderr messages.
3558
3559 Yang Tse (23 Apr 2008)
3560 - Improve synchronization between test harness runtests.pl script
3561   and test harness servers to minimize risk of false test failures.
3562
3563 Daniel Fandrich (22 Apr 2008)
3564 - Added support for running on Symbian OS.
3565
3566 Daniel Fandrich (18 Apr 2008)
3567 - Added test cases 1026 and 1027 to do some rudimentary tests on the --manual
3568   and --help options.
3569
3570 Michal Marek (14 Apr 2008)
3571 - allow disabling the typechecker by defining CURL_DISABLE_TYPECHECK, as
3572   discussed in http://curl.haxx.se/mail/lib-2008-04/0291.html
3573
3574 Daniel Stenberg (14 Apr 2008)
3575 - Stefan Krause reported a case where the OpenSSL handshake phase wasn't
3576   properly acknowledging the timeout values, like if you pulled the network
3577   plug in the midst of it.
3578
3579 - Andre Guibert de Bruet fixed a second case of not checking the malloc()
3580   return code in the Negotiate code.
3581
3582 - Sandor Feldi reported bug #1942022
3583   (http://curl.haxx.se/bug/view.cgi?id=1942022) pointing out a mistake in the
3584   lib/Makefile.vc[68] makefiles' release-ssl-dll target.
3585
3586 - Brock Noland reported that curl behaved differently depending on which order
3587   you used -i and -I.
3588
3589 Daniel Stenberg (12 Apr 2008)
3590 - Andre Guibert de Bruet found and fixed a case where malloc() was called but
3591   was not checked for a NULL return, in the Negotiate code.
3592
3593 Daniel Fandrich (9 Apr 2008)
3594 - Added test cases 1024 & 1025 to test a scenario similar to the one reported
3595   by Ben Combee where libcurl would send the wrong cookie to a redirected
3596   server.  libcurl was doing the right thing in these test cases.
3597
3598 Michal Marek (7 Apr 2008)
3599 - Fix the MIT / Heimdal check for good:
3600   Define HAVE_GSSMIT if <gssapi/{gssapi.h,gssapi_generic.h,gssapi_krb5.h}> are
3601   available, otherwise define HAVE_GSSHEIMDAL if <gssapi.h> is available.
3602
3603   Only define GSS_C_NT_HOSTBASED_SERVICE to gss_nt_service_name if
3604   GSS_C_NT_HOSTBASED_SERVICE isn't declared by the gssapi headers. This should
3605   avoid breakage in case we wrongly recognize Heimdal as MIT again.
3606
3607 Daniel Stenberg (5 Apr 2008)
3608 - Alexey Simak fixed curl_easy_reset() to reset the max redirect limit properly
3609
3610 - Based on the Debian bug report #474224 that complained about the FTP error
3611   message when libcurl doesn't get a 220 back immediately on connect, I now
3612   changed it to be more specific on what the problem is. Also worth noticing:
3613   while the bug report contains an example where the response is:
3614
3615     421 There are too many connected users, please try again later
3616
3617   we cannot assume that the error message will always be this readable nor
3618   that it fits within a particular boundary etc.
3619
3620 Daniel Fandrich (3 Apr 2008)
3621 - Added test627 to test SFTP with CURLOPT_NOBODY
3622
3623 Daniel Stenberg (3 Apr 2008)
3624 - Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method to
3625   GET simply because previously when you set CURLOPT_NOBODY to TRUE first and
3626   then FALSE you'd end up in a broken state where a HTTP request would do a
3627   HEAD by still act a lot like for a GET and hang waiting for the content etc.
3628
3629 - Scott Barrett added support for CURLOPT_NOBODY over SFTP
3630
3631 Daniel Fandrich (3 Apr 2008)
3632 - Made sure that curl_global_init is called in all the multithreaded
3633   example programs.
3634
3635 Michal Marek (31 Mar 2008)
3636 - Removed the generated ca-bundle.h file. The verbatim value of $ca and
3637   $capath is known to configure, so it can be defined in config.h instead.
3638
3639 Daniel Stenberg (31 Mar 2008)
3640 - Added CURLFORM_STREAM as a supported option to curl_formadd() to allow an
3641   application to provide data for a multipart with the read callback. Note
3642   that the size needs to be provided with CURLFORM_CONTENTSLENGTH when the
3643   stream option is used. This feature is verified by the new test case
3644   554. This feature was sponsored by Xponaut.
3645
3646 Daniel Fandrich (30 Mar 2008)
3647 - Changed the makefile so the doc/examples/ programs are never built in a
3648   normal build/install (only with the 'make check' target), so that a
3649   build failure in the examples isn't fatal.
3650
3651 Version 7.18.1 (30 March 2008)
3652
3653 Daniel Stenberg (28 Mar 2008)
3654 - Stephen Collyer pointed out that configure --with-libssh2 without a given
3655   path didn't work properly.
3656
3657 Daniel Stenberg (27 Mar 2008)
3658 - As found out and reported by Dan Petitt, libcurl didn't show progress/call
3659   the progress callback for the first (potentially huge) piece of body data
3660   sent together with the POST request headers in the initial send().
3661
3662 Daniel Stenberg (25 Mar 2008)
3663 - Made setting the CURLOPT_SSL_CTX_FUNCTION option return a failure in case
3664   libcurl wasn't built to use OpenSSL as that is a prerequisite for this
3665   option to function!
3666
3667 Daniel Stenberg (22 Mar 2008)
3668 - Fixed the problem with doing a zero byte SCP transfer, verified with test
3669   case 617 (which was added by Daniel Fandrich 5 Mar 2008).
3670
3671 Daniel Fandrich (20 Mar 2008)
3672 - Fixed a problem where curl-config --protocols could erroneously show LDAPS
3673   support when curl didn't even have regular LDAP support.  It looks like
3674   this could happen when the --enable-ldaps configure switch is given but
3675   configure couldn't find the LDAP headers or libraries.
3676
3677 Michal Marek (20 Mar 2008)
3678 - Added --with-ca-path=DIRECTORY configure option to use an openSSL CApath by
3679   default instead of a ca bundle. The configure script will also look for a
3680   ca path if no ca bundle is found and no option given.
3681
3682 - Fixed detection of previously installed curl-ca-bundle.crt
3683
3684 Daniel Fandrich (18 Mar 2008)
3685 - Added test 626 to reproduce an infinite loop when given an invalid
3686   SFTP quote command reported by Vincent Le Normand, and fixed it.
3687
3688 Michal Marek (18 Mar 2008)
3689 - Added curl_easy_getinfo typechecker.
3690
3691 - Added macros for curl_share_setopt and curl_multi_setopt to check at least
3692   the correct number of arguments.
3693
3694 Daniel Fandrich (13 Mar 2008)
3695 - Added tests 622-625 to test SFTP/SCP uploads. Test 625 was an attempt to
3696   reproduce the --ftp-create-dirs problem reported by Brian Ulm, but that
3697   seems to need a call curl_easy_reset() which this test case doesn't do.
3698
3699 Daniel Stenberg (13 Mar 2008)
3700 - Brian Ulm figured out that if you did an SFTP upload with
3701   CURLOPT_FTP_CREATE_MISSING_DIRS to create a directory, and then re-used the
3702   handle and uploaded another file to another directory that needed to be
3703   created, the second upload would fail. Another case of a state variable that
3704   wasn't properly reset between requests.
3705
3706 - I rewrote the 100-continue code to use a single state variable instead of
3707   the previous two ones. I think it made the logic somewhat clearer.
3708
3709 Daniel Stenberg (11 Mar 2008)
3710 - Dmitry Popov filed bug report #1911069
3711   (http://curl.haxx.se/bug/view.cgi?id=1911069) that identified a race
3712   condition in the name resolver code when the DNS cache is shared between
3713   multiple easy handles, each running in simultaneous threads that could cause
3714   crashes.
3715
3716 - Added a macro for curl_easy_setopt() that accepts three arguments and simply
3717   does nothing with them, just to make sure libcurl users always use three
3718   arguments to this function. Due to its use of ... for the third argument, it
3719   is otherwise hard to detect abuse.
3720
3721 Michal Marek (11 Mar 2008)
3722 - Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only
3723   works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html ,
3724   http://curl.haxx.se/mail/lib-2008-02/0292.html )
3725
3726 Daniel Fandrich (10 Mar 2008)
3727 - Added tests 618-621 to test SFTP/SCP transfers of more than one file
3728   (test 620 tests the just-fixed problem reported by Brian Ulm).
3729
3730 Daniel Stenberg (9 Mar 2008)
3731 - Brian Ulm reported a crash when doing a second SFTP transfer on a re-used
3732   easy handle if curl_easy_reset() was used between them. I fixed it and Brian
3733   verified that it cured his problem.
3734
3735 - Brian Ulm reported that if you first tried to download a non-existing SFTP
3736   file and then fetched an existing one and re-used the handle, libcurl would
3737   still report the second one as non-existing as well! I fixed it and Brian
3738   verified that it cured his problem.
3739
3740 Michal Marek (6 Mar 2008)
3741 - Fix the gssapi configure check to detect newer MIT Kerberos (patch by
3742   Michael Calmer)
3743
3744 Yang Tse (6 Mar 2008)
3745 - Fix regression on Curl_socket_ready() and Curl_poll() so that these will
3746   again fail on select/poll errors different than EINTR.
3747
3748 Daniel Fandrich (5 Mar 2008)
3749 - Fixed the test harness so it will write out zero-length data files.
3750
3751 - Added tests 616 and 617 to see how SFTP and SCP cope with zero-length
3752   files, as questioned by Mike Protts. SFTP does for me but SCP doesn't
3753   so test 617 is disabled for now.
3754
3755 Daniel S (4 Mar 2008)
3756 - Mike Protts brought a patch that makes resumed transfers work with SFTP.
3757
3758 Daniel S (1 Mar 2008)
3759 - Anatoli Tubman found and fixed a crash with Negotiate authentication used on
3760   a re-used connection where both requests used Negotiate.
3761
3762 Guenter Knauf (26 Feb 2008)
3763 - Kaspar Brand provided a patch to support server name indication (RFC 4366).
3764
3765 Daniel S (25 Feb 2008)
3766 - Kaspar Brand made GnuTLS-built libcurl properly acknowledge the option that
3767   forces it to prefer SSLv3.
3768
3769 Daniel S (23 Feb 2008)
3770 - Sam Listopad provided a patch in feature-request #1900014
3771   http://curl.haxx.se/bug/feature.cgi?id=1900014 that makes libcurl (built to
3772   use OpenSSL) support a full chain of certificates in a given PKCS12
3773   certificate.
3774
3775 Daniel S (22 Feb 2008)
3776 - Georg Lippitsch made the src/Makefile.vc6 makefile use the same memory model
3777   options as the lib/Makefile.vc6 already did.
3778
3779 Daniel S (21 Feb 2008)
3780 - Zmey Petroff found a crash when libcurl accessed a NULL pointer, which
3781   happened if you set the connection cache size to 1 and for example failed to
3782   login to an FTP site. Bug report #1896698
3783   (http://curl.haxx.se/bug/view.cgi?id=1896698)
3784
3785 Daniel S (20 Feb 2008)
3786 - Fixed test case 405 to not fail when libcurl is built with GnuTLS
3787
3788 - Based on initial work done by Gautam Kachroo to address a bug, we now keep
3789   better control at the exact state of the connection's SSL status so that we
3790   know exactly when it has completed the SSL negotiation or not so that there
3791   won't be accidental re-uses of connections that are wrongly believed to be
3792   in SSL-completed-negotiate state.
3793
3794 - We no longer support setting the CURLOPT_URL option from inside a callback
3795   such as the CURLOPT_SSL_CTX_FUNCTION one treat that as if it was a Location:
3796   following. The patch that introduced this feature was done for 7.11.0, but
3797   this code and functionality has been broken since about 7.15.4 (March 2006)
3798   with the introduction of non-blocking OpenSSL "connects".
3799
3800   It was a hack to begin with and since it doesn't work and hasn't worked
3801   correctly for a long time and nobody has even noticed, I consider it a very
3802   suitable subject for plain removal. And so it was done.
3803
3804 Guenter Knauf (19 Feb 2008)
3805 - We do no longer support SSLv2 by default since it has known flaws.
3806   Kaspar Brand provided a patch for all supported SSL toolkits.
3807
3808 Daniel Fandrich (19 Feb 2008)
3809 - Added test309 to test HTTP redirect to HTTPS URL
3810
3811 Daniel S (18 Feb 2008)
3812 - We're no longer providing a very old ca-bundle in the curl tarball. You can
3813   get a fresh one downloaded and created with 'make ca-bundle' or you can get
3814   one from here => http://curl.haxx.se/docs/caextract.html if you want a fresh
3815   new one extracted from Mozilla's recent list of ca certs.
3816
3817   The configure option --with-ca-bundle now lets you specify what file to use
3818   as default ca bundle for your build. If not specified, the configure script
3819   will check a few known standard places for a global ca cert to use.
3820
3821 Daniel S (17 Feb 2008)
3822 - Jerome Muffat-Meridol helped me fix Curl_done() to close the current
3823   connection by force when it was called before the entire request is
3824   completed, simply because we can't know if the connection really can be
3825   re-used safely at that point.
3826
3827 - Based on the same debugging logic, I've also made Curl_http_done() not
3828   return CURLE_GOT_NOTHING if called "prematurely". This should have no real
3829   effect to anything but the code makes more sense like this.
3830
3831 Daniel S (15 Feb 2008)
3832 - Made the gnutls code path not even try to get the server cert if no peer
3833   verification is requested. Previously it would even return failure if gnutls
3834   failed to get the server cert even though no verification was asked for.
3835   Public server showing the problem: https://www.net222.caisse-epargne.fr
3836
3837 - Fix my Curl_timeleft() leftover mistake in the gnutls code
3838
3839 - Pooyan McSporran found and fixed a flaw where you first would do a normal
3840   http request and then you'd reuse the handle and replace the Accept: header,
3841   as then libcurl would send two Accept: headers!
3842
3843 Daniel S (11 Feb 2008)
3844 - Yang Tse pointed out a few remaining quirks from my timeout refactoring from
3845   Feb 7 that didn't abort properly on timeouts. These are actually old
3846   problems but now they should be fixed.
3847
3848 Yang Tse (10 Feb 2008)
3849 - Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out
3850   and provides test program that demonstrates that libcurl might not set error
3851   description message for error CURLE_COULDNT_RESOLVE_HOST for Windows threaded
3852   name resolver builds. Fixed now.
3853
3854 Daniel Fandrich (8 Feb 2008)
3855 - Added key words to all SSL-using tests so they can be skipped if necessary.
3856   Removed a few unnecessary requires SSL statements.
3857
3858 Daniel S (8 Feb 2008)
3859 - Mike Hommey filed and fixed bug report #1889856
3860   (http://curl.haxx.se/bug/view.cgi?id=1889856): When using the gnutls ssl
3861   layer, cleaning-up and reinitializing curl ends up with https requests
3862   failing with "ASN1 parser: Element was not found" errors. Obviously a
3863   regression added in 7.16.3.
3864
3865 Yang Tse (8 Feb 2008)
3866 - Improved test harness SCP/SFTP start up server verification, doing a real
3867   connection to the sftp server, authenticating and running a simple sftp
3868   pwd command using the test harness generated configuration and key files.
3869
3870 Daniel S (8 Feb 2008)
3871 - Günter Knauf added lib/mk-ca-bundle.pl which gets the Firefox ca bundle and
3872   creates a suitable ca-bundle.crt file in PEM format for use with curl. The
3873   recommended way to run it is to use 'make ca-bundle' in the build tree root.
3874
3875 Daniel Fandrich (7 Feb 2008)
3876 - Added tests 1022 and 1023 to validate output of curl-config --version and
3877   --vernum
3878
3879 Daniel S (7 Feb 2008)
3880 - Refactored a lot of timeout code into a few functions in an attempt to make
3881   them all use the same (hopefully correct) logic to make it less error-prone
3882   and easier to introduce library-wide where it should be used.
3883
3884 Yang Tse (6 Feb 2008)
3885 - Fix an issue in strdup replacement function when dealing with absolutely
3886   huge strings. Only systems without a standard strdup would be affected.
3887
3888 Daniel S (3 Feb 2008)
3889 - Dmitry Kurochkin cleaned up the pipelining code and removed the need for and
3890   use of the "is_in_pipeline" struct field.
3891
3892 - I wrote up and added the threaded-ssl.c example source code that shows how
3893   to do multi-threaded downloads of HTTPS files with a libcurl that is built
3894   with OpenSSL. It uses pthreads for the threading.
3895
3896 Daniel S (31 Jan 2008)
3897 - Niklas Angebrand made the cookie support in libcurl properly deal with the
3898   "HttpOnly" feature introduced by Microsoft and apparently also supported by
3899   Firefox: http://msdn2.microsoft.com/en-us/library/ms533046.aspx . HttpOnly
3900   is now supported when received from servers in HTTP headers, when written to
3901   cookie jars and when read from existing cookie jars.
3902
3903   I modified test case 31 and 46 to also do some basic HttpOnly testing.
3904
3905 - Dmitry Kurochkin moved several struct fields from the connectdata struct to
3906   the SingleRequest one to make pipelining better. It is a bit tricky to keep
3907   them in the right place, to keep things related to the actual request or to
3908   the actual connection in the right place.
3909
3910 Daniel S (29 Jan 2008)
3911 - Dmitry Kurochkin fixed Curl_done() for pipelining, as it could previously
3912   crash!
3913
3914 - Michal Marek fixed minor mistake in test case 553 that prevented it from
3915   working on other IP-addresses or port numbers.
3916
3917 Version 7.18.0 (28 January 2008)
3918
3919 Daniel S (27 Jan 2008)
3920 - Dmitry Kurochkin: In "real world" testing I found more bugs in
3921   pipelining. Broken connection is not restored and we get into infinite
3922   loop. It happens because of wrong is_in_pipeline values.
3923
3924 Daniel S (26 Jan 2008)
3925 - Kevin Reed filed bug report #1879375
3926   (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl
3927   got lost in this scenario: proxy tunnel (or HTTPS over proxy), ask to do any
3928   proxy authentication and the proxy replies with an auth (like NTLM) and then
3929   closes the connection after that initial informational response.
3930
3931   libcurl would not properly re-initialize the connection to the proxy and
3932   continue the auth negotiation like supposed. It does now however, as it will
3933   now detect if one or more authentication methods were available and asked
3934   for, and will thus retry the connection and continue from there.
3935
3936 - I made the progress callback get called properly during proxy CONNECT.
3937
3938 Daniel S (23 Jan 2008)
3939 - Igor Franchuk pointed out that CURLOPT_COOKIELIST set to "ALL" leaked
3940   memory, and so did "SESS". Fixed now.
3941
3942 Yang Tse (22 Jan 2008)
3943 - Check poll.h at configuration time, and use it when sys/poll.h unavailable
3944
3945 Daniel S (22 Jan 2008)
3946 - Dmitry Kurochkin removed the cancelled state for pipelining, as we agreed
3947   that it is bad anyway. Starting now, removing a handle that is in used in a
3948   pipeline will break the pipeline - it'll be set back up again but still...
3949
3950 Yang Tse (21 Jan 2008)
3951 - Disable ldap support for cygwin builds, since it breaks whole build process.
3952   Fixing it will affect other platforms, so it is postponed for another release.
3953
3954 Daniel S (18 Jan 2008)
3955 - Lau Hang Kin found and fixed a problem with the multi interface when doing
3956   CONNECT over a proxy. curl_multi_fdset() didn't report back the socket
3957   properly during that state, due to a missing case in the switch in the
3958   multi_getsock() function.
3959
3960 Yang Tse (17 Jan 2008)
3961 - Don't abort tests 518 and 537 when unable to raise the open-file soft limit.
3962
3963 Daniel S (16 Jan 2008)
3964 - Nathan Coulter's patch that makes runtests.pl respect the PATH when figuring
3965   out what valgrind to run.
3966
3967 Yang Tse (16 Jan 2008)
3968 - Improved handling of out of memory in the command line tool that afected
3969   data url encoded HTTP POSTs when reading it from a file.
3970
3971 Daniel S (16 Jan 2008)
3972 - Dmitry Kurochkin worked a lot on improving the HTTP Pipelining support that
3973   previously had a number of flaws, perhaps most notably when an application
3974   fired up N transfers at once as then they wouldn't pipeline at all that
3975   nicely as anyone would think... Test case 530 was also updated to take the
3976   improved functionality into account.
3977
3978 - Calls to Curl_failf() are not supposed to provide a trailing newline as the
3979   function itself adds that. Fixed on 50 or something strings!
3980
3981 Daniel S (15 Jan 2008)
3982 - I made the torture test on test 530 go through. This was actually due to
3983   silly code left from when we switched to let the multi handle "hold" the dns
3984   cache when using the multi interface... Of course this only triggered when a
3985   certain function call returned error at the correct moment.
3986
3987 Daniel S (14 Jan 2008)
3988 - Joe Malicki filed bug report #1871269
3989   (http://curl.haxx.se/bug/view.cgi?id=1871269) and we could fix his hang-
3990   problem that occurred when doing a large HTTP POST request with the
3991   response-body read from a callback.
3992
3993 Daniel S (12 Jan 2008)
3994 - I re-arranged the curl --help output. All the options are now sorted on
3995   their long option names and all descriptions are one-liners.
3996
3997 - Eric Landes provided the patch (edited by me) that introduces the
3998   --keepalive-time to curl to set the keepalive probe interval. I also took
3999   the opportunity to rename the recently added no-keep-alive option to
4000   no-keepalive to keep a consistent naming and to avoid getting two dashes in
4001   these option names. Eric also provided an update to the man page for the new
4002   option.
4003
4004 Daniel S (11 Jan 2008)
4005 - Daniel Egger made CURLOPT_RANGE work on file:// URLs the very same way it
4006   already worked for FTP:// URLs.
4007
4008 - I made the curl tool switch from using CURLOPT_IOCTLFUNCTION to now use the
4009   spanking new CURLOPT_SEEKFUNCTION simply to take advantage of the improved
4010   performance for the upload resume cases where you want to upload the last
4011   few bytes of a very large file. To implement this decently, I had to switch
4012   the client code for uploading from fopen()/fread() to plain open()/read() so
4013   that we can use lseek() to do >32bit seeks (as fseek() doesn't allow that)
4014   on systems that offer support for that.
4015
4016 Daniel S (10 Jan 2008)
4017 - Michal Marek made curl-config --libs not include /usr/lib64 in the output
4018   (it already before skipped /usr/lib).  /usr/lib64 is the default library
4019   directory on many 64bit systems and it's unlikely that anyone would use the
4020   path privately on systems where it's not.
4021
4022 - Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allow
4023   libcurl to seek in a given input stream. This is particularly important when
4024   doing upload resumes when there's already a huge part of the file present
4025   remotely. Before, and still if this callback isn't used, libcurl will read
4026   and through away the entire file up to the point to where the resuming
4027   begins (which of course can be a slow opereration depending on file size,
4028   I/O bandwidth and more). This new function will also be preferred to get
4029   used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when
4030   doing multi-stage HTTP auth with POST/PUT.
4031
4032 - Nikitinskit Dmitriy filed bug report #1868255
4033   (http://curl.haxx.se/bug/view.cgi?id=1868255) with a patch. It identifies
4034   and fixes a problem with parsing WWW-Authenticate: headers with additional
4035   spaces in the line that the parser wasn't written to deal with.
4036
4037 Daniel S (8 Jan 2008)
4038 - Introducing curl_easy_pause() and new magic return codes for both the read
4039   and the write callbacks that now can make a connection's reading and/or
4040   writing get paused.
4041
4042 Daniel S (6 Jan 2008)
4043 - Jeff Johnson filed bug report #1863171
4044   (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
4045   libcurl's date parser didn't accept a +1300 time zone which actually is used
4046   fairly often (like New Zealand's Dailight Savings Time), so I modified the
4047   parser to now accept up to and including -1400 to +1400.
4048
4049 Daniel S (5 Jan 2008)
4050 - Based on further discussion on curl-library, I reverted yesterday's SOCKS5
4051   code to instead introduce support for a new proxy type called
4052   CURLPROXY_SOCKS5_HOSTNAME that is used to send the host name to the proxy
4053   instead of IP address and there's thus no longer any need for a new
4054   curl_easy_setopt() option.
4055
4056   The default SOCKS5 proxy is again back to sending the IP address to the
4057   proxy.  The new curl command line option for enabling sending host name to a
4058   SOCKS5 proxy is now --socks5-hostname.
4059
4060 Daniel S (4 Jan 2008)
4061 - Based on Maxim Perenesenko's patch, we now do SOCKS5 operations and let the
4062   proxy do the host name resolving and only if --socks5ip (or
4063   CURLOPT_SOCKS5_RESOLVE_LOCAL) is used we resolve the host name locally and
4064   pass on the IP address only to the proxy.
4065
4066 Yang Tse (3 Jan 2008)
4067 - Modified test harness to allow SCP, SFTP and SOCKS4 tests to run with
4068   OpenSSH 2.9.9, SunSSH 1.0 or later versions. SOCKS5 tests need OpenSSH
4069   3.7, SunSSH 1.0 or later.
4070
4071 Daniel S (2 Jan 2008)
4072 - I fixed two cases of missing return code checks when handling chunked
4073   decoding where a write error (or abort return from a callback) didn't stop
4074   libcurl's processing.
4075
4076 - I removed the socklen_t use from the public curl/curl.h header and instead
4077   made it an unsigned int. The type was only used in the curl_sockaddr struct
4078   definition (only used by the curl_opensocket_callback). On all platforms I
4079   could find information about, socklen_t is 32 unsigned bits large so I don't
4080   think this will break the API or ABI. The main reason for this change is of
4081   course for all the platforms that don't have a socklen_t definition in their
4082   headers to build fine again. Providing our own configure magic and custom
4083   definition of socklen_t on those systems proved to work but was a lot of
4084   cruft, code and extra magic needed - when this very small change of type
4085   seems harmless and still solves the missing socklen_t problem.
4086
4087 - Richard Atterer brought a patch that added support for SOCKS4a proxies,
4088   which is an inofficial PROXY4 variant that sends the hostname to the proxy
4089   instead of the resolved address (which is already supported by SOCKS5).
4090   --socks4a is the curl command line option for it and CURLOPT_PROXYTYPE can
4091   now be set to CURLPROXY_SOCKS4A as well.
4092
4093 Daniel S (1 Jan 2008)
4094 - Mohun Biswas pointed out that --libcurl generated a source code with an int
4095   function but without a return statement. While fixing that, I also took care
4096   about adding some better comments for the generated code.
4097
4098 Daniel S (27 Dec 2007)
4099 - Dmitry Kurochkin mentioned a flaw
4100   (http://curl.haxx.se/mail/lib-2007-12/0252.html) in detect_proxy() which
4101   failed to set the bits.proxy variable properly when an environment variable
4102   told libcurl to use a http proxy.
4103
4104 Daniel S (26 Dec 2007)
4105 - In an attempt to repeat the problem in bug report #1850730
4106   (http://curl.haxx.se/bug/view.cgi?id=1850730) I wrote up test case 552. The
4107   test is doing a 70K POST with a read callback and an ioctl callback over a
4108   proxy requiring Digest auth. The test case code is more or less identical to
4109   the test recipe code provided by Spacen Jasset (who submitted the bug
4110   report).
4111
4112 Daniel S (25 Dec 2007)
4113 - Gary Maxwell filed bug report #1856628
4114   (http://curl.haxx.se/bug/view.cgi?id=1856628) and provided a fix for the
4115   (small) memory leak in the SSL session ID caching code. It happened when a
4116   previous entry in the cache was re-used.
4117
4118 Daniel Fandrich (19 Dec 2007)
4119 - Ensure that nroff doesn't put anything but ASCII characters into the
4120   --manual text.
4121
4122 Yang Tse (18 Dec 2007)
4123 - MSVC 9.0 (VS2008) does not support Windows build targets prior to WinXP,
4124   and makes wrong asumptions of build target when it isn't specified. So,
4125   if no build target has been defined we will target WinXP when building
4126   curl/libcurl with MSVC 9.0 (VS2008).
4127
4128 - (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
4129   a file truncation problem on Windows build targets triggered when retrying
4130   a download with curl.
4131
4132 Daniel S (17 Dec 2007)
4133 - Mateusz Loskot pointed out that MSVC 9.0 (VS2008) has the pollfd struct and
4134   defines in winsock2.h somehow differently than previous versions and that
4135   curl 7.17.1 would fail to compile out of the box.
4136
4137 Daniel S (13 Dec 2007)
4138 - David Wright filed bug report #1849764
4139   (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
4140   identified a problem for re-used connections that previously had sent
4141   Expect: 100-continue and in some situations the subsequent POST (that didn't
4142   use Expect:) still had the internal flag set for its use. David's fix (that
4143   makes the setting of the flag in every single request unconditionally) is
4144   fine and is now used!
4145
4146 Daniel S (12 Dec 2007)
4147 - Gilles Blanc made the curl tool enable SO_KEEPALIVE for the connections and
4148   added the --no-keep-alive option that can disable that on demand.
4149
4150 Daniel S (9 Dec 2007)
4151 - Andrew Moise filed bug report #1847501
4152   (http://curl.haxx.se/bug/view.cgi?id=1847501) and pointed out a memcpy()
4153   that should be memmove() in the convert_lineends() function.
4154
4155 Daniel S (8 Dec 2007)
4156 - Renamed all internal static functions that had Curl_ prefixes to no longer
4157   have them. The Curl_ prefix is exclusively used for library internal global
4158   symbols. Static functions can be named anything, except for using Curl_ or
4159   curl_ prefixes. This is for consistency and for easier maintainance and
4160   overview.
4161
4162 - Cleaned up and reformatted the TODO document to look like the FAQ and
4163   CONTRIBUTE, which makes nicer web pages
4164
4165 - Added test cases 549 and 550 that test CURLOPT_PROXY_TRANSFER_MODE.
4166
4167 - Added keywords on a bunch of test cases
4168
4169 - Fixed an OOM problem in the curl code that would lead to fclose on a bad
4170   handle and crash
4171
4172 Daniel S (5 Dec 2007)
4173 - Spacen Jasset reported a problem with doing POST (with data read with a
4174   callback) over a proxy when NTLM is used as auth with the proxy. The bug
4175   also concerned Digest and was limited to using callback only. Spacen worked
4176   with us to provide a useful patch. I added the test case 547 and 548 to
4177   verify two variations of POST over proxy with NTLM.
4178
4179 Daniel S (3 Dec 2007)
4180 - Ray Pekowski filed bug report #1842029
4181   (http://curl.haxx.se/bug/view.cgi?id=1842029) in which he identified a
4182   problem with SSL session caching that prevent it from working, and provided
4183   the associated fix!
4184
4185 - Now libcurl (built with OpenSSL) doesn't return error anymore if the remote
4186   SSL-based server doesn't present a certificate when the request is told to
4187   ignore certificate verification anyway.
4188
4189 - Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to control
4190   the appending of the "type=" thing on FTP URLs when they are passed to a
4191   HTTP proxy. Some proxies just don't like that appending (which is done
4192   unconditionally in 7.17.1), and some proxies treat binary/ascii transfers
4193   better with the appending done!
4194
4195 Daniel S (29 Nov 2007)
4196 - A bug report on the curl-library list showed a HTTP Digest session going on
4197   with a 700+ letter nonce. Previously libcurl only support 127 letter ones
4198   and now I bumped it to 1023.
4199
4200 - Fixed the resumed FTP upload loop to not require that the read callback
4201   returns a full buffer on each invoke.
4202
4203 Daniel S (25 Nov 2007)
4204 - Added test case 1015 that tests --data-urlencode in multiple ways
4205
4206 - Fixed --data-urlencode for when no @ or = are used
4207
4208 - Extended the user-agent buffer curl uses, since we can hit the 128 byte
4209   border with plenty development libraries used. Like my current set: "curl
4210   7.17.2-CVS (i686-pc-linux-gnu) libcurl/7.17.2-CVS OpenSSL/0.9.8g
4211   zlib/1.2.3.3 c-ares/1.5.2-CVS libidn/1.1 libssh2/0.19.0-CVS"
4212
4213 Daniel S (24 Nov 2007)
4214 - Internal rearrangements, so that the previous struct HandleData is no more.
4215   It is now known as SingleRequest and the Curl_transfer_keeper struct within
4216   that was remove entirely. This has the upside that there are less duplicate
4217   struct members that made it hard to see and remember what struct that was
4218   used to store what data. The transfer_keeper thing was once stored on a
4219   per-connection basis and then it made sense to have the duplicate info but
4220   since it was moved to the SessionHandle (in 7.16.0) it just added weirdness.
4221   The SingleRequest struct is used by data that only is valid for this single
4222   request.
4223
4224 Yang Tse (22 Nov 2007)
4225 - Provide a socklen_t definition in curl.h for Win32 API build targets
4226   which don't have one.
4227
4228 Daniel S (22 Nov 2007)
4229 - Alessandro Vesely helped me improve the --data-urlencode's syntax, parser
4230   and documentation.
4231
4232 Daniel S (21 Nov 2007)
4233 - While inspecting the Negotiate code, I noticed how the proxy auth was using
4234   the same state struct as the host auth, so both could never be used at the
4235   same time! I fixed it (without being able to check) to use two separate
4236   structs to allow authentication using Negotiate on host and proxy
4237   simultaneously.
4238
4239 Daniel S (20 Nov 2007)
4240 - Emil Romanus pointed out a bug that made an easy handle get the cookie
4241   engine activated when set to use a share (even if the share doesn't share
4242   cookies). I fixed it.
4243
4244 - Fixed a very long-lasting mprintf() bug that occurred when we did "%.*s%s",
4245   since the second %s would then wrongly used the numerical precision argument
4246   instead and crash.
4247
4248 - Introduced --data-urlencode to the curl tool for easier url encoding of the
4249   data sent in a post.
4250
4251 Daniel S (18 Nov 2007)
4252 - Rob Crittenden fixed SSL connections with NSS done with the multi-interface
4253
4254 Daniel S (17 Nov 2007)
4255 - Michal Marek made the test suite remember what test servers that fail to
4256   start so that subsequent tries are simply skipped.
4257
4258 - Andres Garcia made the examples build fine on Windows (mingw + msys) when
4259   the lib was built staticly.
4260
4261 Daniel S (16 Nov 2007)
4262 - Ates Goral identified a problem in http.c:add_buffer_send() when a debug
4263   callback was used, as it could wrongly pass on a bad size for the outgoing
4264   HTTP header. The bad size would be a very large value as it was a wrapped
4265   size_t content. This happened when the whole HTTP request failed to get sent
4266   in one single send.  http://curl.haxx.se/mail/lib-2007-11/0165.html
4267
4268 Daniel S (15 Nov 2007)
4269 - Fixed yet another remaining problem with doing SFTP directory listings on a
4270   re-used persistent connection. Mentioned by Immanuel Gregoire on the mailing
4271   list.
4272
4273 - Michal Marek fixed the test suite to better deal with the case when the HTTP
4274   IPv6 server can't run.
4275
4276 Yang Tse (14 Nov 2007)
4277 - Fix a variable potential wrapping in add_buffer() when using absolutely
4278   huge send buffer sizes.
4279
4280 Daniel S (13 Nov 2007)
4281 - Fixed a remaining problem with doing SFTP directory listings on a re-used
4282   persistent connection. Mentioned by Immanuel Gregoire on the mailing list.
4283
4284 Daniel S (12 Nov 2007)
4285 - Bug report #1830637 (http://curl.haxx.se/bug/view.cgi?id=1830637), which was
4286   forwarded from the Gentoo bug tracker by Daniel Black and was originally
4287   submitted by Robin Johnson, pointed out that libcurl would do bad memory
4288   references when it failed and bailed out before the handler thing was
4289   setup. My fix is not done like the provided patch does it, but instead I
4290   make sure that there's never any chance for a NULL pointer in that struct
4291   member.
4292
4293 Yang Tse (10 Nov 2007)
4294 - Vikram Saxena (http://curl.haxx.se/mail/lib-2007-11/0096.html) pointed out
4295   that the pollfd struct was being multi defined when using VS2008. This is
4296   now fixed in /curl/lib/select.h
4297
4298 Daniel S (8 Nov 2007)
4299 - Bug report #1823487 (http://curl.haxx.se/bug/view.cgi?id=1823487) pointed
4300   out that SFTP requests didn't use persistent connections. Neither did SCP
4301   ones.  I gave the SSH code a good beating and now both SCP and SFTP should
4302   use persistent connections fine. I also did a bunch of indent changes as
4303   well as a bug fix for the "keyboard interactive" auth.
4304
4305 Dan F (6 Nov 2007)
4306 - Improved telnet support by drastically reducing the number of write
4307   callbacks needed to pass a buffer to the user.  Instead one per byte it
4308   is now as little as one per segment.
4309
4310 Yang Tse (6 Nov 2007)
4311 - Bug report #1824894 (http://curl.haxx.se/bug/view.cgi?id=1824894) pointed
4312   out a problem in curl.h when building C++ apps with MSVC. To fix it, the
4313   inclusion of header files in curl.h is moved outside of the C++ extern "C"
4314   linkage block.
4315
4316 Daniel S (1 Nov 2007)
4317 - Toby Peterson patched a memory problem in the command line tool that
4318   happened when a user had a home dir as an empty string. curl would then do
4319   free() on a wrong area.
4320
4321 Dan F (1 Nov 2007)
4322 - Fixed curl-config --features to not display libz when it wasn't used
4323   due to a missing header file.
4324
4325 Dan F (31 October 2007)
4326 - Fixed the output of curl-config --protocols which showed SCP and SFTP
4327   always, except when --without-libssh2 was given
4328
4329 - Added test cases 1013 and 1014 to check that curl-config --protocols and
4330   curl-config --features matches the output of curl --version
4331
4332 Dan F (30 October 2007)
4333 - Fixed an OOM problem with file: URLs
4334
4335 - Moved Curl_file_connect into the protocol handler struct
4336
4337 Dan F (29 October 2007)
4338 - Added test case 546 to check that subsequent FTP transfers work after a
4339   failed one using the multi interface
4340
4341 Daniel S (29 October 2007)
4342 - Based on one of those bug reports that are intercepted by a distro's bug
4343   tracker (https://bugzilla.redhat.com/show_bug.cgi?id=316191), I now made
4344   curl-config --features and --protocols show the correct output when built
4345   with NSS.
4346
4347 Version 7.17.1 (29 October 2007)
4348
4349 Dan F (25 October 2007)
4350 - Added the --static-libs option to curl-config
4351
4352 Daniel S (25 October 2007)
4353 - Made libcurl built with NSS possible to ignore the peer verification.
4354   Previously it would fail if the ca bundle wasn't present, even if the code
4355   ignored the verification results.
4356
4357 Patrick M (25 October 2007)
4358 - Fixed test server to allow null bytes in binary posts.
4359 _ Added tests 35, 544 & 545 to check binary data posts, both static (in place)
4360   and dynamic (copied).
4361
4362 Daniel S (25 October 2007)
4363 - Michal Marek fixed the test script to be able to use valgrind even when the
4364   lib is built shared with libtool.
4365
4366 - Fixed a few memory leaks when the same easy handle is re-used to request
4367   URLs with different protocols. FTP and TFTP related leaks. Caught thanks to
4368   Dan F's new test cases.
4369
4370 Dan F (24 October 2007)
4371 - Fixed the test FTP and TFTP servers to support the >10000 test number
4372   notation
4373
4374 - Added test cases 2000 through 2003 which test multiple protocols using the
4375   same easy handle
4376
4377 - Fixed the filecheck: make target to work outside the source tree
4378
4379 Daniel S (24 October 2007)
4380 - Vladimir Lazarenko pointed out that we should do some 'mt' magic when
4381   building with VC8 to get the "manifest" embedded to make fine stand-alone
4382   binaries. The maketgz and the src/Makefile.vc6 files were adjusted
4383   accordingly.
4384
4385 Daniel S (23 October 2007)
4386 - Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
4387   that libcurl tried to re-use connections a bit too much when using non-SSL
4388   protocols tunneled over a HTTP proxy.
4389
4390 Daniel S (22 October 2007)
4391 - Michal Marek forwarded the bug report
4392   https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to
4393   FTP that caused memory havoc. His work together with my efforts created two
4394   fixes:
4395
4396   #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with
4397        at connection cleanup, at which time the struct HandleData could be
4398        used by another connection.
4399        Also, the unused char *urlpath member is removed from struct FTP.
4400
4401   #2 - provide a Curl_reset_reqproto() function that frees
4402        data->reqdata.proto.* on connection setup if needed (that is if the
4403        SessionHandle was used by a different connection).
4404
4405   A long-term goal is of course to somehow get rid of how the reqdata struct
4406   is used, as it is too error-prone.
4407
4408 - Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
4409   that specifying a proxy with a trailing slash didn't work (unless it also
4410   contained a port number).
4411
4412 Patrick M (15 October 2007)
4413 - Fixed the dynamic CURLOPT_POSTFIELDS problem: this option is now static again
4414   and option CURLOPT_COPYPOSTFIELDS has been added to support dynamic mode.
4415
4416 Patrick M (12 October 2007)
4417 - Added per-protocol callback static tables, replacing callback ptr storage
4418   in the connectdata structure by a single handler table ptr.
4419
4420 Dan F (11 October 2007)
4421 - Fixed the -l option of runtests.pl
4422
4423 - Added support for skipping tests based on key words.
4424
4425 Daniel S (9 October 2007)
4426 - Michal Marek removed the no longer existing return codes from the curl.1
4427   man page.
4428
4429 Daniel S (7 October 2007)
4430 - Known bug #47, which confused libcurl if doing NTLM auth over a proxy with
4431   a response that was larger than 16KB is now improved slightly so that now
4432   the restriction at 16KB is for the headers only and it should be a rare
4433   situation where the response-headers exceed 16KB. Thus, I consider #47 fixed
4434   and the header limitation is now known as known bug #48.
4435
4436 Daniel S (5 October 2007)
4437 - Michael Wallner made the CULROPT_COOKIELIST option support a new magic
4438   string: "FLUSH". Using that will cause libcurl to flush its cookies to the
4439   CURLOPT_COOKIEJAR file.
4440
4441 - The new file docs/libcurl/ABI describes how we view ABI breakages, soname
4442   bumps and what the version number's significance to all that is.
4443
4444 Daniel S (4 October 2007)
4445 - I enabled test 1009 and made the --local-port use a wide range to reduce the
4446   risk of failures.
4447
4448 - Kim Rinnewitz reported that --local-port didn't work with TFTP transfers.
4449   This happened because the tftp code always uncondionally did a bind()
4450   without caring if one already had been done and then it failed. I wrote a
4451   test case (1009) to verify this, but it is a bit error-prone since it will
4452   have to pick a fixed local port number and since the tests are run on so
4453   many different hosts in different situations I'll add it in disabled state.
4454
4455 Yang Tse (3 October 2007)
4456 - Fixed issue related with the use of ares_timeout() result.
4457
4458 Daniel S (3 October 2007)
4459 - Alexey Pesternikov introduced CURLOPT_OPENSOCKETFUNCTION and
4460   CURLOPT_OPENSOCKETDATA to set a callback that allows an application to
4461   replace the socket() call used by libcurl. It basically allows the app to
4462   change address, protocol or whatever of the socket.
4463
4464 - I renamed the CURLE_SSL_PEER_CERTIFICATE error code to
4465   CURLE_PEER_FAILED_VERIFICATION (standard CURL_NO_OLDIES style), and made
4466   this return code get used by the previous SSH MD5 fingerprint check in case
4467   it fails.
4468
4469 - Based on a patch brought by Johnny Luong, libcurl now offers
4470   CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 and the curl tool --hostpubmd5. They both
4471   make the SCP or SFTP connection verify the remote host's md5 checksum of the
4472   public key before doing a connect, to reduce the risk of a man-in-the-middle
4473   attack.
4474
4475 Daniel S (2 October 2007)
4476 - libcurl now handles chunked-encoded CONNECT responses
4477
4478 Daniel S (1 October 2007)
4479 - Alex Fishman reported a curl_easy_escape() problem that was made the
4480   function do wrong on all input bytes that are >= 0x80 (decimal 128) due to a
4481   signed / unsigned mistake in the code. I fixed it and added test case 543 to
4482   verify.
4483
4484 Daniel S (29 September 2007)
4485 - Immanuel Gregoire fixed a problem with persistent transfers over SFTP.
4486
4487 Daniel S (28 September 2007)
4488 - Adapted the c-ares code to the API change c-ares 1.5.0 brings in the
4489   notifier callback(s).
4490
4491 Dan F (26 September 2007)
4492 - Enabled a few more gcc warnings with --enable-debug.  Renamed a few
4493   variables to avoid shadowing global declarations.
4494
4495 Daniel S (26 September 2007)
4496 - Philip Langdale provided the new CURLOPT_POST301 option for
4497   curl_easy_setopt() that alters how libcurl functions when following
4498   redirects. It makes libcurl obey the RFC2616 when a 301 response is received
4499   after a non-GET request is made. Default libcurl behaviour is to change
4500   method to GET in the subsequent request (like it does for response code 302
4501   - because that's what many/most browsers do), but with this CURLOPT_POST301
4502   option enabled it will do what the spec says and do the next request using
4503   the same method again. I.e keep POST after 301.
4504
4505   The curl tool got this option as --post301
4506
4507   Test case 1011 and 1012 were added to verify.
4508
4509 - Max Katsev reported that when doing a libcurl FTP request with
4510   CURLOPT_NOBODY enabled but not CURLOPT_HEADER, libcurl wouldn't do TYPE
4511   before it does SIZE which makes it less useful. I walked over the code and
4512   made it do this properly, and added test case 542 to verify it.
4513
4514 Daniel S (24 September 2007)
4515 - Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handle
4516   URLs ending with a slash properly (it should list the contents of that
4517   directory). Test case 351 brought back and also test 1010 was added.
4518
4519 Daniel S (21 September 2007)
4520 - Mark Davies fixed Negotiate authentication over proxy, and also introduced
4521   the --proxy-negotiate command line option to allow a user to explicitly
4522   select it.
4523
4524 Daniel S (19 September 2007)
4525 - Rob Crittenden provided an NSS update with the following highlights:
4526
4527   o It looks for the NSS database first in the environment variable SSL_DIR,
4528     then in /etc/pki/nssdb, then it initializes with no database if neither of
4529     those exist.
4530
4531   o If the NSS PKCS#11 libnspsem.so driver is available then PEM files may be
4532     loaded, including the ca-bundle. If it is not available then only
4533     certificates already in the NSS database are used.
4534
4535   o Tries to detect whether a file or nickname is being passed in so the right
4536     thing is done
4537
4538   o Added a bit of code to make the output more like the OpenSSL module,
4539     including displaying the certificate information when connecting in
4540     verbose mode
4541
4542   o Improved handling of certificate errors (expired, untrusted, etc)
4543
4544   The libnsspem.so PKCS#11 module is currently only available in Fedora
4545   8/rawhide. Work will be done soon to upstream it. The NSS module will work
4546   with or without it, all that changes is the source of the certificates and
4547   keys.
4548
4549 Daniel S (18 September 2007)
4550 - Immanuel Gregoire pointed out that public key SSH auth failed if no
4551   public/private key was specified and there was no HOME environment variable,
4552   and then it didn't continue to try the other auth methods. Now it will
4553   instead try to get the files id_dsa.pub and id_dsa from the current
4554   directory if none of the two conditions were met.
4555
4556 Dan F (17 September 2007)
4557 - Added hooks to the test suite to make it possible to test a curl running
4558   on a remote host.
4559
4560 - Changed some FTP tests to validate the format of the PORT and EPRT commands
4561   sent by curl, if not the addresses themselves.
4562
4563 Daniel S (15 September 2007)
4564 - Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
4565   proxies for FTP urls.
4566
4567 - Günter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3
4568   support on Windows.
4569
4570 Dan F (13 September 2007)
4571 - Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and
4572   fixed some AC_SUBST configure entries.
4573
4574 Version 7.17.0 (13 September 2007)
4575
4576 Daniel S (12 September 2007)
4577 - Bug report #1792649 (http://curl.haxx.se/bug/view.cgi?id=1792649) pointed
4578   out a problem with doing an empty upload over FTP on a re-used connection.
4579   I added test case 541 to reproduce it and to verify the fix.
4580
4581 - I noticed while writing test 541 that the FTP code wrongly did a CWD on the
4582   second transfer as it didn't store and remember the "" path from the
4583   previous transfer so it would instead CWD to the entry path as stored. This
4584   worked, but did a superfluous command. Thus, test case 541 now also verifies
4585   this fix.
4586
4587 Dan F (5 September 2007)
4588 - Added test case 1007 to test permission problem when uploading with TFTP
4589   (to validate bug #1790403).
4590
4591 - TFTP now reports the "not defined" TFTP error code 0 as an error,
4592   not success.
4593
4594 Daniel S (5 September 2007)
4595 - Continued the work on a fix for #1779054
4596   (http://curl.haxx.se/bug/view.cgi?id=1779054). My previous fix from August
4597   24 was not complete (either) but could accidentally "forget" parts of a
4598   server response which led to faulty server response time-out errors.
4599
4600 Dan F (5 September 2007)
4601 - Minix doesn't support getsockopt on UDP sockets or send/recv on TCP
4602   sockets.
4603
4604 Dan F (31 August 2007)
4605 - Made some of the error strings returned by the *strerror functions more
4606   generic, and more consistent with each other.
4607
4608 - Renamed the curl_ftpssl enum to curl_usessl and its enumerated constants,
4609   creating macros for backward compatibility:
4610
4611     CURLFTPSSL_NONE => CURLUSESSL_NONE
4612     CURLFTPSSL_TRY => CURLUSESSL_TRY
4613     CURLFTPSSL_CONTROL => CURLUSESSL_CONTROL
4614     CURLFTPSSL_ALL => CURLUSESSL_ALL
4615     CURLFTPSSL_LAST => CURLUSESSL_LAST
4616
4617 Dan F (30 August 2007)
4618 - Renamed several libcurl error codes and options to make them more general
4619   and allow reuse by multiple protocols. Several unused error codes were
4620   removed.  In all cases, macros were added to preserve source (and binary)
4621   compatibility with the old names.  These macros are subject to removal at
4622   a future date, but probably not before 2009.  An application can be
4623   tested to see if it is using any obsolete code by compiling it with the
4624   CURL_NO_OLDIES macro defined.
4625
4626   The following unused error codes were removed:
4627
4628     CURLE_BAD_CALLING_ORDER
4629     CURLE_BAD_PASSWORD_ENTERED
4630     CURLE_FTP_CANT_RECONNECT
4631     CURLE_FTP_COULDNT_GET_SIZE
4632     CURLE_FTP_COULDNT_SET_ASCII
4633     CURLE_FTP_USER_PASSWORD_INCORRECT
4634     CURLE_FTP_WEIRD_USER_REPLY
4635     CURLE_FTP_WRITE_ERROR
4636     CURLE_LIBRARY_NOT_FOUND
4637     CURLE_MALFORMAT_USER
4638     CURLE_OBSOLETE
4639     CURLE_SHARE_IN_USE
4640     CURLE_URL_MALFORMAT_USER
4641
4642   The following error codes were renamed:
4643
4644     CURLE_FTP_ACCESS_DENIED =>      CURLE_REMOTE_ACCESS_DENIED
4645     CURLE_FTP_COULDNT_SET_BINARY => CURLE_FTP_COULDNT_SET_TYPE
4646     CURLE_FTP_SSL_FAILED =>         CURLE_USE_SSL_FAILED
4647     CURLE_FTP_QUOTE_ERROR =>        CURLE_QUOTE_ERROR
4648     CURLE_TFTP_DISKFULL =>          CURLE_REMOTE_DISK_FULL
4649     CURLE_TFTP_EXISTS =>            CURLE_REMOTE_FILE_EXISTS
4650     CURLE_HTTP_RANGE_ERROR =>       CURLE_RANGE_ERROR
4651
4652   The following options were renamed:
4653
4654     CURLOPT_SSLKEYPASSWD => CURLOPT_KEYPASSWD
4655     CURLOPT_FTPAPPEND =>    CURLOPT_APPEND
4656     CURLOPT_FTPLISTONLY =>  CURLOPT_DIRLISTONLY
4657     CURLOPT_FTP_SSL =>      CURLOPT_USE_SSL
4658
4659   A few more changes will take place with the next SONAME bump of the
4660   library.  These are documented in docs/TODO
4661
4662 - Documented some newer error codes in libcurl-error(3)
4663
4664 - Added more accurate error code returns from SFTP operations.  Added test
4665   case 615 to test an SFTP upload failure.
4666
4667 Dan F (28 August 2007)
4668 - Some minor internal type and const changes based on a splint scan.
4669
4670 Daniel S (24 August 2007)
4671 - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
4672   out that libcurl didn't deal with large responses from server commands, when
4673   the single response was consisting of multiple lines but of a total size of
4674   16KB or more. Dan Fandrich improved the ftp test script and provided test
4675   case 1006 to repeat the problem, and I fixed the code to make sure this new
4676   test case runs fine.
4677
4678 Patrick M (23 August 2007)
4679 - OS/400 port: new files lib/config-os400.h lib/setup-os400.h packages/OS400/*.
4680   See packages/OS400/README.OS400.
4681
4682 Daniel S (23 August 2007)
4683 - Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
4684   out that doing first a file:// upload and then an FTP upload crashed libcurl
4685   or at best caused furious valgrind complaints. Fixed now!
4686
4687 Daniel S (22 August 2007)
4688 - Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
4689   out that libcurl didn't deal with very long (>16K) FTP server response lines
4690   properly. Starting now, libcurl will chop them off (thus the client app will
4691   not get the full line) but survive and deal with them fine otherwise. Test
4692   case 1003 was added to verify this.
4693
4694 Daniel S (20 August 2007)
4695 - Based on a patch by Christian Vogt, the FTP code now sets the upcoming
4696   download transfer size much earlier to be possible to get read with
4697   CURLINFO_CONTENT_LENGTH_DOWNLOAD as soon as possible. This is very much in a
4698   similar spirit to the HTTP size change from August 11 2007.
4699
4700 Daniel S (18 August 2007)
4701 - Robson Braga Araujo filed bug report #1776232
4702   (http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling
4703   Curl_client_write(), passing on a const string that the caller may not
4704   modify and yet it does (on some platforms).
4705
4706 - Robson Braga Araujo filed bug report #1776235
4707   (http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY
4708   on a directory would do a "SIZE (null)" request. This is now fixed and test
4709   case 1000 was added to verify.
4710
4711 Daniel S (17 August 2007)
4712 - Song Ma provided a patch that cures a problem libcurl has when doing resume
4713   HTTP PUT using Digest authentication. Test case 5320 and 5322 were also
4714   added to verify the functionality.
4715
4716 Daniel S (14 August 2007)
4717 - Andrew Wansink provided an NTLM bugfix: in the case the server sets the flag
4718   NTLMFLAG_NEGOTIATE_UNICODE, we need to filter it off because libcurl doesn't
4719   UNICODE encode the strings it packs into the NTLM authenticate packet.
4720
4721 Daniel S (11 August 2007)
4722 - Allen Pulsifer provided a patch that makes libcurl set the expected download
4723   size earlier when doing HTTP downloads, so that applications and the
4724   progress meter etc know get the info earlier in the flow than before.
4725
4726 - Patrick Monnerat modified the LDAP code and approach in curl. Starting now,
4727   the configure script checks for openldap and friends and we link with those
4728   libs just like we link all other third party libraries, and we no longer
4729   dlopen() those libraries. Our private header file lib/ldap.h was renamed to
4730   lib/curl_ldap.h due to this. I set a tag in CVS (curl-7_17_0-preldapfix)
4731   just before this commit, just in case.
4732
4733 Dan F (8 August 2007)
4734 - Song Ma noted a zlib memory leak in the illegal compressed header
4735   countermeasures code path.
4736
4737 Daniel S (4 August 2007)
4738 - Patrick Monnerat fixed curl_easy_escape() and curlx_strtoll() to work on
4739   non-ASCII systems.
4740
4741 Daniel S (3 August 2007)
4742 - I cut out support for libssh2 versions older than 0.16 to make our code a
4743   lot simpler, and to avoid getting trouble with the LIBSSH2_APINO define
4744   that 1) didn't work properly since it was >32 bits and 2) is removed in
4745   libssh2 0.16...
4746
4747 Daniel S (2 August 2007)
4748 - Scott Cantor filed bug report #1766320
4749   (http://curl.haxx.se/bug/view.cgi?id=1766320) pointing out that the libcurl
4750   code accessed two curl_easy_setopt() options (CURLOPT_DNS_CACHE_TIMEOUT and
4751   CURLOPT_DNS_USE_GLOBAL_CACHE) as ints even though they're documented to be
4752   passed in as longs, and that makes a difference on 64 bit architectures.
4753
4754 - Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
4755   after 7.16.2. This is much due to the different treatment file:// gets
4756   internally, but now I added test 231 to make it less likely to happen again
4757   without us noticing!
4758
4759 Daniel S (1 August 2007)
4760 - Patrick Monnerat and I modified libcurl so that now it *copies* all strings
4761   passed to it with curl_easy_setopt()! Previously it has always just refered
4762   to the data, forcing the user to keep the data around until libcurl is done
4763   with it. That is now history and libcurl will instead clone the given
4764   strings and keep private copies. This is also part of Patrick Monnerat's
4765   OS/400 port.
4766
4767   Due to this being a somewhat interesting change API wise, I've decided to
4768   bump the version of the upcoming release to 7.17.0. Older applications will
4769   of course not notice this change nor do they have to care, but new
4770   applications can be written to take advantage of this.
4771
4772 - Greg Morse reported a problem with POSTing using ANYAUTH to a server
4773   requiring NTLM, and he provided test code and a test server and we worked
4774   out a bug fix. We failed to count sent body data at times, which then caused
4775   internal confusions when libcurl tried to send the rest of the data in order
4776   to maintain the same connection alive.
4777
4778 Daniel S (31 July 2007)
4779 - Peter O'Gorman pointed out (and fixed) that the non-blocking check in
4780   configure made libcurl use blocking sockets on AIX 4 and 5, while that
4781   wasn't the intention.
4782
4783 Daniel S (29 July 2007)
4784 - Jayesh A Shah filed bug report #1759542
4785   (http://curl.haxx.se/bug/view.cgi?id=1759542) identifying a rather serious
4786   problem with FTPS: libcurl closed the data connection socket and then later
4787   in the flow it would call the SSL layer to do SSL shutdown which then would
4788   use a socket that had already been closed - so if the application had opened
4789   a new one in the mean time, libcurl could send gibberish that way! I worked
4790   with Greg Zavertnik to properly diagnose and fix this. The fix affects code
4791   for all SSL libraries we support, but it has only been truly verified to
4792   work fine for the OpenSSL version. The others have only been code reviewed.
4793
4794 Daniel S (23 July 2007)
4795 - Implemented the parts of Patrick Monnerat's OS/400 patch that introduces
4796   support for the OS/400 Secure Sockets Layer library.
4797
4798 Dan F (23 July 2007)
4799 - Implemented only the parts of Patrick Monnerat's OS/400 patch that renamed
4800   some few internal identifiers to avoid conflicts, which could be useful on
4801   other platforms.
4802
4803 Daniel S (22 July 2007)
4804 - HTTP Digest bug fix by Chris Flerackers:
4805
4806   Scenario
4807
4808   - Perfoming a POST request with body
4809   - With authentication (only Digest)
4810   - Re-using a connection
4811
4812   libcurl would send a HTTP POST with an Authorization header but without
4813   body. Our server would return 400 Bad Request in that case (because
4814   authentication passed, but the body was empty).
4815
4816   Cause
4817
4818   1) http_digest.c -> Curl_output_digest
4819   - Updates allocptr.userpwd/allocptr.proxyuserpwd *only* if d->nonce is
4820   filled in (and no errors)
4821   - authp->done = TRUE if d->nonce is filled in
4822   2) http.c -> Curl_http
4823   - *Always* uses allocptr.userpwd/allocptr.proxyuserpwd if not NULL
4824   3) http.c -> Curl_http, Curl_http_output_auth
4825
4826   So what happens is that Curl_output_digest cannot yet update the
4827   Authorization header (allocptr.userpwd) which results in authhost->done=0 ->
4828   authhost->multi=1 -> conn->bits.authneg = TRUE.  The body is not
4829   added. *However*, allocptr.userpwd is still used when building the request
4830
4831 - Added test case 354 that makes a simple FTP retrieval without password, which
4832   verifies the bug fix in #1757328.
4833
4834 Daniel S (21 July 2007)
4835 - To allow more flexibility in FTP test cases, I've removed the enforced states
4836   from the test server code as they served no real purpose. The test server
4837   is here to serve for the test cases, not to attempt to function as a real
4838   server! While at it, I modified test case 141 to better test and verify
4839   curl -I on a single FTP file.
4840
4841 Daniel S (20 July 2007)
4842 - James Housley fixed the SFTP PWD command to work.
4843
4844 - Ralf S. Engelschall filed bug report #1757328
4845   (http://curl.haxx.se/bug/view.cgi?id=1757328) and submitted a patch. It
4846   turns out we broke login to FTP servers that don't require (nor understand)
4847   PASS after the USER command. The breakage was done as part of the krb5
4848   commit so a krb-using person needs to verify that the current version now
4849   works or if we need to fix it (in a different way of course).
4850
4851 Dan F (17 July 2007)
4852 - Fixed test cases 613 and 614 by improving the log postprocessor to handle
4853   a new directory listing format that newer libssh2's can provide.  This
4854   is probably NOT sufficient to handle all directory listing formats that
4855   server's can provide, and should be revisited.
4856
4857 Daniel S (17 July 2007)
4858 - Daniel Johnson fixed a bug in how libssh2_session_last_error() was used, in
4859   two places.
4860
4861 - Jofell Gallardo posted a libcurl log using FTP that exposed a bug which made
4862   a control connection that was deemed "dead" to yet be re-used in a following
4863   request.
4864
4865 Daniel S (13 July 2007)
4866 - Colin Hogben filed bug report #1750274
4867   (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
4868   case where libcurl did a connect attempt to a non-listening port and didn't
4869   provide a human readable error string back.
4870
4871 - Daniel Cater fixes:
4872   1 - made 'make vc8' work on windows.
4873   2 - made libcurl itself built with CURL_NO_OLDIES defined (which doesn't
4874       define the symbols for backwards source compatibility)
4875   3 - updated libcurl-errors.3
4876   4 - added CURL_DISABLE_TFTP to docs/INSTALL
4877
4878 Daniel S (12 July 2007)
4879 - Made the krb5 code build with Heimdal's GSSAPI lib.
4880
4881 Dan F (12 July 2007)
4882 - Compile most of the example apps in docs/examples when doing a 'make check'.
4883   Fixed some compile warnings and errors in those examples.
4884
4885 - Removed the example program ftp3rdparty.c since libcurl doesn't support
4886   3rd party FTP transfers any longer.
4887
4888 Daniel S (12 July 2007)
4889 - Shmulik Regev found an (albeit rare) case where the proxy CONNECT operation
4890   could in fact get stuck in an endless loop.
4891
4892 - Made CURLOPT_SSL_VERIFYHOST set to 1 acts as described in the documentation:
4893   fail to connect if there is no Common Name field found in the remote cert.
4894   We should deprecate the support for this set to 1 anyway soon, since the
4895   feature is pointless and most likely never really used by anyone.
4896
4897 Daniel S (11 July 2007)
4898 - Shmulik Regev fixed a bug with transfer-encoding skipping during the 407
4899   error pages for proxy authentication.
4900
4901 - Giancarlo Formicuccia reported and fixed a problem with a closed connection
4902   to a proxy during CONNECT auth negotiation.
4903
4904 Dan F (10 July 2007)
4905 - Fixed a curl memory leak reported by Song Ma with a modified version
4906   of the patch he suggested.  Added his test case as test289 to verify.
4907
4908 - Force the time zone to GMT in the cookie tests in case the user is
4909   using one of the so-called 'right' time zones that take into account
4910   leap seconds, which causes the tests to fail (as reported by
4911   Daniel Black in bug report #1745964).
4912
4913 Version 7.16.4 (10 July 2007)
4914
4915 Daniel S (10 July 2007)
4916 - Kees Cook notified us about a security flaw
4917   (http://curl.haxx.se/docs/adv_20070710.html) in which libcurl failed to
4918   properly reject some outdated or not yet valid server certificates when
4919   built with GnuTLS. Kees also provided the patch.
4920
4921 James H (5 July 2007)
4922 - Gavrie Philipson provided a patch that will use a more specific error
4923   message for an scp:// upload failure.  If libssh2 has his matching
4924   patch, then the error message return by the server will be used instead
4925   of a more generic error.
4926
4927 Daniel S (1 July 2007)
4928 - Thomas J. Moore provided a patch that introduces Kerberos5 support in
4929   libcurl. This also makes the options change name to --krb (from --krb4) and
4930   CURLOPT_KRBLEVEL (from CURLOPT_KRB4LEVEL) but the old names are still
4931
4932 - Song Ma helped me verify and extend a fix for doing FTP over a SOCKS4/5
4933   proxy.
4934
4935 Daniel S (27 June 2007)
4936 - James Housley: Add two new options for the SFTP/SCP/FILE protocols:
4937   CURLOPT_NEW_FILE_PERMS and CURLOPT_NEW_DIRECTORY_PERMS. These control the
4938   premissions for files and directories created on the remote
4939   server. CURLOPT_NEW_FILE_PERMS defaults to 0644 and
4940   CURLOPT_NEW_DIRECTORY_PERMS defaults to 0755
4941
4942 - I corrected the 10-at-a-time.c example and applied a patch for it by James
4943   Bursa.
4944
4945 Daniel S (26 June 2007)
4946 - Robert Iakobashvili re-arranged the internal hash code to work with a custom
4947   hash function for different hashes, and also expanded the default size for
4948   the socket hash table used in multi handles to greatly enhance speed when
4949   very many connections are added and the socket API is used.
4950
4951 - James Housley made the CURLOPT_FTPLISTONLY mode work for SFTP directory
4952   listings as well
4953
4954 Daniel S (25 June 2007)
4955 - Adjusted how libcurl treats HTTP 1.1 responses without content-lenth or
4956   chunked encoding (that also lacks "Connection: close"). It now simply
4957   assumes that the connection WILL be closed to signal the end, as that is how
4958   RFC2616 section 4.4 point #5 says we should behave.
4959
4960 Version 7.16.3 (25 June 2007)
4961
4962 Daniel S (23 June 2007)
4963 - As reported by "Tro" in http://curl.haxx.se/mail/lib-2007-06/0161.html and
4964   http://curl.haxx.se/mail/lib-2007-06/0238.html, libcurl didn't properly do
4965   no-body requests on FTP files on re-used connections properly, or at least
4966   it didn't provide the info back in the header callback properly in the
4967   subsequent requests.
4968
4969 Daniel S (21 June 2007)
4970 - Gerrit Bruchhäuser pointed out a warning that the Intel(R) Thread Checker
4971   tool reports and it was indeed a legitimate one and it is one fixed. It was
4972   a use of a share without doing the proper locking first.
4973
4974 Daniel S (20 June 2007)
4975 - Adam Piggott filed bug report #1740263
4976   (http://curl.haxx.se/bug/view.cgi?id=1740263). Adam discovered that when
4977   getting a large amount of URLs with curl, they were fetched slower and
4978   slower... which turned out to be because the --libcurl data collecting which
4979   wrongly always was enabled, but no longer is...
4980
4981 Daniel S (18 June 2007)
4982 - Robson Braga Araujo filed bug report #1739100
4983   (http://curl.haxx.se/bug/view.cgi?id=1739100) that mentioned that libcurl
4984   could not actually list the contents of the root directory of a given FTP
4985   server if the login directory isn't root. I fixed the problem and added
4986   three test cases (one is disabled for now since I identified KNOWN_BUGS #44,
4987   we cannot use --ftp-method nocwd and list ftp directories).
4988
4989 Daniel S (14 June 2007)
4990 - Shmulik Regev:
4991
4992   I've encountered (and hopefully fixed) a problem involving proxy CONNECT
4993   requests and easy handles state management. The problem isn't simple to
4994   reproduce since it depends on socket state. It only manifests itself when
4995   working with non-blocking sockets.
4996
4997   Here is the scenario:
4998
4999   1. in multi_runsingle the easy handle is in the CURLM_STATE_WAITCONNECT and
5000   calls Curl_protocol_connect
5001
5002   2. in Curl_proxyCONNECT, line 1247, if the socket isn't ready the function
5003   returns and conn->bits.tunnel_connecting is TRUE
5004
5005   3. when the call to Curl_protocol_connect returns the protocol_connect flag
5006   is false and the easy state is changed to CURLM_STATE_PROTOCONNECT which
5007   isn't correct if a proxy is used.  Rather CURLM_STATE_WAITPROXYCONNECT
5008   should be used.
5009
5010   I discovered this while performing an HTTPS request through a proxy (squid)
5011   on my local network. The problem caused openssl to fail as it read the proxy
5012   response to the CONNECT call ('HTTP/1.0 Established') rather than the SSL
5013   handshake (the exact openssl error was 'wrong ssl version' but this isn't
5014   very important)
5015
5016 - Dave Vasilevsky filed bug report #1736875
5017   (http://curl.haxx.se/bug/view.cgi?id=1736875) almost simultanouesly as Dan
5018   Fandrich mentioned a related build problem on the libcurl mailing list:
5019   http://curl.haxx.se/mail/lib-2007-06/0131.html. Both problems had the same
5020   reason: the definitions of the POLL* defines and the pollfd struct in the
5021   libcurl code was depending on HAVE_POLL instead of HAVE_SYS_POLL_H.
5022
5023 Daniel S (13 June 2007)
5024 - Tom Regner provided a patch and worked together with James Housley, so now
5025   CURLOPT_FTP_CREATE_MISSING_DIRS works for SFTP connections as well as FTP
5026   ones.
5027
5028 - Rich Rauenzahn filed bug report #1733119
5029   (http://curl.haxx.se/bug/view.cgi?id=1733119) and we collaborated on the
5030   fix.  The problem is that for 64bit HPUX builds, several socket-related
5031   functions would still assume int (32 bit) arguments and not socklen_t (64
5032   bit) ones.
5033
5034 Daniel S (12 June 2007)
5035 - James Housley brought his revamped SSH code that is state-machine driven to
5036   really take advantage of the now totally non-blocking libssh2 (in CVS).
5037
5038 Dan F (8 June 2007)
5039 - Incorporated Daniel Black's test706 and test707 SOCKS test cases.
5040
5041 - Fixed a few problems when starting the SOCKS server.
5042
5043 - Reverted some recent changes to runtests.pl that weren't compatible with
5044   perl 5.0.
5045
5046 - Fixed the test harness so that it actually kills the ssh being used as
5047   the SOCKS server.
5048
5049 Daniel S (6 June 2007)
5050 - -s/--silent can now be used to toggle off the silence again if used a second
5051   time.
5052
5053 Daniel S (5 June 2007)
5054 - Added Daniel Black's work that adds the first few SOCKS test cases. I also
5055   fixed two minor SOCKS problems to make the test cases run fine.
5056
5057 Daniel S (31 May 2007)
5058 - Feng Tu made (lib)curl support "upload" resuming work for file:// URLs.
5059
5060 Daniel S (30 May 2007)
5061 - I modified the 10-at-a-time.c example to transfer 500 downloads in parallel
5062   with a c-ares enabled build only to find that it crashed miserably, and this
5063   was due to some select()isms left in the code. This was due to API
5064   restrictions in c-ares 1.3.x, but with the upcoming c-ares 1.4.0 this is no
5065   longer the case so now libcurl runs much better with c-ares and the multi
5066   interface with > 1024 file descriptors in use.
5067
5068   Extra note: starting now we require c-ares 1.4.0 for asynchronous name
5069   resolves.
5070
5071 - Added CURLMOPT_MAXCONNECTS which is a curl_multi_setopt() option for setting
5072   the maximum size of the connection cache maximum size of the multi handle.
5073
5074 Daniel S (27 May 2007)
5075 - When working with a problem Stefan Becker had, I found an off-by-one buffer
5076   overwrite in Curl_select(). While fixing it, I also improved its performance
5077   somewhat by changing calloc to malloc and breaking out of a loop earlier
5078   (when possible).
5079
5080 Daniel S (25 May 2007)
5081 - Rob Crittenden fixed bug #1705802
5082   (http://curl.haxx.se/bug/view.cgi?id=1705802), which was filed by Daniel
5083   Black identifying several FTP-SSL test cases fail when we build libcurl with
5084   NSS for TLS/SSL. Listed as #42 in KNOWN_BUGS.
5085
5086 Daniel S (24 May 2007)
5087 - Song Ma filed bug report #1724016
5088   (http://curl.haxx.se/bug/view.cgi?id=1724016) noticing that downloading
5089   glob-ranges for TFTP was broken in CVS. Fixed now.
5090
5091 - 'mytx' in bug report #1723194 (http://curl.haxx.se/bug/view.cgi?id=1723194)
5092   pointed out that the warnf() function in the curl tool didn't properly deal
5093   with the cases when excessively long words were used in the string to chop
5094   up.
5095
5096 Daniel S (22 May 2007)
5097 - Andre Guibert de Bruet fixed a memory leak in the function that verifies the
5098   peer's name in the SSL certificate when built for OpenSSL. The leak happens
5099   for libcurls with CURL_DOES_CONVERSIONS enabled that fail to convert the CN
5100   name from UTF8. He also fixed a leak when PKCS #12 parsing failed.
5101
5102 Daniel S (18 May 2007)
5103 - Feng Tu reported that curl -w did wrong on TFTP transfers in bug report
5104   #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the
5105   transfer-related info "variables" were indeed overwritten with zeroes
5106   wrongly and have now been adjusted. The upload size still isn't accurate.
5107
5108 Daniel S (17 May 2007)
5109 - Feng Tu pointed out a division by zero error in the TFTP connect timeout
5110   code for timeouts less than five seconds, and also provided a fix for it.
5111   Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
5112
5113 Dan F (16 May 2007)
5114 - Added support for compiling under Minix 3.1.3 using ACK.
5115
5116 Dan F (14 May 2007)
5117 - Added SFTP directory listing test case 613.
5118
5119 - Added support for quote commands before a transfer using SFTP and test
5120   case 614.
5121
5122 - Changed the post-quote commands to occur after the transferred file is
5123   closed.
5124
5125 - Allow SFTP quote commands chmod, chown, chgrp to set a value of 0.
5126
5127 Dan F (9 May 2007)
5128 - Kristian Gunstone fixed a problem where overwriting an uploaded file with
5129   sftp didn't truncate it first, which would corrupt the file if the new
5130   file was shorter than the old.
5131
5132 Dan F (8 May 2007)
5133 - Added FTPS test cases 406 and 407
5134
5135 Daniel S (8 May 2007)
5136 - CURLE_FTP_COULDNT_STOR_FILE is now known as CURLE_UPLOAD_FAILED. This is
5137   because I just made SCP uploads return this value if the file size of
5138   the upload file isn't given with CURLOPT_INFILESIZE*. Docs updated to
5139   reflect this news, and a define for the old name was added to the public
5140   header file.
5141
5142 Daniel S (7 May 2007)
5143 - James Bursa fixed a bug in the multi handle code that made the connection
5144   cache grow a bit too much, beyond the normal 4 * easy_handles.
5145
5146 Daniel S (2 May 2007)
5147 - Anders Gustafsson remarked that requiring CURLOPT_HTTP_VERSION set to 1.0
5148   when CURLOPT_HTTP200ALIASES is used to avoid the problem mentioned below is
5149   not very nice if the client wants to be able to use _either_ a HTTP 1.1
5150   server or one within the aliases list... so starting now, libcurl will
5151   simply consider 200-alias matches the to be HTTP 1.0 compliant.
5152
5153 - Tobias Rundström reported a problem they experienced with xmms2 and recent
5154   libcurls, which turned out to be the 25-nov-2006 change which treats HTTP
5155   responses without Content-Length or chunked encoding as without bodies. We
5156   now added the conditional that the above mentioned response is only without
5157   body if the response is HTTP 1.1.
5158
5159 - Jeff Pohlmeyer improved the hiperfifo.c example to use the
5160   CURLMOPT_TIMERFUNCTION callback option.
5161
5162 - Set the timeout for easy handles to expire really soon after addition or
5163   when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform,
5164   to make applications using only curl_multi_socket() to properly function
5165   when adding easy handles "on the fly". Bug report and test app provided by
5166   Michael Wallner.
5167
5168 Dan F (30 April 2007)
5169 - Improved the test harness to allow running test servers on other than
5170   the default port numbers, allowing more than one test suite to run
5171   simultaneously on the same host.
5172
5173 Daniel S (28 April 2007)
5174 - Peter O'Gorman fixed libcurl to not init GnuTLS as early as we did before,
5175   since it then inits libgcrypt and libgcrypt is being evil and EXITS the
5176   application if it fails to get a fine random seed. That's really not a nice
5177   thing to do by a library.
5178
5179 - Frank Hempel fixed a curl_easy_duphandle() crash on a handle that had
5180   been removed from a multi handle, and then fixed another flaw that prevented
5181   curl_easy_duphandle() to work even after the first fix - the handle was
5182   still marked as using the multi interface.
5183
5184 Daniel S (26 April 2007)
5185 - Peter O'Gorman found a problem with SCP downloads when the downloaded file
5186   was 16385 bytes (16K+1) and it turned out we didn't properly always "suck
5187   out" all data from libssh2. The effect being that libcurl would hang on the
5188   socket waiting for data when libssh2 had in fact already read it all...
5189
5190 Dan F (25 April 2007)
5191 - Added support in runtests.pl for "!n" test numbers to disable individual
5192   tests.  Changed -t to only keep log files around when -k is specified,
5193   to have the same behaviour as without -t.
5194
5195 Daniel S (25 April 2007)
5196 - Sonia Subramanian brought our attention to a problem that happens if you set
5197   the CURLOPT_RESUME_FROM or CURLOPT_RANGE options and an existing connection
5198   in the connection cache is closed to make room for the new one when you call
5199   curl_easy_perform(). It would then wrongly free range-related data in the
5200   connection close funtion.
5201
5202 Yang Tse (25 April 2007)
5203 - Steve Little fixed compilation on VMS 64-bit mode
5204
5205 Daniel S (24 April 2007)
5206 - Robert Iakobashvili made the 'master_buffer' get allocated first once it is
5207   can/will be used as it then makes the common cases save 16KB of data for each
5208   easy handle that isn't used for pipelining.
5209
5210 Dan F (23 April 2007)
5211 - Added <postcheck> support to the test harness.
5212
5213 - Added tests 610-612 to test more SFTP post-quote commands.
5214
5215 Daniel S (22 April 2007)
5216 - Song Ma's warning if -r/--range is given with a "bad" range, also noted in
5217   the man page now.
5218
5219 - Daniel Black filed bug #1705177
5220   (http://curl.haxx.se/bug/view.cgi?id=1705177) where --without-ssl
5221   --with-gnutl outputs a warning about SSL not being enabled even though GnuTLS
5222   was found and used.
5223
5224 Daniel S (21 April 2007)
5225 - Daniel Black filed bug #1704675
5226   (http://curl.haxx.se/bug/view.cgi?id=1704675) identifying a double-free
5227   problem in the SSL-dealing layer, telling GnuTLS to free NULL credentials on
5228   closedown after a failure and a bad #ifdef for NSS when closing down SSL.
5229
5230 Yang Tse (20 April 2007)
5231 - Save one call to curlx_tvnow(), which calls gettimeofday(), in each of
5232   Curl_socket_ready(), Curl_poll() and Curl_select() when these are called
5233   with a zero timeout or a timeout value indicating a blocking call should
5234   be performed.
5235
5236 Daniel S (18 April 2007)
5237 - James Housley made SFTP uploads use libssh2's non-blocking API
5238
5239 - Prevent the internal progress meter from updating more frequently than once
5240   per second.
5241
5242 Dan F (17 April 2007)
5243 - Added test cases 296, 297 and 298 to test --ftp-method handling
5244
5245 Daniel S (16 April 2007)
5246 - Robert Iakobashvil added curl_multi_socket_action() to libcurl, which is a
5247   function that deprecates the curl_multi_socket() function. Using the new
5248   function the application tell libcurl what action that was found in the
5249   socket that it passes in. This gives a significant performance boost as it
5250   allows libcurl to avoid a call to poll()/select() for every call to
5251   curl_multi_socket*().
5252
5253   I added a define in the public curl/multi.h header file that will make your
5254   existing application automatically use curl_multi_socket_action() instead of
5255   curl_multi_socket() when you recompile. But of course you'll get better
5256   performance if you adjust your code manually and actually pass in the
5257   correct action bitmask to this function.
5258
5259 Daniel S (14 April 2007)
5260 - Jay Austin added "DH PARAMETERS" to the stunnel.pem certificate for the test
5261   suite to make stunnel run better in some (most?) environments.
5262
5263 Dan F (13 April 2007)
5264 - Added test cases 294 and 295 to test --ftp-account handling
5265
5266 - Improved handling of out of memory in ftp.
5267
5268 Yang Tse (13 April 2007)
5269 - Fix test case 534 which started to fail 2007-04-13 due to the existance
5270   of a new host on the net with the same silly domain the test was using
5271   for a host which was supposed not to exist.
5272
5273 Daniel S (12 April 2007)
5274 - Song Ma found a memory leak in the if2ip code if you pass in an interface
5275   name longer than the name field of the ifreq struct (typically 6 bytes), as
5276   then it wouldn't close the used dummy socket. Bug #1698974
5277   (http://curl.haxx.se/bug/view.cgi?id=1698974)
5278
5279 Version 7.16.2 (11 April 2007)
5280
5281 Yang Tse (10 April 2007)
5282 - Ravi Pratap provided some fixes for HTTP pipelining
5283
5284 - configure script will ignore --enable-sspi option for non-native Windows.
5285
5286 Daniel S (9 April 2007)
5287 - Nick Zitzmann did ssh.c cleanups
5288
5289 Daniel S (3 April 2007)
5290 - Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
5291
5292 Daniel S (2 April 2007)
5293 - Nick Zitzmann made the CURLOPT_POSTQUOTE option work for SFTP as well. The
5294   accepted commands are as follows:
5295
5296   chgrp (gid) (path)
5297     Changes the group ID of the file or directory at (path) to (gid). (gid)
5298     must be a number.
5299
5300   chmod (perms) (path)
5301     Changes the permissions of the file or directory at (path) to
5302     (perms). (perms) must be a number in the format used by the chmod Unix
5303     command.
5304
5305   chown (uid) (path)
5306     Changes the user ID of the file or directory at (path) to (uid). (uid)
5307     must be a number.
5308
5309   ln (source) (dest)
5310     Creates a symbolic link at (dest) that points to the file located at
5311     (source).
5312
5313   mkdir (path)
5314     Creates a new directory at (path).
5315
5316   rename (source) (dest)
5317     Moves the file or directory at (source) to (dest).
5318
5319   rm (path)
5320     Deletes the file located at (path).
5321
5322   rmdir (path)
5323     Deletes the directory located at (path). This command will raise an error
5324     if the directory is not empty.
5325
5326   symlink (source) (dest)
5327     Same as ln.
5328
5329 Daniel S (1 April 2007)
5330 - Robert Iakobashvili made curl_multi_remove_handle() a lot faster when many
5331   easy handles are added to a multi handle, by avoiding the looping over all
5332   the handles to find which one to remove.
5333
5334 - Matt Kraai provided a patch that makes curl build on QNX 6 fine again.
5335
5336 Daniel S (31 March 2007)
5337 - Fixed several minor issues detected by the coverity.com scanner.
5338
5339 - "Pixel" fixed a problem that appeared when you used -f with user+password
5340   embedded in the URL.
5341
5342 Dan F (29 March 2007)
5343 - Don't tear down the ftp connection if the maximum filesize was exceeded
5344   and added tests 290 and 291 to check.
5345
5346 - Added ftps upload and SSL required tests 401 and 402.
5347
5348 - Send an EOF message before closing an SCP channel, as recommended by
5349   RFC4254. Enable libssh2 tracing when ssh debugging is turned on.
5350
5351 Yang Tse (27 March 2007)
5352 - Internal function Curl_select() renamed to Curl_socket_ready()
5353
5354   New Internal wrapper function Curl_select() around select (2), it
5355   uses poll() when a fine poll() is available, so now libcurl can be
5356   built without select() support at all if a fine poll() is available.
5357
5358 Daniel S (25 March 2007)
5359 - Daniel Johnson fixed multi code to traverse the easy handle list properly.
5360   A left-over bug from the February 21 fix.
5361
5362 Dan F (23 March 2007)
5363 - Added --pubkey option to curl and made --key also work for SCP/SFTP,
5364   plus made --pass work on an SSH private key as well.
5365
5366 - Changed the test harness to attempt to gracefully shut down servers
5367   before resorting to the kill -9 hammer.
5368
5369 - Added test harness infrastructure to support scp/sftp tests, using
5370   OpenSSH as the server.
5371
5372 - Fixed a memory leak when specifying a proxy with a file: URL.
5373
5374 Yang Tse (20 March 2007)
5375 - Fixed: When a signal was caught awaiting for an event using Curl_select()
5376   or Curl_poll() with a non-zero timeout both functions would restart the
5377   specified timeout. This could even lead to the extreme case that if a
5378   signal arrived with a frecuency lower to the specified timeout neither
5379   function would ever exit.
5380
5381   Added experimental symbol definition check CURL_ACKNOWLEDGE_EINTR in
5382   Curl_select() and Curl_poll(). When compiled with CURL_ACKNOWLEDGE_EINTR
5383   defined both functions will return as soon as a signal is caught. Use it
5384   at your own risk, all calls to these functions in the library should be
5385   revisited and checked before fully supporting this feature.
5386
5387 Yang Tse (19 March 2007)
5388 - Bryan Henderson fixed the progress function so that it can get called more
5389   frequently allowing same calling frecuency for the client progress callback.
5390
5391 Dan F (15 March 2007)
5392 - Various memory leaks plugged and NULL pointer fixes made in the ssh code.
5393
5394 Daniel (15 March 2007)
5395 - Nick made the curl tool accept globbing ranges that only is one number, i.e
5396   you can now use [1-1] without curl complaining.
5397
5398 Daniel (10 March 2007)
5399 - Eygene Ryabinkin:
5400
5401   The problem is the following: when we're calling Curl_done and it decides to
5402   keep the connection opened ('left intact'), then the caller is not notified
5403   that the connection was done via the NULLifying of the pointer, so some easy
5404   handle is keeping the pointer to this connection.
5405
5406   Later ConnectionExists can select such connection for reuse even if we're
5407   not pipelining: pipeLen is zero, so the (pipeLen > 0 && !canPipeline) is
5408   false and we can reuse this connection for another easy handle. But thus the
5409   connection will be shared between two easy handles if the handle that wants
5410   to take the ownership is not the same as was not notified of the connection
5411   was done in Curl_done. And when some of these easy handles will get their
5412   connection really freed the another one will still keep the pointer.
5413
5414   My fix was rather trivial: I just added the NULLification to the 'else'
5415   branch in the Curl_done. My tests with Git and ElectricFence showed no
5416   problems both for HTTP pulling and cloning. Repository size is about 250 Mb,
5417   so it was a considerable amount of Curl's work.
5418
5419 Dan F (9 March 2007)
5420 - Updated the test harness to add a new "crypto" feature check and updated the
5421   appropriate test case to use it.  For now, this is treated the same as the
5422   "SSL" feature because curl doesn't list it separately.
5423
5424 Daniel (9 March 2007)
5425 - Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
5426
5427 - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
5428   machine type too.
5429
5430 - Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
5431   upload a file it couldn't open. Bug #1676581
5432   (http://curl.haxx.se/bug/view.cgi?id=1676581)
5433
5434 Dan F (9 March 2007)
5435 - Updated the test harness to check for protocol support before running each
5436   test, fixing KNOWN_BUGS #11.
5437
5438 Dan F (7 March 2007)
5439 - Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
5440   harness.  It is very limited as it supports only ftps:// URLs with
5441   --ftp-ssl-control specified, which implicitly encrypts the control
5442   channel but not the data channels.  That allows stunnel to be used with
5443   an unmodified ftp server in exactly the same way that the test https
5444   server is set up.
5445
5446 Dan F (7 March 2007)
5447 - Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
5448   unencrypted data connections.
5449
5450 Dan F (6 March 2007)
5451 - Fixed a couple of improper pointer uses detected by valgrind in test
5452   cases 181 & 216.
5453
5454 Daniel (2 March 2007)
5455 - Robert A. Monat and Shmulik Regev helped out to fix the new */Makefile.vc8
5456   makefiles that are included in the source release archives, generated from
5457   the Makefile.vc6 files by the maketgz script. I also modified the root
5458   Makefile to have a VC variable that defaults to vc6 but can be overridden to
5459   allow it to be used for vc8 as well. Like this:
5460
5461     nmake VC=vc8 vc
5462
5463 Daniel (27 February 2007)
5464 - Hang Kin Lau found and fixed: When I use libcurl to connect to an https
5465   server through a proxy and have the remote https server port set using the
5466   CURLOPT_PORT option, protocol gets reset to http from https after the first
5467   request.
5468
5469   User defined URL was modified internally by libcurl and subsequent reuse of
5470   the easy handle may lead to connection using a different protocol (if not
5471   originally http).
5472
5473   I found that libcurl hardcoded the protocol to "http" when it tries to
5474   regenerate the URL if CURLOPT_PORT is set. I tried to fix the problem as
5475   follows and it's working fine so far
5476
5477 Daniel (25 February 2007)
5478 - Adam D. Moss made the HTTP CONNECT procedure less blocking when used from
5479   the multi interface. Note that it still does a part of the connection in a
5480   blocking manner.
5481
5482 Daniel (23 February 2007)
5483 - Added warning outputs if the command line uses more than one of the options
5484   -v, --trace and --trace-ascii, since it could really confuse the user.
5485   Clarified this fact in the man page.
5486
5487 Daniel (21 February 2007)
5488 - Ravi Pratap provided work on libcurl making pipelining more robust and
5489   fixing some bugs:
5490   o Don't mix GET and POST requests in a pipeline
5491   o Fix the order in which requests are dispatched from the pipeline
5492   o Fixed several curl bugs with pipelining when the server is returning
5493     chunked encoding:
5494     * Added states to chunked parsing for final CRLF
5495     * Rewind buffer after parsing chunk with data remaining
5496     * Moved chunked header initializing to a spot just before receiving
5497       headers
5498
5499 Daniel (20 February 2007)
5500 - Linus Nielsen Feltzing changed the CURLOPT_FTP_SSL_CCC option to handle
5501   active and passive CCC shutdown and added the --ftp-ssl-ccc-mode command
5502   line option.
5503
5504 Daniel (19 February 2007)
5505 - Ian Turner fixed the libcurl.m4 macro's support for --with-libcurl.
5506
5507 - Shmulik Regev found a memory leak in re-used HTTPS connections, at least
5508   when the multi interface was used.
5509
5510 - Robson Braga Araujo made passive FTP transfers work with SOCKS (both 4 and
5511   5).
5512
5513 Daniel (18 February 2007)
5514 - Jeff Pohlmeyer identified two problems: first a rather obscure problem with
5515   the multi interface and connection re-use that could make a
5516   curl_multi_remove_handle() ruin a pointer in another handle.
5517
5518   The second problem was less of an actual problem but more of minor quirk:
5519   the re-using of connections wasn't properly checking if the connection was
5520   marked for closure.
5521
5522 Daniel (16 February 2007)
5523 - Duncan Mac-Vicar Prett and Michal Marek reported problems with resetting
5524   CURLOPT_RANGE back to no range on an easy handle when using FTP.
5525
5526 Dan F (14 February 2007)
5527 - Fixed curl-config --libs so it doesn't list unnecessary libraries (and
5528   therefore introduce unnecessary dependencies) when it's not needed.
5529   Also, don't bother adding a library path of /usr/lib
5530
5531 Daniel (13 February 2007)
5532 - The default password for anonymous FTP connections is now changed to be
5533   "ftp@example.com".
5534
5535 - Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
5536   gmtime_r() like the older VC versions. He also made use of some machine-
5537   specific defines to differentiate the "OS" define.
5538
5539 Daniel (12 February 2007)
5540 - Rob Crittenden added support for NSS (Network Security Service) for the
5541   SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
5542
5543   This is the fourth supported library for TLS/SSL that libcurl supports!
5544
5545 - Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
5546   to the debug callback.
5547
5548 - Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
5549   CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
5550   internal decoding of content or transfer encoded content. This may be
5551   preferable in cases where you use libcurl for proxy purposes or similar. The
5552   command line tool got a --raw option to disable both at once.
5553
5554 - release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
5555   define set to hold the exact date and time of when the tarball was built, as
5556   a human readable string using the UTC time zone.
5557
5558 - Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
5559   that has an easy handle present in the "closure" list pending closure.
5560
5561 Daniel (6 February 2007)
5562 - Regular file downloads wiht SFTP and SCP are now done using the non-blocking
5563   API of libssh2, if the libssh2 headers seem to support them. This will make
5564   SCP and SFTP much more responsive and better libcurl citizens when used with
5565   the multi interface etc.
5566
5567 Daniel (5 February 2007)
5568 - Michael Wallner added support for CURLOPT_TIMEOUT_MS and
5569   CURLOPT_CONNECTTIMEOUT_MS that, as their names suggest, do the timeouts with
5570   millisecond resolution. The only restriction to that is the alarm()
5571   (sometimes) used to abort name resolves as that uses full seconds. I fixed
5572   the FTP response timeout part of the patch.
5573
5574   Internally we now count and keep the timeouts in milliseconds but it also
5575   means we multiply set timeouts with 1000. The effect of this is that no
5576   timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which
5577   equals 24.86 days.  We probably couldn't before either since the code did
5578   *1000 on the timeout values on several places already.
5579
5580 Daniel (3 February 2007)
5581 - Yang Tse fixed the cookie expiry date in several test cases that started to
5582   fail since they used "1 feb 2007"...
5583
5584 - Manfred Schwarb reported that socks5 support was broken and help us pinpoint
5585   the problem. The code now tries harder to use httproxy and proxy where
5586   apppropriate, as not all proxies are HTTP...
5587
5588 Version 7.16.1 (29 January 2007)
5589
5590 Daniel (29 January 2007)
5591 - Michael Wallner reported that when doing a CONNECT with a custom User-Agent
5592   header, you got _two_ User-Agent headers in the CONNECT request...! Added
5593   test case 287 to verify the fix.
5594
5595 Daniel (28 January 2007)
5596 - curl_easy_reset() now resets the CA bundle path correctly.
5597
5598 - David McCreedy fixed the Curl command line tool for HTTP on non-ASCII
5599   platforms.
5600
5601 Daniel (25 January 2007)
5602 - Added the --libcurl [file] option to curl. Append this option to any
5603   ordinary curl command line, and you will get a libcurl-using source code
5604   written to the file that does the equivalent operation of what your command
5605   line operation does!
5606
5607 Dan F (24 January 2007)
5608 - Fixed a dangling pointer problem that prevented the http_proxy environment
5609   variable from being properly used in many cases (and caused test case 63
5610   to fail).
5611
5612 Daniel (23 January 2007)
5613 - David McCreedy did NTLM changes mainly for non-ASCII platforms:
5614
5615   #1
5616   There's a compilation error in http_ntlm.c if USE_NTLM2SESSION is NOT
5617   defined.  I noticed this while testing various configurations.  Line 867 of
5618   the current http_ntlm.c is a closing bracket for an if/else pair that only
5619   gets compiled in if USE_NTLM2SESSION is defined.  But this closing bracket
5620   wasn't in an #ifdef so the code fails to compile unless USE_NTLM2SESSION was
5621   defined.  Lines 198 and 140 of my patch wraps that closing bracket in an
5622   #ifdef USE_NTLM2SESSION.
5623
5624   #2
5625   I noticed several picky compiler warnings when DEBUG_ME is defined.  I've
5626   fixed them with casting.  By the way, DEBUG_ME was a huge help in
5627   understanding this code.
5628
5629   #3
5630   Hopefully the last non-ASCII conversion patch for libcurl in a while.  I
5631   changed the "NTLMSSP" literal to hex since this signature must always be in
5632   ASCII.
5633
5634   Conversion code was strategically added where necessary.  And the
5635   Curl_base64_encode calls were changed so the binary "blobs" http_ntlm.c
5636   creates are NOT translated on non-ASCII platforms.
5637
5638 Dan F (22 January 2007)
5639 - Converted (most of) the test data files into genuine XML.  A handful still
5640   are not, due mainly to the lack of support for XML character entities
5641   (e.g. & => &amp; ).  This will make it easier to validate test files using
5642   tools like xmllint, as well as to edit and view them using XML tools.
5643
5644 Daniel (16 January 2007)
5645 - Armel Asselin improved libcurl to behave a lot better when an easy handle
5646   doing an FTP transfer is removed from a multi handle before completion. The
5647   fix also fixed the "alive counter" to be correct on "premature removal" for
5648   all protocols.
5649
5650 Dan F (16 January 2007)
5651 - Fixed a small memory leak in tftp uploads discovered by curl's memory leak
5652   detector.  Also changed tftp downloads to URL-unescape the downloaded
5653   file name.
5654
5655 Daniel (14 January 2007)
5656 - David McCreedy provided libcurl changes for doing HTTP communication on
5657   non-ASCII platforms. It does add some complexity, most notably with more
5658   #ifdefs, but I want to see this supported added and I can't see how we can
5659   add it without the extra stuff added.
5660
5661 - Setting CURLOPT_COOKIELIST to "ALL" when no cookies at all was present,
5662   libcurl would crash when trying to read a NULL pointer.
5663
5664 Daniel (12 January 2007)
5665 - Toby Peterson found a nasty bug that prevented (lib)curl from properly
5666   downloading (most) things that were larger than 4GB on 32 bit systems.  Matt
5667   Witherspoon helped as narrow down the problem.
5668
5669 Daniel (5 January 2007)
5670 - Linus Nielsen Feltzing introduced the --ftp-ssl-ccc command line option to
5671   curl that uses the new CURLOPT_FTP_SSL_CCC option in libcurl. If enabled, it
5672   will make libcurl shutdown SSL/TLS after the authentication is done on a
5673   FTP-SSL operation.
5674
5675 Daniel (4 January 2007)
5676 - David McCreedy made changes to allow base64 encoding/decoding to work on
5677   non-ASCII platforms.
5678
5679 Daniel (3 January 2007)
5680 - Matt Witherspoon fixed the flaw which made libcurl 7.16.0 always store
5681   downloaded data in two buffers, just to be able to deal with a special HTTP
5682   pipelining case. That is now only activated for pipelined transfers. In
5683   Matt's case, it showed as a considerable performance difference,
5684
5685 Daniel (2 January 2007)
5686 - Victor Snezhko helped us fix bug report #1603712
5687   (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
5688   (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
5689   on Windows (since 7.16.0, but that's when they were introduced as previous
5690   to that the limiting logic was made in the application only and not in the
5691   library). It was actually also broken on select()-based systems (as apposed
5692   to poll()) but we haven't had any such reports. We now use select(), Sleep()
5693   or delay() properly to sleep a while without waiting for anything input or
5694   output when the rate limiting is activated with the easy interface.
5695
5696 - Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
5697   to get built static. It has been mentioned before and was again brought to
5698   our attention by Nathanael Nerode who filed debian bug report #405226
5699   (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
5700
5701 Daniel (29 December 2006)
5702 - Make curl_easy_duphandle() set the magic number in the new handle.
5703
5704 Daniel (22 December 2006)
5705 - Robert Foreman provided a prime example snippet showing how libcurl would
5706   get confused and not acknowledge the 'no_proxy' variable properly once it
5707   had used the proxy and you re-used the same easy handle. I made sure the
5708   proxy name is properly stored in the connect struct rather than the
5709   sessionhandle/easy struct.
5710
5711 - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
5712   variable to point to when it should be a socklen_t.
5713
5714 - When setting a proxy with environment variables and (for example) running
5715   'curl [URL]' with a URL without a protocol prefix, curl would not send a
5716   correct request as it failed to add the protocol prefix.
5717
5718 Daniel (21 December 2006)
5719 - Robson Braga Araujo reported bug #1618359
5720   (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
5721   patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
5722   enters an infinite loop, while curl 7.16.1-20061218 does one additional
5723   unnecessary request.
5724
5725   Fix: During the "Major overhaul introducing http pipelining support and
5726   shared connection cache within the multi handle." change, headerbytecount
5727   was moved to live in the Curl_transfer_keeper structure. But that structure
5728   is reset in the Transfer method, losing the information that we had about
5729   the header size. This patch moves it back to the connectdata struct.
5730
5731 Daniel (16 December 2006)
5732 - Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
5733   during certain conditions when GnuTLS is used.
5734
5735 Daniel (11 December 2006)
5736 - Alexey Simak found out that when doing FTP with the multi interface and
5737   something went wrong like it got a bad response code back from the server,
5738   libcurl would leak memory. Added test case 538 to verify the fix.
5739
5740   I also noted that the connection would get cached in that case, which
5741   doesn't make sense since it cannot be re-use when the authentication has
5742   failed. I fixed that issue too at the same time, and also that the path
5743   would be "remembered" in vain for cases where the connection was about to
5744   get closed.
5745
5746 Daniel (6 December 2006)
5747 - Sebastien Willemijns reported bug #1603712
5748   (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
5749   getting cut off prematurely when --limit-rate is used. While I found no such
5750   problems in my tests nor in my reading of the code, I found that the
5751   --limit-rate code was severly flawed (since it was moved into the lib, since
5752   7.15.5) when used with the easy interface and it didn't work as documented
5753   so I reworked it somewhat and now it works for my tests.
5754
5755 Daniel (5 December 2006)
5756 - Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
5757   passing a curl_off_t argument to the Curl_read_rewind() function which takes
5758   an size_t argument. Curl_read_rewind() also had debug code left in it and it
5759   was put in a different source file with no good reason when only used from
5760   one single spot.
5761
5762 - Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
5763   no code present in the library that receives the option. Since it was not
5764   possible to use, we know that no current users exist and thus we simply
5765   removed it from the docs and made the code always use the default path of
5766   the code.
5767
5768 - Jared Lundell filed bug report #1604956
5769   (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
5770   CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
5771   will always internally use no less than 1 entry in the connection cache.
5772
5773 - Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
5774   the 7.16.0 release.
5775
5776 - Martin Skinner brought back bug report #1230118 to haunt us once again.
5777   (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
5778   properly for all input dates on Windows. It was mostly seen on some TZ time
5779   zones using DST. Luckily, Martin also provided a fix.
5780
5781 - Alexey Simak filed bug report #1600447
5782   (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
5783   FTP connections don't work with the multi interface. The problem is here
5784   that the multi interface state machine has a state during which it can wait
5785   for the data connection to connect, but the active connection is not done in
5786   the same step in the sequence as the passive one is so it doesn't quite work
5787   for active. The active FTP code still use a blocking function to allow the
5788   remote server to connect.
5789
5790   The fix (work-around is a better word) for this problem is to set the
5791   boolean prematurely that the data connection is completed, so that the "wait
5792   for connect" phase ends at once.
5793
5794   The proper fix, left for the future, is of course to make the active FTP
5795   case to act in a non-blocking way too.
5796
5797 - Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
5798   HTTP upload was disconnected:
5799
5800   "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
5801   setting *only* POLLHUP on poll() when the conditions in my previous mail
5802   occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
5803   basically what was happening, is poll() was returning immediately (with
5804   POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
5805   POLLOUT was set. This still caused Curl_readwrite() to be called, which
5806   quickly returned. Then the transfer() loop kept continuing at full speed
5807   forever."
5808
5809 Daniel (1 December 2006)
5810 - Toon Verwaest reported that there are servers that send the Content-Range:
5811   header in a third, not suppported by libcurl, format and we agreed that we
5812   could make the parser more forgiving to accept all the three found
5813   variations.
5814
5815 Daniel (25 November 2006)
5816 - Venkat Akella found out that libcurl did not like HTTP responses that simply
5817   responded with a single status line and no headers nor body. Starting now, a
5818   HTTP response on a persistent connection (i.e not set to be closed after the
5819   response has been taken care of) must have Content-Length or chunked
5820   encoding set, or libcurl will simply assume that there is no body.
5821
5822   To my horror I learned that we had no less than 57(!) test cases that did bad
5823   HTTP responses like this, and even the test http server (sws) responded badly
5824   when queried by the test system if it is the test system. So although the
5825   actual fix for the problem was tiny, going through all the newly failing test
5826   cases got really painful and boring.
5827
5828 Daniel (24 November 2006)
5829 - James Housley did lots of work and introduced SFTP downloads.
5830
5831 Daniel (13 November 2006)
5832 - Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
5833   out a stack overwrite (and the corresponding fix) on 64bit Windows when
5834   dealing with HTTP chunked encoding.
5835
5836 Daniel (9 November 2006)
5837 - Nir Soffer updated libcurl.framework.make:
5838   o fix symlinks, should link to Versions, not to ./Versions
5839   o indentation improvments
5840
5841 - Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
5842   2006. It turned out we wrongly assumed that the connection cache was present
5843   when tearing down a connection.
5844
5845 - Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
5846   multi interface, but I could also repeat it doing multiple sequential ones
5847   with the easy interface. Using Ciprian's test case, I could fix it.
5848
5849 Daniel (8 November 2006)
5850 - Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
5851   CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
5852   SSL handshake. This is now stopped.
5853
5854 Daniel (7 November 2006)
5855 - Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
5856   wrong error message in the error message buffer.
5857
5858 Daniel (3 November 2006)
5859 - Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
5860   KNOWN_BUGS #25, which happens when a proxy closes the connection when
5861   libcurl has sent CONNECT, as part of an authentication negotiation. Starting
5862   now, libcurl will re-connect accordingly and continue the authentication as
5863   it should.
5864
5865 Daniel (2 November 2006)
5866 - James Housley brought support for SCP transfers, based on the libssh2 library
5867   for the actual network protocol stuff.
5868
5869   Added these new curl_easy_setopt() options:
5870
5871     CURLOPT_SSH_AUTH_TYPES
5872     CURLOPT_SSH_PUBLIC_KEYFILE
5873     CURLOPT_SSH_PRIVATE_KEYFILE
5874
5875 Version 7.16.0 (30 October 2006)
5876
5877 Daniel (25 October 2006)
5878 - Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
5879   case when 401 or 407 are returned, *IF* no auth credentials have been given.
5880   The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
5881   and 407 cases when auth credentials is given, but we've now covered this
5882   somewhat more.
5883
5884   You might get some amounts of headers transferred before this situation is
5885   detected, like for when a "100-continue" is received as a response to a
5886   POST/PUT and a 401 or 407 is received immediately afterwards.
5887
5888   Added test 281 to verify this change.
5889
5890 Daniel (23 October 2006)
5891 - Ravi Pratap provided a major update with pipelining fixes. We also no longer
5892   re-use connections (for pipelining) before the name resolving is done.
5893
5894 Daniel (21 October 2006)
5895 - Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
5896   the single test applications' link and dependences, so that you easier can
5897   override those from the command line when using make.
5898
5899 - Armel Asselin separated CA cert verification problems from problems with
5900   reading the (local) CA cert file to let users easier pinpoint the actual
5901   problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
5902
5903 Daniel (18 October 2006)
5904 - Removed the "protocol-guessing" for URLs with host names starting with FTPS
5905   or TELNET since they are practically non-existant. This leaves us with only
5906   three different prefixes that would assume the protocol is anything but
5907   HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
5908
5909 Daniel (17 October 2006)
5910 - Bug report #1579171 pointed out code flaws detected with "prefast", and they
5911   were 1 - a too small memory clear with memset() in the threaded resolver and
5912   2 - a range of potentially bad uses of the ctype family of is*() functions
5913   such as isdigit(), isalnum(), isprint() and more. The latter made me switch
5914   to using our own set of these functions/macros using uppercase letters, and
5915   with some extra set of crazy typecasts to avoid mistakingly passing in
5916   negative numbers to the underlying is*() functions.
5917
5918 - With Jeff Pohlmeyer's help, I fixed the expire timer when using
5919   curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
5920   options now work fine with curl_multi_socket() as well.
5921
5922 Daniel (16 October 2006)
5923 - Added a check in configure that simply tries to run a program (not when
5924   cross-compiling) in order to detect problems with run-time libraries that
5925   otherwise would occur when the sizeof tests for curl_off_t would run and
5926   thus be much more confusing to users. The check of course should run after
5927   all lib-checks are done and before any other test is used that would run an
5928   executable built for testing-purposes.
5929
5930 Dan F (13 October 2006)
5931 - The tagging of application/x-www-form-urlencoded POST body data sent
5932   to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
5933   included as part of the header).  A message was also added to the
5934   command line tool to show when data is being sent, enabled when
5935   --verbose is used.
5936
5937 Daniel (12 October 2006)
5938 - Starting now, adding an easy handle to a multi stack that was already added
5939   to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
5940
5941 - Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
5942   and while doing so it became apparent that the current timeout system for
5943   the socket API really was a bit awkward since it become quite some work to
5944   be sure we have the correct timeout set.
5945
5946   Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
5947   callback the app can set to get to know when the general timeout time
5948   changes and thus for an application like hiperfifo.c it makes everything a
5949   lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
5950   good old libcurl tradition.
5951
5952   Jeff has also updated the hiperfifo.c example code to use this news.
5953
5954 Daniel (9 October 2006)
5955 - Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
5956   case 535 and it now runs fine. Again a problem with the pipelining code not
5957   taking all possible (error) conditions into account.
5958
5959 Daniel (6 October 2006)
5960 - Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
5961   test case 533 and the test now runs fine.
5962
5963 Daniel (4 October 2006)
5964 - Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
5965   but that worked nicely in 7.15.5. I converted it into test case 532 and
5966   fixed the problem.
5967
5968 Daniel (29 September 2006)
5969 - Removed a few other no-longer present options from the header file.
5970
5971 - Support for FTP third party transfers was removed. Here's why:
5972
5973   o The recent multi interface changes broke it and the design of the 3rd party
5974     transfers made it very hard to fix the problems
5975   o It was still blocking and thus nasty for the multi interface
5976   o It was a lot of extra code for a very rarely used feature
5977   o It didn't use the same code as for "plain" FTP transfers, so it didn't work
5978     fine for IPv6 and it didn't properly re-use connections and more
5979   o There's nobody around who's willing to work on and improve the existing
5980     code
5981
5982   This does not mean that third party transfers are banned forever, only that
5983   they need to be done better if they are to be re-added in the future.
5984
5985   The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
5986   options from the command line tool. For this reason, I also bumped the
5987   version info for the lib.
5988
5989 Daniel (28 September 2006)
5990 - Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
5991   would crash if a bad function sequence was used when shutting down after
5992   using the multi interface (i.e using easy_cleanup after multi_cleanup) so
5993   precautions have been added to make sure it doesn't any more - test case 529
5994   was added to verify.
5995
5996 Daniel (27 September 2006)
5997 - The URL in the cookie jar file is now changed since it was giving a 404.
5998   Reported by Timothy Stone. The new URL will take the visitor to a curl web
5999   site mirror with the document.
6000
6001 Daniel (24 September 2006)
6002 - Bernard Leak fixed configure --with-gssapi-libs.
6003
6004 - Cory Nelson made libcurl use the WSAPoll() function if built for Windows
6005   Vista (_WIN32_WINNT >= 0x0600)
6006
6007 Daniel (23 September 2006)
6008 - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
6009   encrypt the control connection and use the data connection "plain".
6010
6011 - Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
6012   as it now will read the full data sent from servers. The SOCKS-related code
6013   was also moved to the new lib/socks.c source file.
6014
6015 Daniel (21 September 2006)
6016 - Added test case 531 in an attempt to repeat bug report #1561470
6017   (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
6018   FTP upload fails with the multi interface. It did not, but I made a failed
6019   upload still assume the control connection to be fine.
6020
6021 Daniel (20 September 2006)
6022 - Armel Asselin fixed problems when you gave a proxy URL with user name and
6023   empty password or no password at all. Test case 278 and 279 were added to
6024   verify.
6025
6026 Daniel (12 September 2006)
6027 - Added docs/examples/10-at-a-time.c by Michael Wallner
6028
6029 - Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
6030
6031 Daniel (11 September 2006)
6032 - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
6033   handle that is part of a multi handle first removes the handle from the
6034   stack.
6035
6036 - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
6037   session-ID re-use on demand since there obviously are broken servers out
6038   there that misbehave with session-IDs used.
6039
6040 - Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
6041   problem with it (SIGSEGV-style). It clearly showed that the existing
6042   socket-state and state-difference function wasn't good enough so I rewrote
6043   it and could then re-run Jeff's program without any crash. The previous
6044   version clearly could miss to tell the application when a handle changed
6045   from using one socket to using another.
6046
6047   While I was at it (as I could use this as a means to track this problem
6048   down), I've now added a 'magic' number to the easy handle struct that is
6049   inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
6050   we can use internally to detect that an easy handle seems to be fine, or at
6051   least not closed or freed (freeing in debug builds fill the area with 0x13
6052   bytes but in normal builds we can of course not assume any particular data
6053   in the freed areas).
6054
6055 Daniel (9 September 2006)
6056 - Michele Bini fixed how the hostname is put in NTLM packages. As servers
6057   don't expect fully qualified names we need to cut them off at the first dot.
6058
6059 - Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
6060   of them can be completetly removed though...
6061
6062 Daniel (6 September 2006)
6063 - Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
6064   multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
6065   handle will be attempted to get pipelined instead of done in parallell as
6066   they are performed otherwise.
6067
6068   As a side-effect from this work, connections are now shared between all easy
6069   handles within a multi handle, so if you use N easy handles for transfers,
6070   each of them can pick up and re-use a connection that was previously used by
6071   any of the handles, be it the same or one of the others.
6072
6073   This separation of the tight relationship between connections and easy
6074   handles is most noticable when you close easy handles that have been used in
6075   a multi handle and check amount of used memory or watch the debug output, as
6076   there are times when libcurl will keep the easy handle around for a while
6077   longer to be able to close it properly. Like for sending QUIT to close down
6078   an FTP connection.
6079
6080   This is a major change.
6081
6082 Daniel (4 September 2006)
6083 - Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
6084   patch that while not fixing things very nicely, it does make the SOCKS5
6085   proxy connection slightly better as it now acknowledges the timeout for
6086   connection and it no longer segfaults in the case when SOCKS requires
6087   authentication and you did not specify username:password.
6088
6089 Daniel (31 August 2006)
6090 - Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
6091   name resolves. It could get stuck in the wrong state.
6092
6093 Gisle (29 August 2006)
6094 - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
6095   compiler now uses the same config.dos file (renamed to config.h by
6096   make). libcurl now builds fine using Watcom and Metaware's High-C
6097   using the Watt-32 tcp/ip-stack.
6098
6099 Daniel (29 August 2006)
6100 - David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
6101   allow applications to set their own socket options.
6102
6103 Daniel (25 August 2006)
6104 - Armel Asselin reported that the 'running_handles' counter wasn't updated
6105   properly if you removed a "live" handle from a multi handle with
6106   curl_multi_remove_handle().
6107
6108 Daniel (22 August 2006)
6109 - David McCreedy fixed a remaining mistake from the August 19 TYPE change.
6110
6111 - Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
6112   code when doing pure IPv6 EPRT connections.
6113
6114 Daniel (19 August 2006)
6115 - Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
6116   command on subsequent requests on a re-used connection unless it has to.
6117
6118 - Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
6119   files in the root directory.
6120
6121 - Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
6122   send the whole request at once, even though the Expect: header was disabled
6123   by the application. An effect of this change is also that small (< 1024
6124   bytes) POSTs are now always sent without Expect: header since we deem it
6125   more costly to bother about that than the risk that we send the data in
6126   vain.
6127
6128 Daniel (9 August 2006)
6129 - Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
6130   CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
6131   in the command sequence as it would have run if there would've been a
6132   transfer.
6133
6134 Daniel (8 August 2006)
6135 - Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
6136   on a persistent connection and allowed the first to use that header, you
6137   could not disable it for the second request.
6138
6139 Daniel (7 August 2006)
6140 - Domenico Andreolfound a quick build error which happened because
6141   src/config.h.in was not a proper duplcate of lib/config.h.in which it
6142   should've been and this was due to the maketgz script not doing the cp
6143   properly.
6144
6145 Version 7.15.5 (7 August 2006)
6146
6147 Daniel (2 August 2006)
6148 - Mark Lentczner fixed how libcurl was not properly doing chunked encoding
6149   if the header "Transfer-Encoding: chunked" was set by the application.
6150   http://curl.haxx.se/bug/view.cgi?id=1531838
6151
6152 Daniel (1 August 2006)
6153 - Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
6154   an unknown error number on glibc systems.
6155   http://curl.haxx.se/bug/view.cgi?id=1532289
6156
6157 Daniel (31 July 2006)
6158 - *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
6159   prototypes: they both now provide the number of running handles back to the
6160   calling function. It makes the functions resemble the good old
6161   curl_multi_perform() more and provides a nice way to know when the multi
6162   handle goes empty.
6163
6164   ALERT2: don't use the curl_multi_socket*() functionality in anything
6165   production-like until I say it's somewhat settled, as I suspect there might
6166   be some further API changes before I'm done...
6167
6168 Daniel (28 July 2006)
6169 - Yves Lejeune fixed so that replacing Content-Type: when doing multipart
6170   formposts work exactly the way you want it (and the way you'd assume it
6171   works).
6172
6173 Daniel (27 July 2006)
6174 - David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
6175   control and data connection, as the existing --ftp-ssl option only requests
6176   it.
6177
6178 - [Hiper-related work] Added a function called curl_multi_assign() that will
6179   set a private pointer added to the internal libcurl hash table for the
6180   particular socket passed in to this function:
6181
6182   CURLMcode curl_multi_assign(CURLM *multi_handle,
6183                               curl_socket_t sockfd,
6184                               void *sockp);
6185
6186   'sockp' being a custom pointer set by the application to be associated with
6187   this socket. The socket has to be already existing and in-use by libcurl,
6188   like having already called the callback telling about its existance.
6189
6190   The set hashp pointer will then be passed on to the callback in upcoming
6191   calls when this same socket is used (in the brand new 'socketp' argument).
6192
6193 Daniel (26 July 2006)
6194 - Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
6195   tool option named --ftp-alternative-to-user. It provides a mean to send a
6196   particular command if the normal USER/PASS approach fails.
6197
6198 - Michael Jerris added magic that builds lib/curllib.vcproj automatically for
6199   newer MSVC.
6200
6201 Daniel (25 July 2006)
6202 - Georg Horn made the transfer timeout error message include more details.
6203
6204 Daniel (20 July 2006)
6205 - David McCreedy fixed a build error when building libcurl with HTTP disabled,
6206   problem added with the curl_formget() patch.
6207
6208 Daniel (17 July 2006)
6209 - Jari Sundell did some excellent research and bug tracking, figured out that
6210   we did wrong and patched it: When nodes were removed from the splay tree,
6211   and we didn't properly remove it from the splay tree when an easy handle was
6212   removed from a multi stack and thus we could wrongly leave a node in the
6213   splay tree pointing to (bad) memory.
6214
6215 Daniel (14 July 2006)
6216 - David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
6217   for FTP ASCII transfers.
6218
6219 Daniel (8 July 2006)
6220 - Ates Goral pointed out that libcurl's cookie parser did case insensitive
6221   string comparisons on the path which is incorrect and provided a patch that
6222   fixes this. I edited test case 8 to include details that test for this.
6223
6224 - Ingmar Runge provided a source snippet that caused a crash. The reason for
6225   the crash was that libcurl internally was a bit confused about who owned the
6226   DNS cache at all times so if you created an easy handle that uses a shared
6227   DNS cache and added that to a multi handle it would crash. Now we keep more
6228   careful internal track of exactly what kind of DNS cache each easy handle
6229   uses: None, Private (allocated for and used only by this single handle),
6230   Shared (points to a cache held by a shared object), Global (points to the
6231   global cache) or Multi (points to the cache within the multi handle that is
6232   automatically shared between all easy handles that are added with private
6233   caches).
6234
6235 Daniel (4 July 2006)
6236 - Toshiyuki Maezawa fixed a problem where you couldn't override the
6237   Proxy-Connection: header when using a proxy and not doing CONNECT.
6238
6239 Daniel (24 June 2006)
6240 - Michael Wallner added curl_formget(), which allows an application to extract
6241   (serialise) a previously built formpost (as with curl_formadd()).
6242
6243 Daniel (23 June 2006)
6244 - Arve Knudsen found a flaw in curl_multi_fdset() for systems where
6245   curl_socket_t is unsigned (like Windows) that could cause it to wrongly
6246   return a max fd of -1.
6247
6248 Daniel (20 June 2006)
6249 - Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
6250   CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
6251   to send or receive data. This kind of adds the the command line tool's
6252   option --limit-rate to the library.
6253
6254   The rate limiting logic in the curl app is now removed and is instead
6255   provided by libcurl itself. Transfer rate limiting will now also work for -d
6256   and -F, which it didn't before.
6257
6258 Daniel (19 June 2006)
6259 - Made -K on a file that couldn't be read cause a warning to be displayed.
6260
6261 Daniel (13 June 2006)
6262 - Dan Fandrich implemented --enable-hidden-symbols configure option to enable
6263   -fvisibility=hidden on gcc >= 4.0.  This reduces the size of the libcurl
6264   binary and speeds up dynamic linking by hiding all the internal symbols from
6265   the symbol table.
6266
6267 Version 7.15.4 (12 June 2006)
6268
6269 Daniel (8 June 2006)
6270 - Brian Dessent fixed the code for cygwin in three distinct ways:
6271
6272   The first modifies {lib,src}/setup.h to not include the winsock headers
6273   under Cygwin.  This fixes the reported build problem.  Cygwin attempts as
6274   much as possible to emulate a posix environment under Windows.  This means
6275   that WIN32 is *not* #defined and (to the extent possible) everything is done
6276   as it would be on a *ix type system.  Thus <sys/socket.h> is the proper
6277   include, and even though winsock2.h is present, including it just introduces
6278   a whole bunch of incompatible socket API stuff.
6279
6280   The second is a patch I've included in the Cygwin binary packages for a
6281   while.  It skips two unnecessary library checks (-lwinmm and -lgdi32).  The
6282   checks are innocuous and they do succeed, but they pollute LIBS with
6283   unnecessary stuff which gets recorded as such in the libcurl.la file, which
6284   brings them into the build of any libcurl-downstream.  As far as I know
6285   these libs are really only necessary for mingw, so alternatively they could
6286   be designed to only run if $host matches *-*-mingw* but I took the safer
6287   route of skipping them for *-*-cygwin*.
6288
6289   The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
6290   with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
6291
6292 Daniel (7 June 2006)
6293 - Mikael Sennerholm provided a patch that added NTLM2 session response support
6294   to libcurl. The 21 NTLM test cases were again modified to comply...
6295
6296 Daniel (27 May 2006)
6297 - Ã“scar Morales Vivó updated the libcurl.framework.make file.
6298
6299 Daniel (26 May 2006)
6300 - Olaf Stüben fixed a bug that caused Digest authentication with md5-sess to
6301   fail. When using the md5-sess, the result was not Md5 encoded and Base64
6302   transformed.
6303
6304 Daniel (25 May 2006)
6305 - Michael Wallner provided a patch that allows "SESS" to be set with
6306   CURLOPT_COOKIELIST, which then makes all session cookies get cleared.
6307
6308 Daniel (24 May 2006)
6309 - Tor Arntsen made test 271 run fine again since the TFTP path fix.
6310
6311 Daniel (23 May 2006)
6312 - Martin Michlmayr filed debian bug report #367954, but the same error also
6313   showed up in the autobuilds. It seems a rather long-since introduced shell
6314   script flaw in the configure script suddenly was detected by the bash
6315   version in Debian Unstable. It had previously passed undetected by all
6316   shells used so far...
6317
6318 - David McCreedy updated lib/config-tpf.h
6319
6320 Daniel (11 May 2006)
6321 - Fixed the configure's check for old-style SSLeay headers since I fell over a
6322   case with a duplicate file name (a krb4 implementation with an err.h
6323   file). I converted the check to manually make sure three of the headers are
6324   present before considering them fine.
6325
6326 - David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
6327   checks on the to-be-returned socket to make sure it truly seems to be alive
6328   and well. For SSL connection it (only) uses OpenSSL functions.
6329
6330 Daniel (10 May 2006)
6331 - Fixed DICT in two aspects:
6332
6333   1 - allow properly URL-escaped words, like using %20 for spaces
6334
6335   2 - properly escape certain letters within a word to comply to the RFC2229
6336
6337 Daniel (9 May 2006)
6338 - Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
6339   autotools project, which optionally (default=yes) uses libcurl on a system
6340   without a (usable) libcurl installation, but not specifying
6341   `--without-libcurl', configure determines correctly that no libcurl is
6342   available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
6343   in the resulting Makefiles.
6344
6345   David Shaw fixed the flaw.
6346
6347 - Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
6348   connects. The state machine was not reset properly so that subsequent
6349   connects using the same handle would fail, and there were two memory leaks.
6350
6351 - Robson Braga Araujo fixed a memory leak when you added an easy handle to a
6352   multi stack and that easy handle had already been used to do one or more
6353   easy interface transfers, as then the code threw away the previously used
6354   DNS cache without properly freeing it.
6355
6356 Daniel (8 May 2006)
6357 - Dan Fandrich went over the TFTP code and he pointed out and fixed numerous
6358   problems:
6359
6360   * The received file is corrupted when a packet is lost and retransmitted
6361     (this is a serious problem!)
6362
6363   * Transmitting a file aborts if a block is lost and retransmitted
6364
6365   * Data is stored in the wrong location in the buffer for uploads, so uploads
6366     always fail (I don't see how it could have ever worked, but it did on x86
6367     at least)
6368
6369   * A number of calls are made to strerror instead of Curl_strerror, making
6370     the code not thread safe
6371
6372   * There are references to errno instead of Curl_sockerrno(), causing
6373     incorrect error messages on Windows
6374
6375   * The file name includes a leading / which violates RFC3617. Doing something
6376     similar to ftp, where two slashes after the host name means an absolute
6377     reference seems a reasonable extension to fix this.
6378
6379   * Failures in EBCDIC conversion are not propagated up to the caller but are
6380     silently ignored
6381
6382 - Fixed known bug #28. The TFTP code no longer assumes a packed struct and
6383   thus works reliably on more platforms.
6384
6385 Daniel (5 May 2006)
6386 - Roland Blom filed bug report #1481217
6387   (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
6388   Bini and David Byron. libcurl previously wrongly used GetLastError() on
6389   windows to get error details after socket-related function calls, when it
6390   really should use WSAGetLastError() instead.
6391
6392   When changing to this, the former function Curl_ourerrno() is now instead
6393   called Curl_sockerrno() as it is necessary to only use it to get errno from
6394   socket-related functions as otherwise it won't work as intended on Windows.
6395
6396 Daniel (4 May 2006)
6397 - Mark Eichin submitted bug report #1480821
6398   (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
6399   problem with how libcurl dealt with GnuTLS and a case where gnutls returned
6400   GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
6401   return code, making Curl_ssl_send() confuse the upper layer - causing random
6402   28 bytes trash data to get inserted in the transfered stream.
6403
6404   The proper fix was to make the Curl_gtls_send() function return the proper
6405   return codes that the callers would expect. The Curl_ossl_send() function
6406   already did this.
6407
6408 Daniel (2 May 2006)
6409 - Added a --checkfor option to curl-config to allow users to easier
6410   write for example shell scripts that test for the presence of a
6411   new-enough libcurl version. If --checkfor is given a version string
6412   newer than what is currently installed, curl-config will return a
6413   non-zero exit code and output a string about the unfulfilled
6414   requirement.
6415
6416 Daniel (26 April 2006)
6417 - David McCreedy brought initial line end conversions when doing FTP ASCII
6418   transfers. They are done on non-windows systems and translate CRLF to LF.
6419
6420   I modified the 15 LIST-using test cases accordingly. The downside is that now
6421   we'll have even more trouble to get the tests to run on Windows since they
6422   should get CRLF newlines left intact which the *nix versions don't. I figure
6423   the only sane thing to do is to add some kind of [newline] macro for the test
6424   case files and have them expanded to the proper native line ending when the
6425   test cases are run. This is however left to implement.
6426
6427 Daniel (25 April 2006)
6428 - Paul Querna fixed libcurl to better deal with deflate content encoding
6429   when the stream (wrongly) lacks a proper zlib header. This seems to be the
6430   case on too many actual server implementations.
6431
6432 Daniel (21 April 2006)
6433 - Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
6434
6435 Daniel (19 April 2006)
6436 - Based on previous info from Tor Arntsen, I made configure detect the Intel
6437   ICC compiler to add a compiler option for it, in order for configure to
6438   properly be able to detect function prototypes.
6439
6440 - Robson Braga Araujo provided a patch that makes libcurl less eager to close
6441   the control connection when using FTP, for example when you remove an easy
6442   handle from a multi stack.
6443
6444 - Applied a patch by Ates Goral and Katie Wang that corrected my bad fix
6445   attempt from April 10.
6446
6447 Daniel (11 April 2006)
6448 - #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
6449   typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
6450   since the struct timeval field tv_sec is an int while time_t is 64bit.
6451
6452 Daniel (10 April 2006)
6453 - Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
6454   CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
6455   connection time-out!
6456
6457 - I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
6458   sources. See the lib/README.multi_socket for implementation story with
6459   details. Don't expect it to work fully yet. I don't intend to blow any
6460   whistles or ring any bells about it until I'm more convinced it works at
6461   least somewhat reliably.
6462
6463 Daniel (7 April 2006)
6464 - David McCreedy's EBCDIC and TPF changes. Three new curl_easy_setopt()
6465   options (callbacks) were added:
6466
6467   CONV_FROM_NETWORK_FUNCTION
6468   CONV_TO_NETWORK_FUNCTION
6469   CONV_FROM_UTF8_FUNCTION
6470
6471 Daniel (5 April 2006)
6472 - Michele Bini modified the NTLM code to work for his "weird IIS case"
6473   (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
6474   function in addition to the LM one and making some other adjustments in the
6475   order the different parts of the data block are sent in the Type-2 reply.
6476   Inspiration for this work was taken from the Firefox NTLM implementation.
6477
6478   I edited the existing 21(!) NTLM test cases to run fine with these news. Due
6479   to the fact that we now properly include the host name in the Type-2 message
6480   the test cases now only compare parts of that chunk.
6481
6482 Daniel (28 March 2006)
6483 - #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
6484   occurred when asking libcurl to follow HTTP redirects and the original URL
6485   had more than one question mark (?). Added test case 276 to verify.
6486
6487 Daniel (27 March 2006)
6488 - David Byron found a problem multiple -d options when libcurl was built with
6489   --enable-debug, as then curl used free() on memory allocated both with
6490   normal malloc() and with libcurl-provided functions, when the latter MUST be
6491   freed with curl_free() in debug builds.
6492
6493 Daniel (26 March 2006)
6494 - Tor Arntsen figured out that TFTP was broken on a lot of systems since we
6495   called bind() with a too big argument in the 3rd parameter and at least
6496   Tru64, AIX and IRIX seem to be very picky about it.
6497
6498 Daniel (21 March 2006)
6499 - David McCreedy added CURLINFO_FTP_ENTRY_PATH.
6500
6501 - Xavier Bouchoux made the SSL connection non-blocking for the multi interface
6502   (when using OpenSSL).
6503
6504 - Tor Arntsen fixed the AIX Toolbox RPM spec
6505
6506 Daniel (20 March 2006)
6507 - David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
6508   reacts properly according to the CURLOPT_FTP_SSL setting.
6509
6510 - Dan Fandrich fixed two TFTP problems: Fixed a bug whereby a received file
6511   whose length was a multiple of 512 bytes could have random garbage
6512   appended. Also, stop processing TFTP packets which are too short to be
6513   legal.
6514
6515 - Ilja van Sprundel reported a possible crash in the curl tool when using
6516   "curl hostwithoutslash -d data -G"
6517
6518 Version 7.15.3 (20 March 2006)
6519
6520 Daniel (20 March 2006)
6521 - VULNERABILITY reported to us by Ulf Harnhammar.
6522
6523   libcurl uses the given file part of a TFTP URL in a manner that allows a
6524   malicious user to overflow a heap-based memory buffer due to the lack of
6525   boundary check.
6526
6527   This overflow happens if you pass in a URL with a TFTP protocol prefix
6528   ("tftp://"), using a valid host and a path part that is longer than 512
6529   bytes.
6530
6531   The affected flaw can be triggered by a redirect, if curl/libcurl is told to
6532   follow redirects and an HTTP server points the client to a tftp URL with the
6533   characteristics described above.
6534
6535   The Common Vulnerabilities and Exposures (CVE) project has assigned the name
6536   CVE-2006-1061 to this issue.
6537
6538 Daniel (16 March 2006)
6539 - Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
6540   in the release archive.
6541
6542 Daniel (14 March 2006)
6543 - David McCreedy fixed:
6544
6545   a bad SSL error message when OpenSSL certificates are verified fine.
6546
6547   a missing return code assignment in the FTP code
6548
6549 Daniel (7 March 2006)
6550 - Markus Koetter filed debian bug report #355715 which identified a problem
6551   with the multi interface and multi-part formposts. The fix from February
6552   22nd could make the Curl_done() function get called twice on the same
6553   connection and it was not designed for that and thus tried to call free() on
6554   an already freed memory area!
6555
6556 - Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
6557   is used properly.
6558
6559 Daniel (6 March 2006)
6560 - Lots of users on Windows have reported getting the "SSL: couldn't set
6561   callback" error message so I've now made the setting of that callback not be
6562   as critical as before. The function is only used for additional loggging/
6563   trace anyway so a failure just means slightly less data. It should still be
6564   able to proceed and connect fine to the server.
6565
6566 Daniel (4 March 2006)
6567 - Thomas Klausner provided a patch written by Todd Vierling in bug report
6568   #1442471 that fixes a build problem on Interix.
6569
6570 Daniel (2 March 2006)
6571 - FTP upload without a file name part in the URL now causes
6572   curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
6573   upload but named the file "(nil)" (without the quotes). Test case 524
6574   verifies.
6575
6576 - Added a check for getprotobyname in configure so that it'll be used, thanks
6577   to Gisle Vanem's change the other day.
6578
6579 Daniel (28 February 2006)
6580 - Dan Fandrich prevented curl from getting stuck in an endless loop in case we
6581   are out of file handles very early in curl's code where it makes sure that
6582   0, 1 and 2 aren't gonna be used by the lib for transfers.
6583
6584 Daniel (27 February 2006)
6585 - Marty Kuhrt pointed out that there were two VMS-specific files missing in
6586   the release archive.
6587
6588 Version 7.15.2 (27 February 2006)
6589
6590 Daniel (22 February 2006)
6591 - Lots of work and analysis by "xbx___" in bug #1431750
6592   (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
6593   different but related bugs:
6594
6595   1) Removing an easy handle from a multi handle before the transfer is done
6596      could leave a connection in the connection cache for that handle that is
6597      in a state that isn't suitable for re-use. A subsequent re-use could then
6598      read from a NULL pointer and segfault.
6599
6600   2) When an easy handle was removed from the multi handle, there could be an
6601      outstanding c-ares DNS name resolve request. When the response arrived,
6602      it caused havoc since the connection struct it "belonged" to could've
6603      been freed already.
6604
6605   Now Curl_done() is called when an easy handle is removed from a multi handle
6606   pre-maturely (that is, before the transfer was complteted). Curl_done() also
6607   makes sure to cancel all (if any) outstanding c-ares requests.
6608
6609 Daniel (21 February 2006)
6610 - Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
6611   type to the already provided type CURLPROXY_SOCKS4.
6612
6613   I added a --socks4 option that works like the current --socks5 option but
6614   instead use the socks4 protocol.
6615
6616 Daniel (20 February 2006)
6617 - Shmulik Regev fixed an issue with multi-pass authentication and compressed
6618   content when libcurl didn't honor the internal ignorebody flag.
6619
6620 Daniel (18 February 2006)
6621 - Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
6622   code. It should however not be the cause of any troubles. He also fixed a
6623   few similar problems in the HTTP test server code.
6624
6625 Daniel (17 February 2006)
6626 - Shmulik Regev provided a fix for the DNS cache when using short life times,
6627   as previously it could be holding on to old cached entries longer than
6628   requested.
6629
6630 Daniel (11 February 2006)
6631 - Karl Moerder added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options
6632   that an app can use to let libcurl only connect to a remote host and then
6633   extract the socket from libcurl. libcurl will then not attempt to do any
6634   transfer at all after the connect is done.
6635
6636 - Kent Boortz improved the configure check for GnuTLS to properly set LIBS
6637   instead of LDFLAGS.
6638
6639 Daniel (8 February 2006)
6640 - Philippe Vaucher provided a brilliant piece of test code that show a problem
6641   with re-used FTP connections. If the second request on the same connection
6642   was set not to fetch a "body", libcurl could get confused and consider it an
6643   attempt to use a dead connection and would go acting mighty strange.
6644
6645 Daniel (2 February 2006)
6646 - Make --limit-rate [num] mean bytes. It used to be that but it broke in my
6647   change done in November 2005.
6648
6649 Daniel (30 January 2006)
6650 - Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
6651   curl tool with --local-port. Plain and simply set the range of ports to bind
6652   the local end of connections to. Implemented on to popular demand.
6653
6654 - Based on an error report by Philippe Vaucher, we no longer count a retried
6655   connection setup as a follow-redirect. It turns out 1) this fails when a FTP
6656   connection is re-setup and 2) it does make the max-redirs counter behave
6657   wrong.
6658
6659 Daniel (24 January 2006)
6660 - Michal Marek provided a patch for FTP that makes libcurl continue to try
6661   PASV even after EPSV returned a positive response code, if libcurl failed to
6662   connect to the port number the EPSV response said. Obviously some people are
6663   going through protocol-sensitive firewalls (or similar) that don't
6664   understand EPSV and then they don't allow the second connection unless PASV
6665   was used. This also called for a minor fix of test case 238.
6666
6667 Daniel (20 January 2006)
6668 - Duane Cathey was one of our friends who reported that curl -P [IP]
6669   (CURLOPT_FTPPORT) didn't work for IPv6-enabed curls if the IP wasn't a
6670   "native" IP while it works fine for IPv6-disabled builds!
6671
6672   In the process of fixing this, I removed the support for LPRT since I can't
6673   think of many reasons to keep doing it and asking on the mailing list didn't
6674   reveal anyone else that could either. The code that sends EPRT and PORT is
6675   now also a lot simpler than before (IMHO).
6676
6677 Daniel (19 January 2006)
6678 - Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
6679   (built IPv4-only) didn't work.
6680
6681 Daniel (18 January 2006)
6682 - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
6683   the configure script complained about a missing "missing" script if you ran
6684   configure within a path whose name included one or more spaces. This is due
6685   to a flaw in automake (1.9.6 and earlier). I've now worked around it by
6686   including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
6687   be used instead of the one automake ships with. This kludge needs to be
6688   removed once we get an automake version with this problem corrected.
6689   Possibly we'll then need to convert this into a kludge depending on what
6690   automake version that is used and that is gonna be painful and I don't even
6691   want to think about that now...!
6692
6693 Daniel (17 January 2006)
6694 - David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
6695   the latest features and protocols that libcurl supports and has a minor fix
6696   to better deal with the obscure case where someone has more than one libcurl
6697   installed at the same time.
6698
6699 Daniel (16 January 2006)
6700 - David Shaw finally removed all traces of Gopher and we are now officially
6701   not supporting it. It hasn't been functioning for years anyway, so this is
6702   just finally stating what already was true. And a cleanup at the same time.
6703
6704 - Bryan Henderson turned the 'initialized' variable for curl_global_init()
6705   into a counter, and thus you can now do multiple curl_global_init() and you
6706   are then supposed to do the same amount of calls to curl_global_cleanup().
6707   Bryan has also updated the docs accordingly.
6708
6709 Daniel (13 January 2006)
6710 - Andrew Benham fixed a race condition in the test suite that could cause the
6711   test script to kill all processes in the current process group!
6712
6713 Daniel (12 January 2006)
6714 - Michael Jahn:
6715
6716   Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
6717   HTTP proxy.
6718
6719   Fixed PROXYTUNNEL to work fine when you do ftp through a proxy.  It would
6720   previously overwrite internal memory and cause unpredicted behaviour!
6721
6722 Daniel (11 January 2006)
6723 - I decided to document the "secret option" here now, as I've received *NO*
6724   feedback at all on my mailing list requests from November 2005:
6725
6726   I'm looking for feedback and comments. I added some experimental code the
6727   other day, that allows a libcurl user to select what method libcurl should
6728   use to reach a file on a FTP(S) server.
6729
6730   This functionality is available in CVS code and in recent daily snapshots.
6731
6732   Let me explain...
6733
6734   The current name for the option is CURLOPT_FTP_FILEMETHOD (--ftp-method for
6735   the command line tool) and you set it to a long (there are currenly no
6736   defines for the argument values, just plain numericals). You can set three
6737   different "methods" that do this:
6738
6739   1 multicwd - like today, curl will do a single CWD operation for each path
6740            part in the given URL. For deep hierarchies this means very many
6741            commands. This is how RFC1738 says it should be done. This is the
6742            default.
6743
6744   2 nocwd - no CWD at all is done, curl will do SIZE, RETR, STOR etc and give
6745            a full path to the server.
6746
6747   3 singlecwd - make one CWD with the full target directory and then operate
6748             on the file "normally".
6749
6750   (With the command line tool you do --ftp-method [METHOD], where [METHOD] is
6751   one of "multicwd", "nocwd" or "singlecwd".)
6752
6753   What feedback I'm interested in:
6754
6755   1 - Do they work at all? Do you find servers where one of these don't work?
6756
6757   2 - What would proper names for the option and its arguments be, if we
6758       consider this feature good enough to get included and documented in
6759       upcoming releases?
6760
6761   3 - Should we make libcurl able to "walk through" these options in case of
6762       (path related) failures, or should it fail and let the user redo any
6763       possible retries?
6764
6765   (This option is not documented in any man page just yet since I'm not sure
6766   these names will be used or if the functionality will end up exactly like
6767   this.  And for the same reasons we have no test cases for these yet.)
6768
6769 Daniel (10 January 2006)
6770 - When using a bad path over FTP, as in when libcurl couldn't CWD into all
6771   given subdirs, libcurl would still "remember" the full path as if it is the
6772   current directory libcurl is in so that the next curl_easy_perform() would
6773   get really confused if it tried the same path again - as it would not issue
6774   any CWD commands at all, assuming it is already in the "proper" dir.
6775
6776   Starting now, a failed CWD command sets a flag that prevents the path to be
6777   "remembered" after returning.
6778
6779 Daniel (7 January 2006)
6780 - Michael Jahn fixed so that the second CONNECT when doing FTP over a HTTP
6781   proxy actually used a new connection and not sent the second request on the
6782   first socket!
6783
6784 Daniel (6 January 2006)
6785 - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
6786   is present instead of trying to mimic that script in curl's buildconf
6787   script.
6788
6789 Daniel (3 January 2006)
6790 - Andres Garcia made the TFTP test server build with mingw.
6791 Daniel (16 December 2005)
6792 - Jean Jacques Drouin pointed out that you could only have a user name or
6793   password of 127 bytes or less embedded in a URL, where actually the code
6794   uses a 255 byte buffer for it! Modified now to use the full buffer size.
6795
6796 Daniel (12 December 2005)
6797 - Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
6798
6799 Version 7.15.1 (7 December 2005)
6800
6801 Daniel (6 December 2005)
6802 - Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
6803   Stefan Esser.
6804
6805   VULNERABILITY
6806
6807   libcurl's URL parser function can overflow a malloced buffer in two ways, if
6808   given a too long URL.
6809
6810   These overflows happen if you
6811
6812   1 - pass in a URL with no protocol (like "http://") prefix, using no slash
6813       and the string is 256 bytes or longer. This leads to a single zero byte
6814       overflow of the malloced buffer.
6815
6816   2 - pass in a URL with only a question mark as separator (no slash) between
6817       the host and the query part of the URL. This leads to a single zero byte
6818       overflow of the malloced buffer.
6819
6820   Both overflows can be made with the same input string, leading to two single
6821   zero byte overwrites.
6822
6823   The affected flaw cannot be triggered by a redirect, but the long URL must
6824   be passed in "directly" to libcurl. It makes this a "local" problem. Of
6825   course, lots of programs may still pass in user-provided URLs to libcurl
6826   without doing much syntax checking of their own, allowing a user to exploit
6827   this vulnerability.
6828
6829   There is no known exploit at the time of this writing.
6830
6831
6832 Daniel (2 December 2005)
6833 - Jamie Newton pointed out that libcurl's file:// code would close() a zero
6834   file descriptor if given a non-existing file.
6835
6836 Daniel (24 November 2005)
6837 - Doug Kaufman provided a set of patches to make curl build fine on DJGPP
6838   again using configure.
6839
6840 - Yang Tse provided a whole series of patches to clear up compiler warnings on
6841   MSVC 6.
6842
6843 Daniel (17 November 2005)
6844 - I extended a patch from David Shaw to make libcurl _always_ provide an error
6845   string in the given error buffer to address the flaw mention on 21 sep 2005.
6846
6847 Daniel (16 November 2005)
6848 - Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
6849   installed on 'make install' time.
6850
6851 Daniel (14 November 2005)
6852 - Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
6853   properly for a case, and so we did. We raised it even for non-SSPI builds
6854   but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
6855
6856 - Jan Kunder's debian bug report
6857   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
6858   error message for when you try to upload a file and the requested directory
6859   doesn't exist on the target server.
6860
6861 - Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
6862   lib/memdebug.h that showed up in his msvc builds.
6863
6864 Daniel (13 November 2005)
6865 - Debian bug report 338681 by Jan Kunder: make curl better detect and report
6866   bad limit-rate units:
6867   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
6868   error if a bad unit is used.
6869
6870 - Thanks to this nice summary of poll() implementations:
6871   http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
6872   Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
6873   connectin closure so we check for that case (too) and re-enable poll for
6874   cygwin builds.
6875
6876 Daniel (12 November 2005)
6877 - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
6878   right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
6879   poll() and use select() on cygwin too (we already do the same choice on Mac
6880   OS X)
6881
6882 - Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
6883   client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
6884
6885 Daniel (10 November 2005)
6886 - David Lang fixed IPv6 support for TFTP!
6887
6888 - Introducing range stepping to the curl globbing support. Now you can specify
6889   step counter by adding :[num] within the brackets when specifying a range:
6890
6891    [1-100:10]
6892    [a-z:2]
6893
6894   If no step counter is set, it defaults to 1 as before:
6895
6896    [1-100]
6897    [d-h]
6898
6899 Daniel (8 November 2005)
6900 - Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
6901   we really have no use for reverse lookups of the address.
6902
6903   I truly hope these are the last reverse lookups we had lingering in the
6904   code!
6905
6906 - Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
6907   version of libcurl with different Windows versions. Current version of
6908   libcurl imports SSPI functions from secur32.dll. However, under Windows NT
6909   4.0 these functions are located in security.dll, under Windows 9x - in
6910   secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
6911   just forwards calls to secur32.dll).
6912
6913   Dmitry's patch loads proper library dynamically depending on Windows
6914   version. Function InitSecurityInterface() is used to obtain pointers to all
6915   of SSPI function in one structure.
6916
6917 Daniel (31 October 2005)
6918 - Vilmos Nebehaj improved libcurl's LDAP abilities:
6919
6920   The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
6921   attributes in LDAP objects. So, I made a quick patch to address these
6922   problems.
6923
6924   The solution is simple: if we connect to an LDAP server, first try LDAPv3
6925   (which is the preferred protocol as of now) and then fall back to LDAPv2.
6926   In case of binary attributes, we first convert them to base64, just like the
6927   openldap client does. It uses ldap_get_values_len() instead of
6928   ldap_get_values() to be able to retrieve binary attributes correctly. I
6929   defined the necessary LDAP macros in lib/ldap.c to be able to compile
6930   libcurl without the presence of libldap
6931
6932 Daniel (27 October 2005)
6933 - Nis Jorgensen filed bug report #1338648
6934   (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
6935   feature request, but anyway. It pointed out that --max-redirs did not allow
6936   it to be set to 0, which then would return an error code on the first
6937   Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
6938   set to 0, or -1 for infinity. Added test case 274 to verify.
6939
6940 - tommink[at]post.pl reported in bug report #1337723
6941   (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
6942   binary data from stdin on Windows if the data contained control-Z (hex 1a)
6943   since that is treated as end-of-file when read in text mode. Gisle Vanem
6944   pointed out the fix, and I made both -T and --data-binary take advantage of
6945   it.
6946
6947 - Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
6948   in the man page, curl would send an invalid HTTP Range: header. The correct
6949   way would be to use "-r [number]-" or even "-r -[number]". Starting now,
6950   curl will warn if this is discovered, and automatically append a dash to the
6951   range before passing it to libcurl.
6952
6953 Daniel (25 October 2005)
6954 - Amol Pattekar reported a bug with great detail and a fine example in bug
6955   #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
6956   interface and connecting to a host with multiple IP addresses, and one of
6957   the addresses fails to connect (the server must exist and respond, just not
6958   accept connections) libcurl leaks a socket descriptor. Thanks to the fine
6959   report, I could find and fix this.
6960
6961 Daniel (22 October 2005)
6962 - Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
6963   #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
6964   stream from a server and the server requests a "rehandshake", the current
6965   code simply returns this as an error. I have no good way to test this, but
6966   I've added a crude attempt of dealing with this situation slightly better -
6967   it makes a blocking handshake if this happens. Done like this because fixing
6968   this the "proper" way (that would handshake asynchronously) will require
6969   quite some work and I really need a good way to test this to do such a
6970   change.
6971
6972 Daniel (21 October 2005)
6973 - "Ofer" reported a problem when libcurl re-used a connection and failed to do
6974   it, it could then accidentally actually crash. Presumably, this concerns FTP
6975   connections.  http://curl.haxx.se/bug/view.cgi?id=1330310
6976
6977 - Temprimus improved the MSVC makefile so that the static debug SSL libs are
6978   linked to the executable and not to the libcurld.lib
6979   http://curl.haxx.se/bug/view.cgi?id=1326676
6980
6981 - Bradford Bruce made the windows resolver code properly return
6982   CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
6983   errors (as documented).
6984
6985 Daniel (20 October 2005)
6986 - Dave Dribin made libcurl understand and handle cases when the server
6987   (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
6988   never happen in a sane world, libcurl previously got into an infinite loop
6989   when this occurred. Dave added test 273 to verify this.
6990
6991 - Temprimus improved the MSVC makefile: "makes a build option available so if
6992   you set rtlibcfg=static for the make, then it would build with /MT. The
6993   default behaviour is /MD (the original)."
6994   http://curl.haxx.se/bug/view.cgi?id=1326665
6995
6996 Daniel (14 October 2005)
6997 - Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
6998   reported, the define is used by the configure script and is assumed to use
6999   the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
7000   release version.
7001
7002 Version 7.15.0 (13 October 2005)
7003
7004 Daniel (12 October 2005)
7005 - Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
7006   code that would overflow a buffer if given a too long user name or domain
7007   name. This would happen if you enable NTLM authentication and either
7008
7009   A - pass in a user name and domain name to libcurl that together are longer
7010       than 192 bytes
7011
7012   B - allow (lib)curl to follow HTTP "redirects" (Location: and the
7013       appropriate HTTP 30x response code) and the new URL contains a URL with
7014       a user name and domain name that together are longer than 192 bytes
7015
7016   See http://curl.haxx.se/docs/security.html for further details and updates
7017
7018 Daniel (5 October 2005)
7019 - Darryl House reported a problem with using -z to download files from FTP.
7020   It turned out that if the given time stamp was exact the same as the remote
7021   time stamp, the file would still wrongly be downloaded. Added test case 272
7022   to verify.
7023
7024 Daniel (4 October 2005)
7025 - Domenico Andreoli fixed a man page malformat and removed odd (0xa0) bytes
7026   from the configure script.
7027
7028 - Michael Wallner reported that the date parser had wrong offset stored for
7029   the MEST and CEST time zones.
7030
7031 Daniel (27 September 2005)
7032 - David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
7033   that identified a silly problem with Content-Range: headers with the 'bytes'
7034   keyword written in a different case than all lowercase! It would cause a
7035   segfault!
7036
7037 - TJ Saunders of the proftpd project identified and pointed out problems with
7038   the modified FTPS negotiation change of August 19 2005. Thus, we revert the
7039   change back to pre-7.14.1 status.
7040
7041 Daniel (21 September 2005)
7042 - Fixed "cut off" sentence in the libcurl-tutorial man page:
7043   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
7044
7045 - Clarified in the curl_easy_setopt man page what the default
7046   CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
7047   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
7048
7049 - Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
7050   sometimes doesn't fill in the buffer even though it is supposed to:
7051   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
7052
7053 - When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
7054   error string set.
7055
7056 Daniel (19 September 2005)
7057 - Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
7058
7059 Daniel (15 September 2005)
7060 - Added a TFTP server to the test suite and made the test suite capable of
7061   using it.
7062
7063 Daniel (7 September 2005)
7064 - Ben Madsen's detailed reports that funnily enough only occurred with certain
7065   glibc versions turned out to be curl using an already closed file handle
7066   during certain conditions (like when saving FTP server "headers").
7067
7068 - Scott Davis helped me track down a problem in the test HTTP server that made
7069   test case 56 wrongly fail at times. It turned out it was due to the server
7070   finding the end of a chunked-encoded POST too early.
7071
7072 Daniel (6 September 2005)
7073 - Now curl warns if an unknown variable is used in the -w/--writeout argument.
7074
7075 Daniel (4 September 2005)
7076 - I applied Nicolas François' man page patch he posted to the Debian bug
7077   tracker. It corrected two lines that started with apostrophes, which isn't
7078   legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
7079
7080 - Added --ftp-skip-pasv-ip to the command line tool, that sets the new
7081   CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
7082   connection's IP address when setting up the data connection instead of
7083   extractting the IP address from the PASV response. It has turned out this
7084   feature is frequently needed by people to circumvent silly servers and silly
7085   firewalls, especially when FTPS is used and the PASV command-response is
7086   sent encrtyped.
7087
7088   Sponsored by CU*Answers
7089
7090 Daniel (1 September 2005)
7091 - John Kelly added TFTP support to libcurl. A bunch of new error codes was
7092   added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
7093   list of protocols whereever those are mentioned.
7094
7095 Version 7.14.1 (1 September 2005)
7096
7097 Daniel (29 August 2005)
7098 - Kevin Lussier pointed out a problem with curllib.dsp and how to fix it.
7099
7100 - Igor Polyakov fixed a rather nasty problem with the threaded name resolver
7101   for Windows, that could lead to an Access Violation when the multi interface
7102   was used due to an issue with how the resolver thread was and was not
7103   terminated.
7104
7105 - Simon Josefsson brought a patch that allows curl to get built to use GNU GSS
7106   instead of MIT/Heimdal for GSS capabilities.
7107
7108 Daniel (24 August 2005)
7109 - Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
7110   from the command line tool with --ignore-content-length. This will make it
7111   easier to download files from Apache 1.x (and similar) servers that are
7112   still having problems serving files larger than 2 or 4 GB. When this option
7113   is enabled, curl will simply have to wait for the server to close the
7114   connection to signal end of transfer. I wrote test case 269 that runs a
7115   simple test to verify that this works.
7116
7117 - (Trying hard to exclude emotions now.) valgrind version 3 suddenly renamed
7118   the --logfile command line option to --log-file, and thus the test script
7119   valgrind autodetection now has yet another version check to do and then it
7120   alters the valgrind command line accordingly.
7121
7122 - Fixed CA cert verification using GnuTLS with the default bundle, which
7123   previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
7124   Ralph Mitchell reported.
7125
7126 Daniel (19 August 2005)
7127 - Norbert Novotny had problems with FTPS and he helped me work out a patch
7128   that made curl run fine in his end. The key was to make sure we do the
7129   SSL/TLS negotiation immediately after the TCP connect is done and not after
7130   a few other commands have been sent like we did previously. I don't consider
7131   this change necessary to obey the standards, I think this server is pickier
7132   than what the specs allow it to be, but I can't see how this modified
7133   libcurl code can add any problems to those who are interpreting the
7134   standards more liberally.
7135
7136 Daniel (17 August 2005)
7137 - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
7138   CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
7139   write the result to a given cookie jar and then never actually call
7140   curl_easy_perform() - the given file(s) to read was never read but the
7141   output file was written and thus it caused a "funny" result.
7142
7143 - While doing some tests for the bug above, I noticed that Firefox generates
7144   large numbers (for the expire time) in the cookies.txt file and libcurl
7145   didn't treat them properly. Now it does.
7146
7147 Daniel (15 August 2005)
7148 - Added more verbose "warning" messages to the curl client for cases where it
7149   fails to open/read files etc to help users diagnose why it doesn't do what
7150   you'd expect it to. Converted lots of old messages to use the new generic
7151   function I wrote for this purpose.
7152
7153 Daniel (13 August 2005)
7154 - James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
7155   site responds with bad HTTP response that doesn't contain any header at all,
7156   only a response body, and the write callback returns 0 to abort the
7157   transfer, it didn't have any real effect but the write callback would be
7158   called once more anyway.
7159
7160 Daniel (12 August 2005)
7161 - Based on Richard Clayton's reports, I found out that using curl -d @filename
7162   when 'filename' was not possible to access made curl use a GET request
7163   instead.
7164
7165 - The time condition illegal syntax warning is now inhibited if -s is used.
7166
7167 Daniel (10 August 2005)
7168 - Mario Schroeder found out that one of the debug callbacks calls that regards
7169   SSL data with the CURLINFO_TEXT type claimed that the data was one byte
7170   larger than it actually is, thus falsely telling the application that the
7171   terminating zero was part of the data.
7172
7173 Daniel (9 August 2005)
7174 - Christopher R. Palmer fixed the offsets used for date parsings when the time
7175   zone name of a daylight savings time was used. For example, PDT vs PDS. This
7176   flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
7177   Fortunately, no web server or cookie string etc should be using such time
7178   zone names thus limiting the effect of this bug.
7179
7180 Daniel (8 August 2005)
7181 - Jon Grubbs filed bug report #1249962
7182   (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
7183   with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
7184   switches to pure HTTP internally when an HTTP proxy is used, even for FTP
7185   URLs. The problem would also occur with other multi-pass auth methods.
7186
7187 Daniel (7 August 2005)
7188 - When curl is built with GnuTLS, curl-config didn't include "SSL" when
7189   --features was used.
7190
7191 Daniel (28 July 2005)
7192 - If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
7193   set to 1, CURLOPT_NOBODY will now automatically be set to 0.
7194
7195 Daniel (27 July 2005)
7196 - Dan Fandrich changes over the last week: fixed numerous minor configure
7197   option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
7198   and --without-krb4. Spellfixed several error messages.
7199
7200 - Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
7201   simple interface to extracting and setting cookies in libcurl's internal
7202   "cookie jar". See the new cookie_interface.c example code.
7203
7204 Daniel (13 July 2005)
7205 - Diego Casorran provided patches to make curl build fine on Amiga again.
7206
7207 Daniel (12 July 2005)
7208 - Adrian Schuur added trailer support in the chunked encoding stream. The
7209   trailer is then sent to the normal header callback/stream. I wrote up test
7210   case 266 to verify the basic functionality. Do note that test case 34
7211   contains a flawed chunked encoding stream that still works the same.
7212
7213 Daniel (5 July 2005)
7214 - Gisle Vanem came up with a nice little work-around for bug #1230118
7215   (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
7216   libc time functions may return data one hour off if TZ is not set and
7217   automatic DST adjustment is enabled. This made curl_getdate() return wrong
7218   value, and it also concerned internal cookie expirations etc.
7219
7220 Daniel (4 July 2005)
7221 - Andrew Bushnell provided enough info for me to tell that we badly needed to
7222   fix the CONNECT authentication code with multi-pass auth methods (such as
7223   NTLM) as it didn't previously properly ignore response-bodies - in fact it
7224   stopped reading after all response headers had been received. This could
7225   lead to libcurl sending the next request and reading the body from the first
7226   request as response to the second request. (I also renamed the function,
7227   which wasn't strictly necessary but...)
7228
7229   The best fix would to once and for all make the CONNECT code use the
7230   ordinary request sending/receiving code, treating it as any ordinary request
7231   instead of the special-purpose function we have now. It should make it
7232   better for multi-interface too. And possibly lead to less code...
7233
7234   Added test case 265 for this. It doesn't work as a _really_ good test case
7235   since the test proxy is too stupid, but the test case helps when running the
7236   debugger to verify.
7237
7238 Daniel (30 June 2005)
7239 - Dan Fandrich improved the configure script's ability to figure out what kind
7240   of strerror_r() API that is used when cross-compiling. If __GLIB__ is
7241   defined, it assumes the glibc API. If not, it issues a notice as before that
7242   the user needs to manually edit lib/config.h for this.
7243
7244 Daniel (23 June 2005)
7245 - David Shaw's fix that unifies proxy string treatment so that a proxy given
7246   with CURLOPT_PROXY can use a http:// prefix and user + password. The user
7247   and password fields are now also URL decoded properly. Test case 264 added
7248   to verify.
7249
7250 Daniel (22 June 2005)
7251 - David Shaw updated libcurl.m4
7252
7253 Daniel (14 June 2005)
7254 - Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
7255   (http://curl.haxx.se/bug/view.cgi?id=1216500).  Comment in
7256   http://curl.haxx.se/mail/lib-2005-06/0059.html
7257
7258 Daniel (13 June 2005)
7259 - Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
7260   reverted patch).
7261
7262 Daniel (9 June 2005)
7263 - Incorporated Tupone's findtool fix in buildconf (slightly edited)
7264
7265 - Incorporated Tupone's head -n fix in buildconf.
7266
7267 Daniel (8 June 2005)
7268 - Reverted Tupone's patch again, it broke numerous autobuilds. Let's apply it
7269   in pieces, one by one and see what we need to adjust to work all over.
7270
7271 Daniel (6 June 2005)
7272 - Tupone Alfredo fixed three problems in buildconf:
7273
7274   1) findtool does look per tool in PATH and think ./perl is the perl
7275   executable, while is just a local directory (I have . in the PATH)
7276
7277   2) I got several warning for head -1 deprecated in favour of head -n 1
7278
7279   3) ares directory is missing some file (missing is missing :-) ) because
7280   automake and friends is not run.
7281
7282 Daniel (3 June 2005)
7283 - Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
7284   http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
7285
7286 - Andres Garcia provided yet another text mode patch for several test cases so
7287   that they do text comparisions better on Windows (newline-wise).
7288
7289 Daniel (1 June 2005)
7290 - The configure check for c-ares now adds the cares lib before the other libs,
7291   to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
7292   and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
7293
7294 Daniel (31 May 2005)
7295 - Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
7296   address was not possible to use. It is now, but requires it written
7297   RFC2732-style, within brackets - which incidently is how you enter numerical
7298   IPv6 addresses in URLs. Test case 263 added to verify.
7299
7300 Daniel (30 May 2005)
7301 - Eric Cooper reported about a problem with HTTP servers that responds with
7302   binary zeroes within the headers. They confused libcurl to do wrong so the
7303   downloaded headers become incomplete. The fix is now verified with test case
7304   262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
7305
7306 Daniel (25 May 2005)
7307 - Fixed problems with the test suite, and in particular the FTP test cases
7308   since it previously was failing every now and then in a nonsense manner.
7309
7310 - --trace-time now outputs the full microsecond, all 6 digits.
7311
7312 Daniel (24 May 2005)
7313 - Andres Garcia provided a text mode patch for several test cases so that they
7314   do text comparisions better on Windows (newline-wise).
7315
7316 - Any 2xx response (and not just 200) is now considered a fine response to
7317   TYPE, as some servers obviously sends a 226 there. Added test case 261 to
7318   verify. Based on a question/report by Georg Wicherski.
7319
7320 Daniel (20 May 2005)
7321 - Improved runtests.pl to allow stdout tests to be mode=text as well, just
7322   as file comparisons already supports. Added this info to the FILEFORMAT
7323   docs.
7324
7325 Daniel (18 May 2005)
7326 - John McGowan identified a problem in bug report #1204435
7327   (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
7328   "http://somehost?data" as it added a slash too much in the request ("GET
7329   /?data/"...). Added test case 260 to verify.
7330
7331 - The configure check for strerror_r() failed to detect the proper API at
7332   times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
7333   version if the posix define wasn't set (since it _had_ found a strerror_r).
7334
7335 Daniel (16 May 2005)
7336 - The gmtime_r() function in HP-UX 10.20 is broken. About 13 test cases fail
7337   due to this. There's now a configure check that attempts to detect the bad
7338   function and not use it on such systems.
7339
7340 Version 7.14.0 (16 May 2005)
7341
7342 Daniel (13 May 2005)
7343 - Grigory Entin reported that curl's configure detects a fine poll() for Mac
7344   OS X 10.4 (while 10.3 or later detected a "bad" one), but the executable
7345   doesn't work as good as if built without poll(). I've adjusted the configure
7346   to always skip the fine-poll() test on Mac OS X (darwin).
7347
7348 Daniel (12 May 2005)
7349 - When doing a second request (after a disconnect) using the same easy handle,
7350   over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
7351   properly (the auth method was accidentally reset to the same as had been set
7352   for host auth, which defaults to Basic). Bug report #1200661
7353   (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
7354   the fix.
7355
7356 - If -z/--time-cond is used with an invalid date syntax, this is no longer
7357   silently discarded. Instead a proper warning message is diplayed that
7358   informs about it. But it still continues without the condition.
7359
7360 Version 7.14.0-pre2 (11 May 2005)
7361
7362 Daniel (11 May 2005)
7363 - Starting now, libcurl sends a little different set of headers in its default
7364   HTTP requests:
7365
7366   A) Normal non-proxy HTTP:
7367     - no more "Pragma: no-cache" (this only makes sense to proxies)
7368
7369   B) Non-CONNECT HTTP request over proxy:
7370     - "Pragma: no-cache" is used (like before)
7371     - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)
7372
7373   C) CONNECT HTTP request over proxy:
7374     - "Host: [name]:[port]"
7375     - "Proxy-Connection: Keep-alive"
7376
7377   The A) case is mostly to reduce the default header size and remove a
7378   pointless header.
7379
7380   The B) is to address (rare) problems with HTTP 1.0 proxies
7381
7382   The C) headers are both to address (rare) problems with some proxies. The
7383   code in libcurl that deals with CONNECT requests need a rewrite, but it
7384   feels like a too big a job for me to do now. Details are added in the code
7385   comments for now.
7386
7387   Updated a large amount of test cases to reflect the news.
7388
7389 Daniel (10 May 2005)
7390 - Half-baked attempt to bail out if select() returns _only_ errorfds when the
7391   transfer is in progress. An attempt to fix Allan's problem. See
7392   http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
7393   for details.
7394
7395   I'm still not sure this is the right fix, but...
7396
7397 Version 7.14.0-pre1 (9 May 2005)
7398
7399 Daniel (2 May 2005)
7400 - Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
7401   least it should no longer cause a compiler error. However, it does not have
7402   AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it
7403   (we use that for FTP PORT/EPRT)! So, I modified the configure check that
7404   checks if the getaddrinfo() is working, to use AI_NUMERICHOST since then
7405   it'll fail on AIX 4.3 and it will automatically build with IPv6 support
7406   disabled.
7407
7408 - Added --trace-time that when used adds a time stamp to each trace line that
7409   --trace, --trace-ascii and --verbose output. I also made the '>' display
7410   separate each line on the linefeed so that HTTP requests etc look nicer in
7411   the -v output.
7412
7413 - Made curl recognize the environment variables Lynx (and others?) support for
7414   pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
7415   CURL_CA_BUNDLE is not set, they are checked afterwards.
7416
7417   Like before: on windows if none of these are set, it checks for the ca cert
7418   file like this:
7419
7420   1. application's directory
7421   2. current working directory
7422   3. Windows System directory (e.g. C:\windows\system32)
7423   4. Windows Directory (e.g. C:\windows)
7424   5. all directories along %PATH%
7425
7426 Daniel (1 May 2005)
7427 - The runtests.pl script now starts test servers by doing fork() and exec()
7428   instead of the previous approach. This is less complicated and should
7429   hopefully lead to less "leaked" servers (servers that aren't stopped
7430   properly when the tests are stopped).
7431
7432 - Alexander Zhuravlev found a case when you did "curl -I [URL]" and it
7433   complained on the chunked encoding, even though a HEAD should never return a
7434   body and thus it cannot be a chunked-encoding problem!
7435
7436 Daniel (30 April 2005)
7437 - Alexander Zhuravlev found out that (lib)curl SIGSEGVed when using
7438   --interface on an address that can't be bound.
7439
7440 Daniel (28 April 2005)
7441 - Working on fixing up test cases to mark sections as 'mode=text' for things
7442   that curl writes as text files, since then they can get different line
7443   endings depending on OS. Andrés García helps me work this out.
7444
7445   Did lots of other minor tweaks on the test scripts to work better and more
7446   reliably find test servers and also kill test servers.
7447
7448 - Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
7449   instead of the HTTPS server when closing it down.
7450
7451 Daniel (27 April 2005)
7452 - Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
7453   more places. First, CURL_HOME is a new environment variable that is used
7454   instead of HOME if it is set, to point out where the default config file
7455   lives. If there's no config file in the dir pointed out by one of the
7456   environment variables, the Windows version will instead check the same
7457   directory the executable curl is located in.
7458
7459 Daniel (26 April 2005)
7460 - Cory Nelson's work on nuking compiler warnings when building on x64 with
7461   VS2005.
7462
7463 Daniel (25 April 2005)
7464 - Fred New reported a bug where we used Basic auth and user name and password
7465   in .netrc, and when following a Location: the subsequent requests didn't
7466   properly use the auth as found in the netrc file. Added test case 257 to
7467   verify my fix.
7468
7469 - Based on feedback from Cory Nelson, I added some preprocessor magic in
7470   */setup.h and */config-win32.h to build fine with VS2005 on x64.
7471
7472 Daniel (23 April 2005)
7473 - Alex Suykov made the curl tool now assume that uploads using HTTP:// or
7474   HTTPS:// are the only ones that show output and thus motivates a switched
7475   off progress meter if the output is sent to the terminal. This makes FTP
7476   uploads without '>', -o or -O show the progress meter.
7477
7478 Daniel (22 April 2005)
7479 - Dave Dribin's MSVC makefile fix: set CURL_STATICLIB when it builds static
7480   library variants.
7481
7482 - Andres Garcia fixed configure to set the proper define when building static
7483   libcurl on windows.
7484
7485 - --retry-delay didn't work.
7486
7487 Daniel (18 April 2005)
7488 - Olivier reported that even though he used CURLOPT_PORT, libcurl clearly
7489   still used the default port. He was right. I fixed the problem and added the
7490   test cases 521, 522 and 523 to verify the fix.
7491
7492 - Toshiyuki Maezawa reported that when doing a POST with a read callback,
7493   libcurl didn't properly send an Expect: 100-continue header. It does now.
7494
7495 - I committed by mig change in the test suite's FTP server that moves out all
7496   socket/TCP code to a separate C program named sockfilt. And added 4 new
7497   test cases for FTP over IPv6.
7498
7499 Daniel (8 April 2005)
7500 - Cory Nelson reported a problem with a HTTP server that responded with a 304
7501   response containing an "illegal" Content-Length: header, which was not
7502   properly ignored by libcurl. Now it is. Test case 249 verifies.
7503
7504 Daniel (7 April 2005)
7505 - Added ability to build and run with GnuTLS as an alternative to OpenSSL for
7506   the secure layer. configure --with-gnutls enables with. Note that the
7507   previous OpenSSL check still has preference and if it first detects OpenSSL,
7508   it will not check for GnuTLS. You may need to explictly diable OpenSSL with
7509   --without-ssl.
7510
7511   This work has been sponsored by The Written Word.
7512
7513 Daniel (5 April 2005)
7514 - Christophe Legry fixed the post-upload check for FTP to not complain if the
7515   upload was skipped due to a time-condition as set with
7516   CURLOPT_TIMECONDITION. I added test case 247 and 248 to verify.
7517
7518 Version 7.13.2 (5 April 2005)
7519
7520 Daniel (4 April 2005)
7521 - Marcelo Juchem fixed the MSVC makefile for libcurl
7522
7523 - Gisle Vanem fixed a crash in libcurl, that could happen if the easy handle
7524   was killed before the threading resolver (windows only) still hadn't
7525   completed.
7526
7527 - Hardeep Singh reported a problem doing HTTP POST with Digest. (It was
7528   actually also affecting NTLM and Negotiate.) It turned out that if the
7529   server responded with 100 Continue before the initial 401 response, libcurl
7530   didn't take care of the response properly. Test case 245 and 246 added to
7531   verify this.
7532
7533 Daniel (30 March 2005)
7534 - Andres Garcia modified the configure script to check for libgdi32 before
7535   libcrypto, to make the SSL check work fine on msys/mingw.
7536
7537 Daniel (29 March 2005)
7538 - Tom Moers identified a flaw when you sent a POST with Digest authentication,
7539   as in the first request when curl sends a POST with Content-Length: 0, it
7540   still forcibly closed the connection before doing the next step in the auth
7541   negotiation.
7542
7543 - Jesper Jensen found out that FTP-SSL didn't work since my FTP
7544   rewrite. Fixing that was easy, but it also revealed a much worse problem:
7545   the FTP server response reader function didn't properly deal with reading
7546   responses in multiple tiny chunks properly! I modified the FTP server to
7547   allow it to produce such split-up responses to make sure curl deals with
7548   them as it should.
7549
7550 - Based on Augustus Saunders' comments and findings, the HTTP output auth
7551   function was fixed to use the proper proxy authentication when multiple ones
7552   are accepted. test 239 and test 243 were added to repeat the problems and
7553   verify the fixes.
7554
7555   --proxy-anyauth was added to the curl tool
7556
7557 Daniel (16 March 2005)
7558 - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
7559   inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
7560   address which makes a different failure... Now I've modified the IPv4
7561   resolve code to use inet_pton() instead in an attempt to make these systems
7562   better detect this as a bad IP address rather than creating a toally bogus
7563   address that is then passed on and used.
7564
7565 Daniel (15 March 2005)
7566 - Dan Fandrich made the code properly use the uClibc's version of
7567   inet_ntoa_r() when built with it.
7568
7569 - Added test 237 and 238: test EPSV and PASV response handling when they get
7570   well- formated data back but using illegal values. In 237 PASV gets an IP
7571   address that is way bad. In 238 EPSV gets a port that is way out of range.
7572
7573 Daniel (14 March 2005)
7574 - Added a few missing features to the curl-config --features list
7575
7576 - Modified testcurl.pl to now offer
7577   1 - command line options for all info it previously only read from
7578       file: --name, --email, --desc and --configure
7579   2 - --nocvsup makes it not attempt to do cvs update
7580   3 - --crosscompile informs it and makes it not attempt things it can't do
7581
7582 - Fixed numerous win32 compiler warnings.
7583
7584 - Removed the lib/security.h file since it shadowed the mingw/win32 header
7585   with the same name which is needed for SSPI builds. The contents of the
7586   former security.h is now i krb4.h
7587
7588 - configure --enable-sspi now enables SSPI in the build. It only works for
7589   windows builds (including cross-compiles for windows).
7590
7591 Daniel (12 March 2005)
7592 - David Houlder added --form-string that adds that string to a multipart
7593   formpost part, without special characters having special meanings etc like
7594   --form features.
7595
7596 Daniel (11 March 2005)
7597 - curl_version_info() returns the feature bit CURL_VERSION_SSPI if it was
7598   built with SSPI support.
7599
7600 - Christopher R. Palmer made it possible to build libcurl with the
7601   USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the
7602   native way to do NTLM. SSPI also allows libcurl to pass on the current user
7603   and its password in the request.
7604
7605 Daniel (9 March 2005)
7606 - Dan F improved the SSL lib setup in configure.
7607
7608 - Nodak Sodak reported a crash when using a SOCKS4 proxy.
7609
7610 - Jean-Marc Ranger pointed out an embarassing debug printf() leftover in the
7611   multi interface code.
7612
7613 - Adjusted the man page for the curl_getdate() return value for dates after
7614   year 2038. For 32 bit time_t it returns 0x7fffffff but for 64bit time_t it
7615   returns either the correct value or even -1 on some systems that still seem
7616   to not deal with this properly. Tor Arntsen found a 64bit AIX system for us
7617   that did the latter. Gwenole Beauchesne's Mandrake patch put the lights on
7618   this problem in the first place.
7619
7620 Daniel (8 March 2005)
7621 - Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
7622   file got a Last-Modified: header written to the data stream, corrupting the
7623   actual data. This was because some conditions from the previous FTP code was
7624   not properly brought into the new FTP code. I fixed and I added test case
7625   520 to verify. (This bug was introduced in 7.13.1)
7626
7627 - Dan Fandrich fixed the configure --with-zlib option to always consider the
7628   given path before any standard paths.
7629
7630 Daniel (6 March 2005)
7631 - Randy McMurchy was the first to report that valgrind.pm was missing from the
7632   release archive and thus 'make test' fails.
7633
7634 Daniel (5 March 2005)
7635 - Dan Fandrich added HAVE_FTRUNCATE to several config-*.h files.
7636
7637 - Added test case 235 that makes a resumed upload of a file that isn't present
7638   on the remote side. This then converts the operation to an ordinary STOR
7639   upload. This was requested/pointed out by Ignacio Vazquez-Abrams.
7640
7641   It also proved (and I fixed) a bug in the newly rewritten ftp code (and
7642   present in the 7.13.1 release) when trying to resume an upload and the
7643   servers returns an error to the SIZE command. libcurl then loops and sends
7644   SIZE commands infinitely.
7645
7646 - Dan Fandrich fixed a SSL problem introduced on February 9th that made
7647   libcurl attempt to load the whole random file to seed the PRNG. This is
7648   really bad since this turns out to be using /dev/urandom at times...
7649
7650 Version 7.13.1 (4 March 2005)
7651
7652 Daniel (4 March 2005)
7653 - Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
7654   the cookie "engine" without having to provide an empty or non-existing file.
7655
7656 - Rene Rebe fixed a -# crash when more data than expected was retrieved.
7657
7658 Daniel (22 February 2005)
7659 - NTLM and ftp-krb4 buffer overflow fixed, as reported here:
7660   http://www.securityfocus.com/archive/1/391042 and the CAN report here:
7661   http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
7662
7663   If these security guys were serious, we'd been notified in advance and we
7664   could've saved a few of you a little surprise, but now we weren't.
7665
7666 Daniel (19 February 2005)
7667 - Ralph Mitchell reported a flaw when you used a proxy with auth, and you
7668   requested data from a host and then followed a redirect to another
7669   host. libcurl then didn't use the proxy-auth properly in the second request,
7670   due to the host-only check for original host name wrongly being extended to
7671   the proxy auth as well. Added test case 233 to verify the flaw and that the
7672   fix removed the problem.
7673
7674 Daniel (18 February 2005)
7675 - Mike Dobbs reported a mingw build failure due to the lack of
7676   BUILDING_LIBCURL being defined when libcurl is built. Now this is defined by
7677   configure when mingw is used.
7678
7679 Daniel (17 February 2005)
7680 - David in bug report #1124588 found and fixed a socket leak when libcurl
7681   didn't close the socket properly when returning error due to failing
7682   localbind
7683
7684 Daniel (16 February 2005)
7685 - Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
7686   that picks NTLM. Thanks to David Byron letting me test NTLM against his
7687   servers, I could quickly repeat and fix the problem. It turned out to be:
7688
7689   When libcurl POSTs without knowing/using an authentication and it gets back
7690   a list of types from which it picks NTLM, it needs to either continue
7691   sending its data if it keeps the connection alive, or not send the data but
7692   close the connection. Then do the first step in the NTLM auth. libcurl
7693   didn't send the data nor close the connection but simply read the
7694   response-body and then sent the first negotiation step. Which then failed
7695   miserably of course. The fixed version forces a connection if there is more
7696   than 2000 bytes left to send.
7697
7698 Daniel (14 February 2005)
7699 - The configure script didn't check for ENGINE_load_builtin_engines() so it
7700   was never used.
7701
7702 Daniel (11 February 2005)
7703 - Removed all uses of strftime() since it uses the localised version of the
7704   week day names and month names and servers don't like that.
7705
7706 Daniel (10 February 2005)
7707 - Now the test script disables valgrind-testing when the test suite runs if
7708   libcurl is built shared. Otherwise valgrind only tests the shell that runs
7709   the wrapper-script named 'curl' that is a front-end to curl in this case.
7710   This should also fix the huge amount of reports of false positives when
7711   valgrind has identified leaks in (ba)sh and not in curl and people report
7712   that as curl bugs. Bug report #1116672 is one example.
7713
7714   Also, the valgrind report parser has been adapted to check that at least one
7715   of the sources in a stack strace is one of (lib)curl's source files or
7716   otherwise it will not consider the problem to concern (lib)curl.
7717
7718 - Marty Kuhrt streamlined the VMS build.
7719
7720 Daniel (9 February 2005)
7721 - David Byron fixed his SSL problems, initially mentioned here:
7722   http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
7723   SSL_pending() as we should.
7724
7725 - Converted lots of FTP code to a statemachine, so that the multi interface
7726   doesn't block while communicating commands-responses with an FTP server.
7727
7728   I've added a comment like BLOCKING in the code on all spots I could find
7729   where we still have blocking operations. When we change curl_easy_perform()
7730   to use the multi interface, we'll also be able to simplify the code since
7731   there will only be one "internal interface".
7732
7733   While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
7734   new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
7735   like changing directory or retrieving a file, while the second means that we
7736   were denied login.
7737
7738   The CVS tag 'before_ftp_statemachine' was set just before this went in, in
7739   case of future need.
7740
7741 - Gisle made the DICT code send CRLF and not just LF as the spec says so.
7742
7743 Daniel (8 February 2005)
7744 - Gisle fixed problems when libcurl runs out of memory, and worked on making
7745   sure the proper error code is returned for those occations.
7746
7747 Daniel (7 February 2005)
7748 - Maruko pointed out a problem with inflate decompressing exactly 64K
7749   contents.
7750
7751 Daniel (5 February 2005)
7752 - Eric Vergnaud found a use of an uninitialised variable in the ftp when doing
7753   PORT on IPv6-enabled hosts.
7754
7755 - David Byron pointed out we could use BUFSIZE to read data (in
7756   lib/transfer.c) instead of using BUFSIZE -1.
7757
7758 Version 7.13.0 (1 February 2005)
7759
7760 Daniel (31 January 2005)
7761 - Added Lars Nilsson's htmltitle.cc example
7762
7763 Daniel (30 January 2005)
7764 - Fixed a memory leak when using the multi interface and the DO operation
7765   failed (as in test case 205).
7766
7767 - Fixed a valgrind warning for file:// operations.
7768
7769 - Fixed a valgrind report in the url globbing code for the curl command line
7770   tool.
7771
7772 - Bugfixed the parser that scans the valgrind report outputs (in runtests.pl).
7773   I noticed that it previously didn't detect and report the "Conditional jump
7774   or move depends on uninitialised value(s)" error. When I fixed this, I
7775   caught a few curl bugs with it. And then I had to spend time to make the
7776   test suite IGNORE these errors when OpenSSL is used since it produce massive
7777   amounts of valgrind warnings (but only of the "Conditional..." kind it
7778   seems). So, if a test that requires SSL is run, it ignores the
7779   "Conditional..." errors, and you'll get a "valgrind PARTIAL" output instead
7780   of "valgrind OK".
7781
7782 Daniel (29 January 2005)
7783 - Using the multi interface, and doing a requsted a re-used connection that
7784   gets closed just after the request has been sent failed and did not re-issue
7785   a request on a fresh reconnect like the easy interface did. Now it does!
7786
7787 - Define CURL_MULTIEASY when building libcurl (lib/easy.c to be exact), to use
7788   my new curl_easy_perform() that uses the multi interface to run the
7789   request. It is a great testbed for the multi interface and I believe we
7790   shall do it this way for real in the future when we have a successor to
7791   curl_multi_fdset(). I've used this approach to detect and fix several of the
7792   recent multi-interfaces issues.
7793
7794 - Adjusted the KNOWN_BUGS #17 fix a bit more since the FTP code also did some
7795   bad assumptions.
7796
7797 - multi interface: when a request is denied due to "Maximum redirects
7798   followed" libcurl leaked the last Location: URL.
7799
7800 - Connect failures with the multi interface was often returned as "connect()
7801   timed out" even though the reason was different.
7802
7803 Daniel (28 January 2005)
7804 - KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
7805   curl_easy_perform() invokes. It was previously unlocked at disconnect, which
7806   could mean that it remained locked between multiple transfers. The DNS cache
7807   may not live as long as the connection cache does, as they are separate.
7808
7809   To deal with the lack of DNS (host address) data availability in re-used
7810   connections, libcurl now keeps a copy of the IP adress as a string, to be
7811   able to show it even on subsequent requests on the same connection.
7812
7813   The problem could be made to appear with this stunt:
7814
7815   1. create a multi handle
7816   2. add an easy handle
7817   3. fetch a URL that is persistent (leaves the connection alive)
7818   4. remove the easy handle from the multi
7819   5. kill the multi handle
7820   6. create a multi handle
7821   7. add the same easy handle to the new multi handle
7822   8. fetch a URL from the same server as before (re-using the connection)
7823
7824 - Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
7825   when built IPv6-enabled. I've now made a fix for it. Writing test cases for
7826   custom port hosts turned too tricky so unfortunately there's none.
7827
7828 Daniel (25 January 2005)
7829 - Ian Ford asked about support for the FTP command ACCT, and I discovered it
7830   is present in RFC959... so now (lib)curl supports it as well. --ftp-account
7831   and CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an
7832   account string after PASS have been sent away. The client responds
7833   with "ACCT [account string]".) Added test case 228 and 229 to verify the
7834   functionality. Updated the test FTP server to support ACCT somewhat.
7835
7836 - David Shaw contributed a fairly complete and detailed autoconf test you can
7837   use to detect libcurl and setup variables for the protocols the installed
7838   libcurl supports: docs/libcurl/libcurl.m4
7839
7840 Daniel (21 January 2005)
7841 - Major FTP third party transfer overhaul.
7842
7843   These four options are now obsolete: CURLOPT_SOURCE_HOST,
7844   CURLOPT_SOURCE_PATH, CURLOPT_SOURCE_PORT (this option didn't work before)
7845   and CURLOPT_PASV_HOST.
7846
7847   These two options are added: CURLOPT_SOURCE_URL and CURLOPT_SOURCE_QUOTE.
7848
7849   The target-side didn't use the proper path with RETR, and thus this only
7850   worked correctly in the login path (i.e without doing any CWD). The source-
7851   side still uses a wrong path, but the fix for this will need to wait. Verify
7852   the flaw by using a source URL with included %XX-codes.
7853
7854   Made CURLOPT_FTPPORT control weather the target operation should use PORT
7855   (or not). The other side thus uses passive (PASV) mode.
7856
7857   Updated the ftp3rdparty.c example source to use the updated options.
7858
7859   Added support for a second FTP server in the test suite. Named... ftp2.
7860   Added test cases 230, 231 and 232 as a few first basic tests of very simple
7861   3rd party transfers.
7862
7863   Changed the debug output to include 'target' and 'source' when a 3rd party
7864   is being made, to make it clearer what commands/responses came on what
7865   connection.
7866
7867   Added three new command line options: --3p-url, --3p-user and --3p-quote.
7868
7869   Documented the command line options and the curl_easy_setopt options related
7870   to third party transfers.
7871
7872   (Temporarily) disabled the ability to re-use an existing connection for the
7873   source connection. This is because it needs to force a new in case the
7874   source and target is the same host, and the host name check is trickier now
7875   when the source is identified with a full URL instead of a plain host name
7876   like before.
7877
7878   TODO (short-term) for 3rd party transfers: quote support. The options are
7879   there, we need to add test cases to verify their functionality.
7880
7881   TODO (long-term) for 3rd party transfers: IPv6 support (EPRT and EPSV etc)
7882   and SSL/TSL support.
7883
7884 Daniel (20 January 2005)
7885 - Philippe Hameau found out that -Q "+[command]" didn't work, although some
7886   code was written for it. I fixed and added test case 227 to verify it.
7887   The curl.1 man page didn't mention the '+' so I added it.
7888
7889 Daniel (19 January 2005)
7890 - Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
7891   contains %0a or %0d in the user, password or CWD parts. (A future fix would
7892   include doing it for %00 as well - see KNOWN_BUGS for details.) Test case
7893   225 and 226 were added to verify this
7894
7895 - Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
7896
7897   1) the proxy environment variables are still read and used to set HTTP proxy
7898
7899   2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
7900      disabled). This is important since apps may want to disable HTTP proxy
7901      without actually knowing if libcurl was built to disable HTTP or not.
7902
7903   Based on Stephan's patch, both these issues should now be fixed.
7904
7905 Daniel (18 January 2005)
7906 - Cody Jones' enhanced version of Samuel Díaz García's MSVC makefile patch was
7907   applied.
7908
7909 Daniel (16 January 2005)
7910 - Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
7911   assumed this used the DICT protocol. While guessing protocols will remain
7912   fuzzy, I've now made sure that the host names must start with "[protocol]."
7913   for them to be a valid guessable name. I also removed "https" as a prefix
7914   that indicates HTTPS, since we hardly ever see any host names using that.
7915
7916 Daniel (13 January 2005)
7917 - Inspired by Martijn Koster's patch and example source at
7918   http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
7919   select() and poll() calls properly loop if they return -1 and errno is
7920   EINTR. glibc docs for this is found here:
7921   http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
7922
7923   This last link says BSD doesn't have this "effect". Will there be a problem
7924   if we do this unconditionally?
7925
7926 Daniel (11 January 2005)
7927 - Dan Torop cleaned up a few no longer used variables from David Phillips'
7928   select() overhaul fix.
7929
7930 - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
7931   using a custom Host: header and curl fails to send a request on a re-used
7932   persistent connection and thus creates a new connection and resends it. It
7933   then sent two Host: headers. Cyrill's analysis was posted here:
7934   http://curl.haxx.se/mail/archive-2005-01/0022.html
7935
7936 - Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
7937   problem with the version byte and the check for bad versions. Bruce has lots
7938   of clues on this, and based on his suggestion I've now removed the check of
7939   that byte since it seems to be able to contain 1 or 5.
7940
7941 Daniel (10 January 2005)
7942 - Pavel Orehov reported memory problems with the multi interface in bug report
7943   #1098843. In short, a shared DNS cache was setup for a multi handle and when
7944   the shared cache was deleted before the individual easy handles, the latter
7945   cleanups caused read/writes to already freed memory.
7946
7947 - Hzhijun reported a memory leak in the SSL certificate code, that leaked the
7948   remote certificate name when it didn't match the used host name.
7949
7950 Gisle (8 January 2005)
7951 - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
7952
7953 Daniel (7 January 2005)
7954 - Improved the test script's valgrind log parser to actually work! Also added
7955   the ability to disable the log scanner for specific test cases. Test case
7956   509 results in numerous problems and leaks in OpenSSL and has to get it
7957   disabled.
7958
7959 Daniel (6 January 2005)
7960 - Fixed a single-byte read out of bounds in test case 39 in the curl tool code
7961   (i.e not in the library).
7962
7963 - Bug report #1097019 identified a problem when doing -d "data" with -G and
7964   sending it to two URLs with {}. Added test 199 to verify the fix.
7965
7966 Daniel (4 January 2005)
7967 - Marty Kuhrt adjusted a VMS build script slightly
7968
7969 - Kai Sommerfeld and Gisle Vanem fixed libcurl to build with IPv6 support on
7970   Win2000.
7971
7972 Daniel (2 January 2005)
7973 - Alex Neblett updated the MSVC makefiles slightly.
7974 Daniel (25 December 2004)
7975 - Removed src/config.h.in from CVS, it is now copied from the (generated)
7976   lib/config.h.in instead, as they can very well be the same. This removes a
7977   "manual hassle". You may want to re-run buildconf now.
7978
7979 - Werner Koch filed Debian bug report #286794, mentioning that curl contained
7980   non-free (by Debian's view) source code. This was Angus Mackay's
7981   src/getpass.c source code. I tried to contact him about it to quickly solve
7982   this issue, but his email addresses bounce and I got some time "over" and
7983   reimplemented the functionality once brought by Angus. We no longer use any
7984   of Angus' original code and the new function is much simpler (IMO). Issue
7985   solved.
7986
7987 Daniel (24 December 2004)
7988 - David Shaw added --protocols to curl-config, so that it now lists all
7989   protocols libcurl was built to support. --feature no longer lists disabled
7990   protocols.
7991
7992 Daniel (23 December 2004)
7993 - David Shaw fixed the configure --disable-[protocol] variables so that
7994   curl-config --feature now works correctly!
7995
7996 Daniel (22 December 2004)
7997 - Rune Kleveland fixed a minor memory leak for received cookies with the
7998   (rare) version attribute set.
7999
8000 - Marcin Konicki provided two configure fixes and a source fix to make curl
8001   build out-of-the-box on BeOS.
8002
8003 Daniel (21 December 2004)
8004 - Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
8005   -w option support 'http_connect' to make it easier to verify!
8006
8007 - Fixed lib/select.c include order to build fine on FreeBSD
8008
8009 - Fixed failf()'s reuse of the va_list variable that crashed on FreeBSD.
8010   Pointed out by Peter Pentchev.
8011
8012 Version 7.12.3 (20 December 2004)
8013
8014 Daniel (19 December 2004)
8015 - I investigated our PKCS12 build problem on Solaris 2.7 with OpenSSL 0.9.7e,
8016   and it turned out to be the fault of the zlib 1.1.4 headers doing a typedef
8017   named 'free_func' and the OpenSSL headers have a prototype that uses
8018   'free_func' in one of its arguments. This is why the compile errors out.
8019
8020   In other words, we need to include the openssl/pkcs12.h header before the
8021   zlib.h header and it builds fine. The configure script now checks for this
8022   file and it then gets included early in lib/urldata.h.
8023
8024 Daniel (18 December 2004)
8025 - Samuel Listopad added support for PKCS12 formatted certificates.
8026
8027 - Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well.
8028
8029 Daniel (16 December 2004)
8030 - Gisle found and fixed a problem in the directory re-use for FTP.
8031
8032   I added test case 215 and 216 to better verify the functionality.
8033
8034 - Dinar in bug report #1086121, found a file handle leak when a multipart
8035   formpost (including a file upload part) was aborted before the whole file
8036   was sent.
8037
8038 Daniel (15 December 2004)
8039 - Tom Lee found out that globbing of strings with backslashes didn't work as
8040   you'd expect. Backslashes are such a central part of windows file names that
8041   forcing backslashes to have to be escaped with backslashes is a bit too
8042   awkward to users. Starting now, you only need to escape globbing characters
8043   such as the five letters: "[]{},". Added test case 214 to verify this.
8044
8045 Daniel (14 December 2004)
8046 - Harshal Pradhan patched a HTTP persistent connection flaw: if the user name
8047   and/or password were modified between two requests on a persistent
8048   connection, the second request were still made with the first setup!
8049
8050   I added test case 519 to verify the fix.
8051
8052 Daniel (13 December 2004)
8053 - Gisle added CURLINFO_SSL_ENGINES to curl_easy_getinfo() to allow an app
8054   to list all available crypto ENGINES.
8055
8056 - Gisle fixed bug report #1083542, which pointed out a problem with resuming
8057   large file (>4GB) file:// transfers on windows.
8058
8059 Daniel (11 December 2004)
8060 - Made the test suite HTTP server (sws) capable of using IPv6, and then
8061   extended the test environment to support that and also added three test
8062   cases (240, 241, 242) that run tests using IPv6. Test 242 uses a URL that
8063   didn't work before the 10 dec fix by Kai Sommerfeld.
8064
8065 - Made a failed file:// resume output an error message
8066
8067 - Corrected the CURLE_BAD_DOWNLOAD_RESUME error message in lib/strerror.c
8068
8069 - Dan Fandrich:
8070
8071   simplified and consolidated the SSL checks in configure and the usage of the
8072   defines in lib/setup.h
8073
8074   provided a first libcurl.pc.in file for pkg-config (but the result is not
8075   installed anywhere at this point)
8076
8077   extended the cross compile section in the docs/INSTALL file
8078
8079 Daniel (10 December 2004)
8080 - When providing user name in the URL and a IPv6-style IP-address (like in
8081   "ftp://user@[::1]/tmp"), the URL parser didn't get the host extracted
8082   properly.  Reported and fixed by Kai Sommerfeld.
8083
8084 Daniel (9 December 2004)
8085 - Ton Voon provided a configure fix that should fix the notorious (mostly
8086   reported on Solaris) problem where the size_t check fails due to the SSL
8087   libs being found in a dir not searched through by the run-time linker.
8088   patch-tracker entry #1081707.
8089
8090 - Bryan Henderson pointed out in bug report #1081788 that the curl-config
8091   --vernum output wasn't zero prefixed properly (as claimed in documentation).
8092   This is fixed in maketgz now.
8093
8094 Daniel (8 December 2004)
8095 - Matt Veenstra updated the mach-O framework files for Mac OS X.
8096
8097 - Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
8098   libcurl always and unconditionally overwrote a stack-based array with 3 zero
8099   bytes. This is not an exploitable buffer overflow. No need to get alarmed.
8100
8101 Daniel (7 December 2004)
8102 - Fixed so that the final error message is sent to the verbose info "stream"
8103   even if no errorbuffer is set.
8104
8105 Daniel (6 December 2004)
8106 - Dan Fandrich added the --disable-cookies option to configure to build
8107   libcurl without cookie support. This is mainly useful if you want to build a
8108   minimalistic libcurl with no cookies support at all. Like for embedded
8109   systems or similar.
8110
8111 - Richard Atterer fixed libcurl's way of dealing with the EPSV
8112   response. Previously, libcurl would re-resolve the host name with the new
8113   port number and attempt to connect to that, while it should use the IP from
8114   the control channel. This bug made it hard to EPSV from an FTP server with
8115   multiple IP addresses!
8116
8117 Daniel (3 December 2004)
8118 - Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
8119   at a chunk boundary it was not considered an error and thus went unnoticed.
8120   Fixed by Maurice Barnum.
8121
8122   Added test case 207 to verify.
8123
8124 Daniel (2 December 2004)
8125 - Fixed the CONNECT loop to default timeout to 3600 seconds.
8126
8127   Added test case 206 that makes CONNECT with Digest.
8128
8129   Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
8130   agent field.
8131
8132 Daniel (30 November 2004)
8133 - Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
8134
8135 - Dan also helped me with input data to create three more test cases for the
8136   --compressed option.
8137
8138 Daniel (29 November 2004)
8139 - I improved the test suite to enable binary contents in the tests (by proving
8140   it base64 encoded), like for testing decompress etc. Added test 220 and 221
8141   for this purpose. Tests can now also depend on libz to run.
8142
8143 - As reported by Reinout van Schouwen in Mandrake's bug tracker bug 12285
8144   (http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
8145   IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
8146   the ability to transfer a file. Now, when connected to an FTP server with
8147   IPv6, these FTP commands can't be disabled even if asked to with the
8148   available libcurl options.
8149
8150 Daniel (26 November 2004)
8151 - As reported in Mandrake's bug tracker bug 12289
8152   (http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
8153   newline to "finish" the progress meter after each redirect and not only
8154   after a completed transfer.
8155
8156 Daniel (25 November 2004)
8157 - FTP improvements:
8158
8159   If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
8160   the same server again even if a following request is made using a persistent
8161   connection.
8162
8163   If a second request is made to a server, requesting a file from the same
8164   directory as the previous request operated on, libcurl will no longer make
8165   that long series of CWD commands just to end up on the same spot. Note that
8166   this is only for *exactly* the same dir. There is still room for improvements
8167   to optimize the CWD-sending when the dirs are only slightly different.
8168
8169   Added test 210, 211 and 212 to verify these changes. Had to improve the
8170   test script too and added a new primitive to the test file format.
8171
8172 Daniel (24 November 2004)
8173 - Andrés García fixed the configure script to detect select properly when run
8174   with Msys/Mingw on Windows.
8175
8176 Daniel (22 November 2004)
8177 - Made HTTP PUT and POST requests no longer use HEAD when doing multi-pass
8178   auth negotiation (NTLM, Digest and Negotiate), but instead use the request
8179   keyword "properly". Details in lib/README.httpauth. This also introduces
8180   CURLOPT_IOCTLFUNCTION and CURLOPT_IOCTLDATA, to be used by apps that use the
8181   "any" auth alternative as then libcurl may need to send the PUT/POST data
8182   more than once and thus may need to ask the app to "rewind" the read data
8183   stream to start.
8184
8185   See also the new example using this: docs/examples/anyauthput.c
8186
8187 - David Phillips enhanced test 518. I made it depend on a "feature" so that
8188   systems without getrlimit() won't attempt to test 518. configure now checks
8189   for getrlimit() and setrlimit() for this test case.
8190
8191 Daniel (18 November 2004)
8192 - David Phillips fixed libcurl to not crash anymore when more than FD_SETSIZE
8193   file descriptors are in use. Test case 518 added to verify.
8194
8195 Daniel (15 November 2004)
8196 - To test my fix for the CURLINFO_REDIRECT_TIME bug, I added time_redirect and
8197   num_redirects support to the -w writeout option for the command line tool.
8198
8199 - Wojciech Zwiefka found out that CURLINFO_REDIRECT_TIME didn't work as
8200   documented.
8201
8202 Daniel (12 November 2004)
8203 - Gisle Vanem modigied the MSVC and Netware makefiles to build without
8204   libcurl.def
8205
8206 - Dan Fandrich added the --disable-crypto-auth option to configure to allow
8207   libcurl to build without Digest support. (I figure it should also explicitly
8208   disable Negotiate and NTLM.)
8209
8210 -                 *** Modified Behaviour Alert ***
8211
8212   Setting CURLOPT_POSTFIELDS to NULL will no longer do a GET.
8213
8214   Setting CURLOPT_POSTFIELDS to "" will send a zero byte POST and setting
8215   CURLOPT_POSTFIELDS to NULL and CURLOPT_POSTFIELDSIZE to zero will also make
8216   a zero byte POST. Added test case 515 to verify this.
8217
8218   Setting CURLOPT_HTTPPOST to NULL makes a zero byte post. Added test case 516
8219   to verify this.
8220
8221   CURLOPT_POSTFIELDSIZE must now be set to -1 to signal "we don't know".
8222   Setting it to zero simply says this is a zero byte POST.
8223
8224   When providing POST data with a read callback, setting the size up front
8225   is now made with CURLOPT_POSTFIELDSIZE and not with CURLOPT_INFILESIZE.
8226
8227 Daniel (11 November 2004)
8228 - Dan Fandrich added --disable-verbose to the configure script to allow builds
8229   without verbose strings in the code, to save some 12KB space. Makes sense
8230   only for systems with very little memory resources.
8231
8232 - Jeff Phillips found out that a date string with a year beyond 2038 could
8233   crash the new date parser on systems with 32bit time_t. We now check for
8234   this case and deal with it.
8235
8236 Daniel (10 November 2004)
8237 - I installed Heimdal on my Debian box (using the debian package) and noticed
8238   that configure --with-gssapi failed to create a nice build. Fixed now.
8239
8240 Daniel (9 November 2004)
8241 - Gisle Vanem marked all external function calls with CURL_EXTERN so that now
8242   the Windows, Netware and other builds no longer need libcurl.def or similar
8243   files.
8244
8245 Daniel (8 November 2004)
8246 - Made the configure script check for tld.h if libidn was detected, since
8247   libidn 0.3.X didn't have such a header and we don't work with anything
8248   before libidn 0.4.1 anyway! Suse 9.1 apparently ships with a 0.3.X version
8249   of libidn which makes the curl 7.12.2 build fail. Jean-Philippe
8250   Barrette-LaPierre helped pointing this out.
8251
8252 - Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
8253   environment where stderr is closed the -v output will still be sent to file
8254   descriptor 2 which then might be the network socket handle! Now we have a
8255   weird hack instead that attempts to make sure that file descriptor 2 is
8256   opened (with a call to pipe()) before libcurl is called to do the transfer.
8257   configure now checks for pipe() and systems without pipe don't get the weird
8258   hack done.
8259
8260 Daniel (5 November 2004)
8261 - Tim Sneddon made libcurl send no more than 64K in a single first chunk when
8262   doing a huge POST on VMS, as this is a system limitation. Default on general
8263   systems is 100K.
8264
8265 Daniel (4 November 2004)
8266 - Andres Garcia made it build on mingw againa, my --retry code broke the build.
8267
8268 Daniel (2 November 2004)
8269 - Added --retry-max-time that allows a maximum time that may not have been
8270   reached for a retry to be made. If not set there is no maximum time, only
8271   the amount of retries set with --retry.
8272
8273 - Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
8274
8275 Daniel (1 November 2004)
8276 - When cross-compiling, the configure script no longer attempts to use
8277   pkg-config on the build host in order to detect OpenSSL compiler options.
8278
8279 Daniel (27 October 2004)
8280 - Dan Fandrich:
8281
8282   An improvement to the gzip handling of libcurl. There were two problems with
8283   the old version: it was possible for a malicious gzip file to cause libcurl
8284   to leak memory, as a buffer was malloced to hold the header and never freed
8285   if the header ended with no file contents.  The second problem is that the
8286   64 KiB decompression buffer was allocated on the stack, which caused
8287   unexpectedly high stack usage and overflowed the stack on some systems
8288   (someone complained about that in the mailing list about a year ago).
8289
8290   Both problems are fixed by this patch. The first one is fixed when a recent
8291   (1.2) version of zlib is used, as it takes care of gzip header parsing
8292   itself.  A check for the version number is done at run-time and libcurl uses
8293   that feature if it's present. I've created a define OLD_ZLIB_SUPPORT that
8294   can be commented out to save some code space if libcurl is guaranteed to be
8295   using a 1.2 version of zlib.
8296
8297   The second problem is solved by dynamically allocating the memory buffer
8298   instead of storing it on the stack. The allocation/free is done for every
8299   incoming packet, which is suboptimal, but should be dwarfed by the actual
8300   decompression computation.
8301
8302   I've also factored out some common code between deflate and gzip to reduce
8303   the code footprint somewhat.  I've tested the gzip code on a few test files
8304   and I tried deflate using the freshmeat.net server, and it all looks OK. I
8305   didn't try running it with valgrind, however.
8306
8307 - Added a --retry option to curl that takes a numerical option for the number
8308   of times the operation should be retried. It is retried if a transient error
8309   is detected or if a timeout occurred. By default, it will first wait one
8310   second between the retries and then double the delay time between each retry
8311   until the delay time is ten minutes which then will be the delay time
8312   between all forthcoming retries. You can set a static delay time with
8313   "--retry-delay [num]" where [num] is the number of seconds to wait between
8314   each retry.
8315
8316 Daniel (25 October 2004)
8317 - Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
8318   file that was already completely downloaded caused an error, while it
8319   doesn't if you don't use --fail! I added test case 194 to verify the fix.
8320   Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
8321   libcurl v8 due to all the kludges needed to support it.
8322
8323 - Mohun Biswas found out that formposting a zero-byte file didn't work very
8324   good. I fixed.
8325
8326 Daniel (19 October 2004)
8327 - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers
8328   with both source and destination being the same host. It can be useful if
8329   you want to move a file on a server or similar.
8330
8331 - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure
8332   out how many new connects a previous transfer required.
8333
8334   I added %{num_connects} to the curl tool and added test case 192 and 193
8335   to verify the new code.
8336
8337 Daniel (18 October 2004)
8338 - Peter Wullinger pointed out that curl should call setlocale() properly to
8339   initiate the specific language operations, to make the IDN stuff work
8340   better.
8341
8342 Version 7.12.2 (18 October 2004)
8343
8344 Daniel (16 October 2004)
8345 - Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
8346   fine even for third party transfers.
8347
8348 - runekl at opoint.com found out (and provided a fix) that libcurl leaked
8349   memory for cookies with the "max-age" field set.
8350
8351 Gisle (16 October 2004)
8352 - Issue 50 in TODO-RELEASE; Added Traian Nicolescu's patches for threaded
8353   resolver on Windows. Plugged some potential handle and memory leaks.
8354
8355 Daniel (14 October 2004)
8356 - Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user
8357   name and password fields properly in URLs, like
8358   ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
8359
8360 Daniel (11 October 2004)
8361 - libcurl now uses SO_NOSIGPIPE for systems that support it (Mac OS X 10.2 or
8362   later is one) to inhibit the SIGPIPE signal when writing to a socket while
8363   the peer dies. The same effect is provide by the MSG_NOSIGNAL parameter to
8364   send() on other systems. Alan Pinstein verified the fix.
8365
8366 Daniel (10 October 2004)
8367 - Systems with 64bit longs no longer use strtoll() or our strtoll- replacement
8368   to parse 64 bit numbers. strtol() works fine. Added a configure check to
8369   detect if [constant]LL works and if so, use that in the strtoll replacement
8370   code to work around compiler warnings reported by Andy Cedilnik.
8371
8372 Gisle (6 October 2004)
8373 - For USE_LIBIDN builds: Added Top-Level-Domain (TLD) check of host-name
8374   used in fix_hostname(). Checks if characters in 'host->name' (indirectly
8375   via 'ace_hostname') are legal according to the TLD tables in libidn.
8376
8377 Daniel (6 October 2004)
8378 - Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
8379   CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even
8380   if the new URL would provide the resumed file. Test case 188 added to verify
8381   the fix (together with existing test 99).
8382
8383 - Dan Fandrich fixed a configure flaw for systems that need both nsl and socket
8384   libs to use gethostbyname().
8385
8386 - Removed tabs and trailing whitespace from lots of source files.
8387
8388 Daniel (5 October 2004)
8389 - Made configure --with-libidn=PATH try the given PATH before the default
8390   paths to make it possible to override.
8391
8392 - If idna_strerror() is present in libidn, we can use that instead of our
8393   internal replacement. This function was added by Simon in libidn 0.5.6 and
8394   is detected by configure.
8395
8396 - It seems basename() on IRIX is in the libgen library and since we don't use
8397   that, configure finds libgen.h but not basename and then we get a compiler
8398   error because our basename() replacement doesn't match the proto in
8399   libgen.h. Starting now, we don't include the file if basename wasn't found
8400   as well.
8401
8402 Daniel (4 October 2004)
8403 - Chris found a race condition resulting in CURLE_COULDNT_RESOLVE_HOST and
8404   potential crash, in the windows threaded name resolver code.
8405
8406 Daniel (3 October 2004)
8407 - Replaced the use of isspace() in cookie.c with our own version instead since
8408   we have most data as 'char *' and that makes us pass in negative values if
8409   there is 8bit data in the string. Changing to unsigned causes too much
8410   warnings or too many required typecasts to the normal string functions.
8411   Harshal Pradhan identified this problem.
8412
8413 Daniel (2 October 2004)
8414 - Bertrand Demiddelaer found a case where libcurl could read already freed
8415   data when CURLOPT_VERBOSE is used and a (very) persistent connection. It
8416   happened when the dns cache entry for the connection was pruned while the
8417   connection was still alive and then again re-used. We worked together on
8418   this fix.
8419
8420 - Gisle Vanem provided code that displays an error message when the (libidn
8421   based) IDN conversion fails. This is really due to a missing suitable
8422   function in the libidn API that I hope we can remove once libidn gets a
8423   function like this.
8424
8425 Daniel (1 October 2004)
8426 - Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
8427   https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to
8428   anyone involved in the curl project! This happens when you try to curl a
8429   file from a proftpd site using SSL. It seems proftpd sends a somewhat
8430   unorthodox response code (232 instead of 230). I relaxed the response code
8431   check to deal with this and similar cases.
8432
8433 - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
8434   formposts no longer include the path part. If you _really_ want them, you
8435   must provide your preferred full file name with CURLFORM_FILENAME.
8436
8437   Added detection for libgen.h and basename() to configure. My custom
8438   basename() replacement function for systems without it, might be a bit too
8439   naive...
8440
8441   Updated 6 test cases to make them work with the stripped paths.
8442
8443 Daniel (30 September 2004)
8444 - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
8445   app to retrieve the errno variable after a (connect) failure. It will make
8446   sense to provide this for more failures in a more generic way, but let's
8447   start like this.
8448
8449 - Günter Knauf and Casey O'Donnell worked out an extra #if condition for the
8450   curl/multi.h header to work better in winsock-using apps.
8451
8452 - Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
8453   properly using glibtoolize instead of plain libtoolize. (This is made if
8454   glibtool was found and used instead of plain libtool.)
8455
8456 Daniel (29 September 2004)
8457 - Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
8458   enable the progress meter.
8459
8460 Daniel (28 September 2004)
8461 - "Mekonikum" found out that if you built curl without SSL support, although
8462   your current SSL installation supports Engine, the compile fails.
8463
8464 Daniel (27 September 2004)
8465 - When --with-ssl=PATH is used to the configure script, it no longer uses
8466   pkg-config to figure out extra details. That is now only done if no PATH is
8467   included or if SSL is checked for by default without the --with-ssl option.
8468
8469 Daniel (25 September 2004)
8470 - Peter Sylvester pointed out that CURLOPT_SSLENGINE couldn't even be set to
8471   NULL when no engine was supported. It can now.
8472
8473 Daniel (22 September 2004)
8474 - Dan Fandrich fixed three test cases to no longer use "localhost" but instead
8475   use "127.0.0.1" to avoid requiring that localhost resolves nicely.
8476
8477 - Jean-Claude Chauve fixed an LDAP crash when more than one record was
8478   retrieved.
8479
8480 Daniel (19 September 2004)
8481 - Andreas Rieke pointed out that when attempting to connect to a host without
8482   a service on the specified port, curl_easy_perform() didn't properly provide
8483   an error message in the CURLOPT_ERRORBUFFER buffer.
8484
8485 Daniel (16 September 2004)
8486 - Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
8487   http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
8488   when "AUTH SSL" is issued (although the server responds fine and everything)
8489   but requires that curl issues "AUTH TLS" instead. See
8490   http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
8491
8492   Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
8493   of the AUTH strings to attempt first.
8494
8495 - Anonymous filed bug report #1029478 which identified a bug when you 1) used
8496   a URL without properly seperating the host name and the parameters with a
8497   slash. 2) the URL had parameters to the right of a ? that contains a slash
8498   3) curl was told to follow Location:s 4) the request got a response that
8499   contained a Location: to redirect to "/dir". curl then appended the new path
8500   on the wrong position of the original URL.
8501
8502   Test case 187 was added to verify that this was fixed properly.
8503
8504 Daniel (11 September 2004)
8505 - Added parsedate.c that contains a rewrite of the date parser currently
8506   provided by getdate.y. The new one is MUCH smaller and will allow us to run
8507   away from the yacc/bison jungle. It is also slightly lacking in features
8508   compared to the old one, but it supports parsing of all date formats HTTP
8509   involves (and a fair bunch of others).
8510
8511 Daniel (10 September 2004)
8512 - As found out by Jonas Forsman, curl didn't allow -F to set Content-Type on
8513   text-parts. Starting now, we can do -F "name=daniel;type=text/extra". Added
8514   test case 186 to verify.
8515
8516 - Bug report #1025986. When following a Location: with a custom Host: header
8517   replacement, curl only replaced the Host: header on the initial request
8518   and didn't replace it on the following ones. This resulted in requests with
8519   two Host: headers.
8520
8521   Now, curl checks if the location is on the same host as the initial request
8522   and then continues to replace the Host: header. And when it moves to another
8523   host, it doesn't replace the Host: header but it also doesn't make the
8524   second Host: header get used in the request.
8525
8526   This change is verified by the two new test cases 184 and 185.
8527
8528 Daniel (8 September 2004)
8529 - Modified the test suite to be able to use and run with customized port
8530   numbers. This was always intended but never before possible. Now a simple
8531   change in the runtests.pl script can make all tests use different ports.
8532   The default ports in use from now on are 8990 to 8993.
8533
8534 Daniel (2 September 2004)
8535 - Minor modification of an SSL-related error message.
8536
8537 Daniel (31 August 2004)
8538 - David Tarendash found out that curl_multi_add_handle() returned
8539   CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
8540
8541 Daniel (30 August 2004)
8542 - Make "Proxy-Connection: close" close the current proxy connection, as Roman
8543   Koifman found out.
8544
8545 Daniel (24 August 2004)
8546 - Fixed a getdate problem by post-replacing the getdate.c file after the
8547   bison/yacc process to add the fix Harshal Pradhan suggested. The problem
8548   caused a crash on Windows when parsing some dates.
8549
8550 Daniel (23 August 2004)
8551 - Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs
8552   even when told to use HTTP 1.0, which is not correct. Test case 180 and
8553   181 verify this.
8554
8555 - Added test case 182 to verify that zero byte transfers call the callback
8556   properly.
8557
8558 Daniel (20 August 2004)
8559 - Alexander Krasnostavsky made the write callback get called even when a zero
8560   byte file is downloaded.
8561
8562 Daniel (18 August 2004)
8563 - Ling Thio pointed out that when libcurl is built IPv6-enabled, it still did
8564   reverse DNS lookups when fed with a numerical IP-address (like
8565   http://127.0.0.1/), although it doesn't when built IPv6-disabled. libcurl
8566   should never do reverse lookups.
8567
8568 Daniel (17 August 2004)
8569 - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
8570   empty file, libcurl would return with the file still open.
8571
8572 - Alexander Krasnostavsky pointed out that the configure script needs to define
8573   _THREAD_SAFE for AIX systems to make libcurl built really thread-safe.
8574
8575   Also added a check for the xlc compiler on AIX, and if that is detect we use
8576   the -qthreaded compiler option
8577
8578 Daniel (16 August 2004)
8579 - libcurl now allows a custom "Accept-Encoding:" header override the
8580   internally set one that gets set with CURLOPT_ENCODING. Pointed out by Alex.
8581
8582 - Roland Krikava found and fixed a cookie problem when using a proxy (the
8583   path matching was wrong). I added test case 179 to verify that we now do
8584   right.
8585
8586 Daniel (15 August 2004)
8587 - Casey O'Donnell fixed some MSVC makefile targets to link properly.
8588
8589 Daniel (11 August 2004)
8590 - configure now defines _XOPEN_SOURCE to 500 on systems that need it to build
8591   warning-free (the only known one so far is non-gcc builds on 64bit SGI
8592   IRIX). (Reverted this change later as it caused compiler errors.)
8593
8594 - the FTP code now includes the server response in the error message when the
8595   server gives back a 530 after the password is provided, as it isn't
8596   necessary because of a bad user name or password.
8597
8598 Version 7.12.1 (10 August 2004)
8599
8600 Daniel (10 August 2004)
8601 - In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
8602   already UTF-8 encoded. This made the certificate verification fail if the
8603   remote server used a certificate with the name UTF-8 encoded.
8604
8605   Work-around brought by Alexis S. L. Carvalho.
8606
8607 Daniel (9 August 2004)
8608 - I fixed the configure script for krb4 to use -lcom_err as well, as I started
8609   to get link problems with it unless I did that on my Solaris 2.7 box. I
8610   don't understand why I started to get problems with this now!
8611
8612 Daniel (5 August 2004)
8613 - Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
8614   reported in bug report #1004105
8615
8616 Daniel (4 August 2004)
8617 - Gisle Vanem provided a fix for the multi interface and connecting to a host
8618   using multiple IP (bad) addresses.
8619
8620 - Dylan Salisbury made libcurl no longer accept cookies set to a TLD only (it
8621   previously allowed that on the seven three-letter domains).
8622
8623 Daniel (31 July 2004)
8624 - Joel Chen reported that the digest code assumed quotes around the contents a
8625   bit too much.
8626
8627 Daniel (28 July 2004)
8628 - Bertrand Demiddelaer fixed the host name to get setup properly even when a
8629   connection is re-used, when a proxy is in use. Previously the wrong Host:
8630   header could get sent when re-using a proxy connection to a different target
8631   host.
8632
8633 - Fixed Brian Akins' reported problems with duplicate Host: headers on re-used
8634   connections. If you attempted to replace the Host: header in the second
8635   request, you got two such headers!
8636
8637 - src/Makefile.am now includes the Makefile.inc file to get info about files
8638
8639 Daniel (26 July 2004)
8640 - Made "curl [URL] -o name#2" work as expected. If there's no globbing for the
8641   #-number, it will simply be used as #2 in the file name.
8642
8643 - Bertrand Demiddelaer fixed testing with valgrind 2.1.x and added two missing
8644   newlines in the cookie informationals.
8645
8646 Daniel (24 July 2004)
8647 - I fixed the autobuilds with ares, since they now need to have buildconf run
8648   in the ares dir before the configure script is run.
8649
8650 - Added Casey O'Donnell's curl_easy_reset() function. It has a proto in
8651   curl/curl.h but we have no man page yet.
8652
8653 Daniel (20 July 2004)
8654 - Added buildconf and buildconf.bat to the release archives, since they are
8655   handy for rebuilding curl when using a daily snapshot (and not a pure CVS
8656   checkout).
8657
8658 Daniel (16 July 2004)
8659 - As suggested by Toby Peterson, libcurl now ignores Content-Length data if the
8660   given size is a negative number. Test case 178 verifies this.
8661
8662 Daniel (14 July 2004)
8663 - Günter Knauf has made the Netware builds do without the config-netware.h
8664   files, so they are now removed from the dist packages.
8665
8666 - Günter Knauf made curl and libcurl build with Borland again.
8667
8668 - Andres Garcia fixed the common test 505 failures on windows.
8669
8670 Daniel (6 July 2004)
8671 - Andrés García found out why the windows tests failed on file:// "uploads".
8672
8673 Daniel (2 July 2004)
8674 - Andrés García reported a curl_share_cleanup() crash that occurs when no
8675   lock/unlock callbacks have been set and the share is cleaned up.
8676
8677 Daniel (1 July 2004)
8678 - When using curl --trace or --trace-ascii, no trace messages that were sent
8679   by curl_easy_cleanup() were included in the trace file. This made the
8680   message "Closing connection #0" never appear in trace dumps.
8681
8682 Daniel (30 June 2004)
8683 - Niels van Tongeren found that setting CURLOPT_NOBODY to TRUE doesn't disable
8684   a previously set POST request, making a very odd request get sent (unless
8685   you disabled the POST) a HEAD request with a POST request-body. I've now
8686   made CURLOPT_NOBODY enforce a proper HEAD. Added test case 514 for this.
8687
8688 Daniel (29 June 2004)
8689 - Günter Knauf made the testcurl.pl script capable of using a custom setup
8690   file to easier run multiple autobuilds on the same source tree.
8691
8692 - Gisle fixed the djgpp build and fixed a memory problem in some of the
8693   reorged name resolved code.
8694
8695 - Fixed code to allow connects done using the multi interface to attempt the
8696   next IP when connecting to a host that resolves to multiple IPs and a
8697   connect attempt fails.
8698
8699 Daniel (27 June 2004)
8700 - Based on Rob Stanzel's bug report #979480, I wrote a configure check that
8701   checks if poll() can be used to wait on NULL as otherwise select() should be
8702   used to do it. The select() usage was also fixed according to his report.
8703
8704   Mac OS X 10.3 says "poll() functionality for Mac OS X is implemented via an
8705   emulation layer on top of select(), not in the kernel directly. It is
8706   recommended that programs running under OS X 10.3 prefer select() over
8707   poll(). Configure scripts should look for the _POLL_EMUL_H_ define (instead
8708   of _POLL_H_ or _SYS_POLL_H_) and avoid implementations where poll is not
8709   implemented in the kernel."
8710
8711   Yes, we can probably use select() on most platforms but today I prefered to
8712   leave the code unaltered.
8713
8714 Daniel (24 June 2004)
8715 - The standard curl_version() string now only includes version info about
8716   involved libraries and not about particular features. Thus it will no longer
8717   include info about IPv6 nor GSS. That info is of course still available in
8718   the feature bitmask curl_version_info() offers.
8719
8720 - Replaced all occurances of sprintf() with snprintf(). This is mostly because
8721   it is "A Good Thing" rather than actually fixing any known problem. This
8722   will help preventing future possible mistakes to cause buffer overflows.
8723
8724 - Major reorganization in the host resolve code (again). This time, I've
8725   modified the code to now always use a linked list of Curl_addrinfo structs
8726   to return resolved info in, no matter what resolver method or support that
8727   is available on the platform. It makes it a lot easier to write code that
8728   uses or depends on resolved data.
8729
8730   Internally, this means amongst other things that we can stop doing the weird
8731   "increase buffer size until it works" trick when resolving hosts on
8732   IPv4-only with gethostbyname_r(), we support socks even on libcurls built
8733   with IPv6 enabled (but only to socks servers that resolve to an IPv4
8734   address) and we no longer deep-copy or relocate hostent structs (we create
8735   Curl_addrinfo chains instead).
8736
8737   The new "hostent to Curl_addrinfo" converter function is named Curl_he2ai()
8738   and is slightly naive and simple, yet I believe it is functional enough to
8739   work for libcurl.
8740
8741 Daniel (22 June 2004)
8742 - David Cohen pointed out that RFC2109 says clients should allow cookies to
8743   contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
8744   to 4999 now and made the used buffer get malloc()ed instead of simply
8745   allocated on stack as before. Extended test case 46 to include a cookie with
8746   very huge content to verify the fix.
8747
8748 - Günter Knauf fixed getdate.y to remove a few warnings. I removed the
8749   ifdef'ed test we never ever use anyway.
8750
8751 - Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
8752   anywhere in the wildcard string, support multiple '*'-letters in the
8753   wildcard and to allow the '*'-letter to match a string that includes a dot.
8754
8755 Daniel (21 June 2004)
8756 - testcurl.sh is now removed completely, tests/testcurl.pl is the script to
8757   use when autobuilding curl!
8758
8759 - Kjetil Jacobsen brought my attention to the fact that you cannot properly
8760   abort an upload with the readfunction callback, since returning 0 or -1 only
8761   stops the upload and libcurl will continue waiting for downloaded data and
8762   the server often waits for the rest of the upload data to arrive.
8763
8764   Thus, I've now added the ability for read callbacks to return
8765   CURL_READFUNC_ABORT to abort an upload from a read callback. This will stop
8766   the transfer immediately with a CURLE_ABORTED_BY_CALLBACK return code.
8767
8768   Test case 513 was added to verify that it works. I had to improve the test
8769   HTTP server too to dump the request to a file even when the client
8770   disconnects prematurely.
8771
8772 Daniel (19 June 2004)
8773 - Luca Alteas provided a test case with a failing curl operation: when we POST
8774   to a site with --digest (or similar) set, and the server responded with a 302
8775   Location: to the "authprobe" request, it was not treated correctly. We still
8776   will behave badly if FOLLOWLOCATION is enabled for this case, but I'm not
8777   in the mood to dive into this right now and will leave it as-is for now.
8778   Verified my fix with test case 177.
8779
8780 Daniel (18 June 2004)
8781 - Gisle Vanem's patch that provides more details from the SSL layers (if you
8782   use an OpenSSL version that supports it). It also introduces two new types
8783   of data that can be sent to the debug callback: CURLINFO_SSL_DATA_IN and
8784   CURLINFO_SSL_DATA_OUT.
8785
8786 - With David Byron's test server I could repeat his problem and make sure that
8787   POSTing over HTTPS:// with NTLM works fine now. There was a general problem
8788   with multi-pass authentication with non-GET operations with CONNECT.
8789
8790 Daniel (16 June 2004)
8791 - Modified to keep the upload byte counter in an curl_off_t, not an int as
8792   before. 32bits is not enough. This is most likely the bug Jean-Louis Lemaire
8793   reported that makes 2GB FTP uploads to report error ("unaligned file sizes")
8794   when completed.
8795
8796 Daniel (15 June 2004)
8797 - Luca Alteas reported a problem that I fixed: if you did a POST with
8798   CURLAUTH_DIGEST set but the server didn't require any authentication,
8799   libcurl would repeatedly send HEAD lots of times until it gives up. This was
8800   actually the case for all multi-pass authentications. Added test case 174,
8801   175 and 176 to verify this.
8802
8803 Daniel (14 June 2004)
8804 - Multipart formposts uploading files no longer inserts the files themselves
8805   into the huge prebuilt chunk. This enables libcurl to formpost files that is
8806   larger than the amount of system memory. When the file given is passed on
8807   stdin, libcurl still uses the old method of reading the full fill before the
8808   upload takes place. This approach was selected in order to not alter the
8809   behavior for existing applications, as when using stdin libcurl can't know
8810   the size of the upload and chunked transfer-encoding can only be used on
8811   HTTP 1.1 servers.
8812
8813 Daniel (13 June 2004)
8814 - Gisle found out that we did wildcard cert name checks wrong, so that parts
8815   of the check wrongly was case sensitive.
8816
8817 Daniel (11 June 2004)
8818 - Tim Sneddon brought a minor VMS fix to make curl build properly on his VMS
8819   machine. He also had some interesting libcurl patches... they might be able
8820   to do in a slightly nicer way. Discussions are in progress.
8821
8822 Daniel (10 June 2004)
8823 - Gisle Vanem brought code cleanupsm better verbose output and better connect
8824   timeout handling when attempting to connect to a host that resolves to
8825   multiple IP addresses.
8826
8827 - Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
8828   path after a file:// transfer.
8829
8830 Daniel (9 June 2004)
8831 - Alexander Krasnostavsky made 'configure --disable-http' work to build libcurl
8832   without HTTP support. I added a new return code for curl_formadd() in case
8833   libcurl is built with HTTP disable: CURL_FORMADD_DISABLED.
8834
8835 - Alexander Krasnostavsky pointed out a missing file in the generated
8836   curllib.dsp file, and now people building with this should get a libcurl.lib
8837   file generated as it used to do before we generated this file.
8838
8839 Daniel (8 June 2004)
8840 - Marty Kuhrt fixed a minor build problem for VMS.
8841
8842 Daniel (7 June 2004)
8843 - Reverted the configure check from the 4th since it obviously didn't work.
8844   Remade it in a different manner that hopefully works better.
8845
8846 Daniel (4 June 2004)
8847 - Günter Knauf brought patches to make curl build fine on NetWare again.
8848
8849 - Made the configure checks for strerror_r() not exit the configure script
8850   when built for cross-compiling.
8851
8852 Daniel (3 June 2004)
8853 - Chris Gaukroger pointed out that 'make test' attempts to run the tests even
8854   if curl is built cross-compiled. I've now made it output a short message
8855   instead, saying it isn't possible to do.
8856
8857 - Alexander Krasnostavsky brought FTP 3rd party transfer support to libcurl.
8858   You can now use libcurl to transfer files between two remote hosts using
8859   FTP. There are a bunch of new options to control this with:
8860    CURLOPT_SOURCE_HOST
8861    CURLOPT_SOURCE_USERPWD
8862    CURLOPT_SOURCE_PATH
8863    CURLOPT_SOURCE_PORT
8864    CURLOPT_PASV_HOST
8865    CURLOPT_SOURCE_PREQUOTE
8866    CURLOPT_SOURCE_POSTQUOTE
8867
8868   (They still remain to be documented properly in the curl_easy_setopt man
8869   page.)
8870
8871   When using this, the ordinary CURLOPT_URL specifies the target URL, and you
8872   specify the source data with these additional options. ftp3rdparty.c is a
8873   new example source code showing how to use this.
8874
8875 - Vincent Bronner fixed the HTTP Digest code to use the proxy user name and
8876   password when doing proxy authentication, it previously always used the host
8877   user name and password!
8878
8879 Daniel (2 June 2004)
8880 - CURLOPT_UPLOAD and CURLOPT_PUT now do the exact same thing internally, which
8881   fixes some old confusions on when which of these should be used and what the
8882   differences are.
8883
8884 - Applied Gisle's fixes to make curl build fine with lcc-win32
8885
8886 Version 7.12.0 (2 June 2004)
8887
8888 Daniel (1 June 2004)
8889 - I clarified the --create-dirs option somewhat in the curl man page.
8890
8891 - Renaud Duhaut corrected the curl_unescape man page.
8892
8893 - David Byron modified one of Massimiliano Ziccardi's recent MSVC makefile
8894   changes to now again use the mm lib by default.
8895
8896 Daniel (26 May 2004)
8897 - Mohun Biswas added release-zlib and debug-zlib targets to the MSVC libcurl
8898   Makefile
8899
8900 - David Byron reported a problem with proxy authentication when doing CONNECT,
8901   like when accessing HTTPS sites wiht a proxy. This probably broke when I
8902   rewrote the auth stuff recently.
8903
8904 - I added fileupload.c in the examples directory, showing how an upload to a
8905   file:// URL is made.
8906
8907 Daniel (25 May 2004)
8908 - Massimiliano Ziccardi updated the MSVC makefiles.
8909
8910 Daniel (24 May 2004)
8911 - libcurl now supports "uploading" to file:// URLs. Test 204 and 205 were
8912   added to verify.
8913
8914 - Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
8915   Gisle's previous mail. We now use this function, and thus we require libidn
8916   0.4.5 or later. No earlier version will do.
8917
8918 - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
8919   not be used both in one request. Fixed it and added test case 172 to verify.
8920
8921 Daniel (21 May 2004)
8922 - While talking to host a.b.c, libcurl did wrongly not accept cookies that
8923   were set to the domain .a.b.c (that is with a dot prefix). This is now fixed
8924   and test case 171 verifies it.
8925
8926 Daniel (20 May 2004)
8927 - Jesse Noller reported that the upload speed info reported by libcurl was
8928   wrong. The same was true for the download speed. Fixed now.
8929
8930 Daniel (19 May 2004)
8931 - David Byron added test case 170 - this used to crash the previous version of
8932   curl.
8933
8934 Daniel (17 May 2004)
8935 - Peter Sylvester's patch that addresses two flaws in the peer certificate
8936   name verification:
8937   o when multiple common names are used (as in the curl tests), the last name
8938     needs to be selected.
8939   o allow comparing with encoded values, at least with BMP and ISO latin1
8940     encoded T61strings.
8941
8942 - All 191 test cases run through the torture test OK! 'make test-torture' is
8943   now available in the root makefile (on configure-based environments).
8944
8945 Daniel (14 May 2004)
8946 - With a slightly modified ftpserver.pl I've now run almost all tests through
8947   with runtests.pl -t. This is goodness!
8948
8949 - Since I have been unable to contact the CVS admins for several months, I've
8950   decided that the current CVS hosting was not good enough. I've now moved the
8951   CVS repo once again, see README for updated cvs checkout instructions.
8952
8953 Daniel (13 May 2004)
8954 - runtests.pl -t now runs fine all the way to test 100. I believe test case
8955   100 fails because of an FTP server problem.
8956
8957 Daniel (12 May 2004)
8958 - General cleanups all over to make libcurl survive and do well when a memory
8959   function returns NULL. runtests.pl -t now works fine for the first 26 test
8960   cases.
8961
8962 Daniel (11 May 2004)
8963 - Seshubabu Pasam provided a patch that introduces curl_global_init_mem() -
8964   like normal curl_global_init() but allows the app to replace all memory
8965   functions with its own set. I modified it slightly.
8966
8967 - Based on Luca Alteas' comments, I modified the curllib.dsp generation code.
8968
8969 Daniel (10 May 2004)
8970 - Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
8971   separate free()-function by that lib to make sure the memory is freed by the
8972   same memory subsystem that allocated it. He responded positively and this
8973   will likely cause us to require a newer version of libidn as soon as Simon
8974   releases one with such a libidn_free() function.
8975
8976 - James Bursa made runtests.pl's -t option work for any given test case, and I
8977   edited to allow -g too. Not even test case 1 worked...
8978
8979 - Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
8980
8981 - Andrés García fixed a problem in the test script that made it fail to
8982   recognize our own running HTTP server.
8983
8984 Daniel (7 May 2004)
8985 - James Bursa fixed the memanalyze.pl script to conder malloc(0) areas OK to
8986   free() and he made two failed-resolve error messages use the new display-
8987   name instead of the internally-used name.
8988
8989 - Gisle Vanem tried curl with
8990   www.etdomenenavnkanmaksimaltinneholdesekstitrebokstaversliksomdette.com
8991   which caused problems, and I fixed the single zero byte buffer overwrite
8992   that occurred (due to a stupid protocol buffer size and parser).
8993
8994 - Made the lib/curllib.dsp file get generated automaticly when a distribution
8995   package is made, with the msvcproj.* files as templates and all
8996   win32-sources added. I think this can be made to work better than the always
8997   lagging-behind previous approach. I'm not sure this builds a working project
8998   file right now though!
8999
9000 Daniel (6 May 2004)
9001 - Michael Benedict brought a fix that fills in the errorbuffer properly when
9002   ares fails to resolve a name for a case not previously dealt with like this.
9003
9004 Daniel (5 May 2004)
9005 - Joe Halpin fixed the annoying typecast warning in lib/ldap.c
9006
9007 - Gisle Vanem fixes:
9008   o memdebug to not access NULL on several places
9009   o libcurl.def; curl_formparse is gone.
9010   o progress.c; fixed the percent values being trunced to 0.
9011   o if2ip.*; constified the 'interface' argument.
9012
9013 - Tor Arntsen reported that many of his autobuilds froze and I found and fixed
9014   a problem introduced with the HTTP auth overhaul that could lead to a
9015   never-ending internal request-loop due to un-initialized variables!
9016
9017 - Removed several compiler warnings on various compilers/platforms.
9018
9019 Daniel (4 May 2004)
9020 - curl_formparse() has been removed from the library. It has been marked and
9021   mentioned as deprecated for several years.
9022
9023 Daniel (3 May 2004)
9024 - Rewritten HTTP authentication code. The previous code could not properly
9025   deal with the added test cases 167, 168 and 169. I've now rewritten the code
9026   to better separate host and proxy authentication and not re-use the same
9027   variables as much as before as it proved non working in the more involved
9028   cases. All the current tests run OK now, and so do the new ones. The curl
9029   tool got a new option named --proxy-digest to enable HTTP Digest
9030   authentication with the proxy. I also made the library support it.
9031
9032 - Gisle Vanem made the LDAP code work with wldap32.dll as supplied with
9033   Win-98/ME/2000/XP, so no extra .dlls are required when curl/libcurl is used
9034   on these Windows versions.
9035
9036 Daniel (30 April 2004)
9037 - runtests.pl now scans the valgrind log for valgrind-detected memory leaks
9038   after each test case if valgrind was found and used.
9039
9040 - I modified the app-code in curl to include the new lib/curlx.h and only
9041   access those functions using the curlx_-prefix in preparation for the future
9042   removal of several curl_-functions from the public libcurl API.
9043
9044 - Introduced lib/curlx.h as a single header to provide the curlx_-functions
9045   to apps.
9046
9047 - Added notices in the man pages for curl_getenv, curl_mprintf, curl_strequal
9048   and curl_strnequal that they are subject for removal in a future release.
9049   STOP USING THESE FUNCTIONS.
9050
9051 - Mihai Ionescu noticed he couldn't do formposts with whitespace in the file
9052   names and yes, I broke that on April 23. Sigh. I fixed it now and added
9053   test case 166 to verify it.
9054
9055 - Luca Altea pointed out a mistake left from the Digest patch of yesterday.
9056
9057 Daniel (29 April 2004)
9058 - Made IDN domains work when sending requsts over HTTP proxy as well. Added
9059   test case 165 to verify the functionality.
9060
9061 - Fixed a bug in the new internal host name setup when re-using connections.
9062
9063 - James Bursa found out that curl_easy_duphandle() with ares-built libcurl
9064   created a bad handle that would crash in the first name resolve attempt. This
9065   is now fixed and test case 512 was added to verify it.
9066
9067 - Luca Altea provided a major HTTP Digest code fix and cleanup. We now follow
9068   the Digest RFC a lot better.
9069
9070 - Gisle Vanem made the SSL code use ERR_error_string_n() where applicable.
9071
9072 Daniel (27 April 2004)
9073 - I remodeled Gisle's IDN code slightly and now we convert both the host name
9074   and proxy name to the ACE encoded version to use internally for resolves and
9075   cookies etc. They are now using one 'struct hostname' each that keep both
9076   the original name and the possibly encoded name. IDN resolves work for me
9077   now using IPv6, IPv4 and ares resolving. Even cookies on IDN sites seem to
9078   do right. I got some failures at first when CHARSET wasn't set at all which
9079   confused libidn completely and it decided by encoding of choice was
9080   'ANSI_X3.4-1968'...
9081
9082 - made 'configure --without-libidn' work
9083
9084 Daniel (25 April 2004)
9085 - Fixed the src/hugehelp.c file to include "setup.h" instead of "config.h" to
9086   make the problems with USE_MANUAL on windows go away.
9087
9088 - configure --without-ssl could still wrongly include some OpenSSL info in the
9089   Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
9090   Martin.
9091
9092 - Since we can now build and use quite a large set of 3rd party libraries, I
9093   decided I would make configure produce a summary at the end showing what
9094   libraries it uses and if not, what option to use to make it use that. I also
9095   added some other random info that is nice in a "configure summary" output.
9096
9097 - Applied TommyTam's patch that now make curl work with telnet and stdin
9098   properly on Windows.
9099
9100 - The changes for today below were made by me and Gisle Vanem.
9101
9102   The file previously known as hostip.c has now undergone a huge cleanup and
9103   split:
9104
9105   hostip.c explained
9106   ==================
9107
9108   The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
9109   source file are these:
9110
9111   CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
9112   that. The host may not be able to resolve IPv6, but we don't really have to
9113   take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
9114   defined.
9115
9116   CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
9117   name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
9118   c-ares has no IPv6 support. This can be Windows or *nix.
9119
9120   CURLRES_THREADED - is defined if libcurl is built to run under (native)
9121   Windows, and then the name resolve will be done in a new thread, and the
9122   supported asynch API will be the same as for ares-builds.
9123
9124   If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
9125   libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
9126   defined.
9127
9128   The host*.c sources files are split up like this:
9129
9130   hostip.c   - method-independent resolver functions and utility functions
9131   hostasyn.c - functions for asynchronous name resolves
9132   hostsyn.c  - functions for synchronous name resolves
9133   hostares.c - functions for ares-using name resolves
9134   hostthre.c - functions for threaded name resolves
9135   hostip4.c  - IPv4 specific functions
9136   hostip6.c  - IPv6 specific functions
9137
9138   The hostip.h is the single united header file for all this. It defines the
9139   CURLRES_* defines based on the config*.h and setup.h defines.
9140
9141 - Added function header comments to many functions in an attempt to better
9142   explain the purpose of them all.
9143
9144 - configure --with-libidn is now supported. It makes the configure script
9145   check for libidn libs and include files in the prefix path given. If you
9146   say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
9147   and the includes in /usr/local/include etc.
9148
9149 - curl_version_info() now returns a struct aged CURLVERSION_THIRD including
9150   libidn version info. The string curl_version() returns also includes libidn
9151   version info, if available.
9152
9153 Version 7.11.2 (26 April 2004)
9154
9155 Daniel (25 April 2004)
9156 - Erwin Authried pointed out that configure --disable-manual didn't do right
9157   if you already had a src/hugehelp.c source file present (which most people
9158   do I guess). It now uses the USE_MANUAL define properly.
9159
9160 Daniel (23 April 2004)
9161 - Gisle Vanem found and fixed a memory leak when doing (failing) Windows
9162   threaded name resolves.
9163
9164 - I also added test case 163 just to make sure -F "var=<file" works fine and
9165   can pass on characters such as newlines, carriage-return and tabs.
9166
9167 - When we added test case 162 without adding the necessary requirement field
9168   in the test meta data we could see that curl didn't complain if you used
9169   --proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
9170   now made it check this first, and it now exists with a "the installed
9171   libcurl version doesn't support this" message if it happens again.
9172
9173 Daniel (22 April 2004)
9174 - David Byron found and fixed a small bug with the --fail and authentication
9175   stuff added a few weeks ago.  Turns out that if you specify --proxy-ntlm and
9176   communicate with a proxy that requires basic authentication, the proxy
9177   properly returns a 407, but the failure detection code doesn't realize it
9178   should give up, so curl returns with exit code 0. Test case 162 added to
9179   verify the functionality.
9180
9181 - allow newlines in the contents when doing -F "var=[contents]"
9182   Robert Marlow reported.
9183
9184 - If a transfer is found out to be only partial, libcurl will now treat that
9185   as a problem serious enough to skip the final QUIT command before closing
9186   the control connection. To avoid the risk that it will "hang" waiting for
9187   the QUIT response. Added test case 161 to verify this.
9188
9189 Daniel (21 April 2004)
9190 - Modified the heuristics for dealing with the test 160 scenario. When a
9191   connection is re-used and nothing at all is received from it (because the
9192   server closes the connection), we will now retry the request on a fresh new
9193   connection. The previous ECONNRESET stuff from January 30 was removed again
9194   as it didn't detect the situation good enough.
9195
9196 Daniel (20 April 2004)
9197 - Added test case 160 to verify that curl works correctly when it gets a
9198   connection reset when trying to re-use a connection. It should then simply
9199   create a new connection and resend the request.
9200
9201 Daniel (19 April 2004)
9202 - No more 512 byte limit for host name (inclusing name + password) in libcurl.
9203   An added bonus is that we use less memory for the typical (shorter URL)
9204   case.
9205
9206 - Cleaned up the sources to better use the terms 'hostname' and 'path'
9207   internally when referring to that data. The buffers used for keep that info
9208   is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
9209   than the previous mess.
9210
9211 Daniel (15 April 2004)
9212 - Modified runtests.pl again to remove all log files in the log/ dir between
9213   each test, and then made -p display all non-zero byte files in the log dir.
9214   It should make that data more usable and contain less rubbish.
9215
9216 - ftpserver.pl now produces log files more similar to how the sws ones look
9217   and they now also contains a bit more details to help debugging ftp
9218   problems.
9219
9220 - Removed the fixed maximum amount of dir levels the FTP code supported.
9221   Previously we had a fixed array for 100 levels, now we save space in each
9222   handle by allocating only for a few level by default and then enlarging that
9223   in case of need (with no maximum depth). Adjusted test case 142 to verify
9224   that 150 dir levels work fine.  An added bonus is that we use less memory
9225   for the typical (not very deep) case.
9226
9227 Daniel (14 April 2004)
9228 - Asking for CURL_IPRESOLVE_V6 when IPv6 addresses can't be resolved will
9229   now cause the resolve function to return NULL immediately. This flaw was
9230   pointed out by Gisle Vanem.
9231
9232 - Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
9233
9234 - runtests.pl now has a new option (-p) that will display "interesting" log
9235   files to stdout in case of a test failure. This is primarily intended to be
9236   used in the 'full-test' make target that is used by the autobuild tests, as
9237   we then get a much better chance to understand (remote) test failures based
9238   on autobuild logs alone.
9239
9240 Daniel (13 April 2004)
9241 - Gisle Vanem made the multi interface work again on Windows even when built
9242   without ares. Before this, select() would return -1 during the name resolve
9243   phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
9244   appreciated!
9245
9246 - curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
9247
9248 Daniel (11 April 2004)
9249 - Applied David Byron's patch for the MSVC libcurl makefile for builds with
9250   zlib.
9251
9252 Daniel (9 April 2004)
9253 - Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
9254   be down to usec if the system sypports it.
9255
9256 Daniel (7 April 2004)
9257 - A request that sends "Expect: 100-continue" and gets nothing but a single
9258   100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
9259
9260 - The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
9261   approach fully.
9262
9263 Daniel (6 April 2004)
9264 - Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
9265   made libcurl on Windows leak a small amount of memory in each name resolve
9266   when not used as a DLL.
9267
9268 - New authentication code added, particularly noticable when doing POST or PUT
9269   with Digest or NTLM. libcurl will now use HEAD to negotiate the
9270   authentication and when done perform the requested POST. Previously libcurl
9271   sent POST immediately and expected the server to reply a final status code
9272   with an error and then libcurl would not send the request-body but instead
9273   send then next request in the sequence.
9274
9275   The reason for this change is due to IIS6 barfing on libcurl when we attempt
9276   to POST with NTLM authentication. The reason for the problems is found in
9277   RFC2616 section 8.2.3 regarding how servers should deal with the 100
9278   continue request-header:
9279
9280         If it responds with a final status code, it MAY close the transport
9281         connection or it MAY continue to read and discard the rest of the
9282         request.
9283
9284   Previous versions of IIS clearly did close the connection in this case,
9285   while this newer version decided it should "read and discard". That would've
9286   forced us to send the whole POST (or PUT) data only to have it discarded and
9287   then be forced to send it again. To avoid that huge penality, we switch to
9288   using HEAD until we are authenticated and then send the POST.
9289
9290   The only actual drawback I can think of (except for the odd sites that might
9291   treat HEAD differently than they would treat POST/PUT when given the same
9292   URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
9293   authentication, libcurl will still use a HEAD in a first round and then do a
9294   POST.
9295
9296   If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
9297   an un-authenticated request at once, which then is the only request if the
9298   site requires no auth.
9299
9300   Alan Pinstein helped me work out the protocol details by figuring out why
9301   libcurl failed and what IIS6 expects.
9302
9303 - The --limit-rate logic was corrected and now it works a lot better for
9304   higher speeds, such as '10m' or similar. Reported in bug report #930249.
9305
9306 - Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
9307   #include "timeval.h" from the lib dir to get the protos etc.  Note that
9308   these are NOT part of the libcurl API. The curl app simply uses the same
9309   source files as the library does and therefore the file needs to be compiled
9310   and linked with curl too, not just when creating libcurl.
9311
9312 - lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
9313   isn't portable enough
9314
9315 Daniel (2 April 2004)
9316 - In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
9317   name to work better. As pointed out by Robin Kay.
9318
9319 - Andrés García updated the mingw makefiles.
9320
9321 - Dirk Manske fixed a problem I recently added in the progress meter code that
9322   broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
9323   mistake in the code that produces the final update of the progress meter
9324   that would often prevent it from actually being updated that final time.
9325
9326 Daniel (1 April 2004)
9327 - Dirk Manske fixed a memory leak that happened when we use ares for name
9328   resolves and decides to time-out before ares does it. This fix uses the
9329   brand new ares_cancel() function which is not present in c-ares 1.1.0.
9330
9331   When told to enable ares, the configure script now checks for presence of
9332   the ares_cancel function to alert users if they attempt to use a too old
9333   c-ares library.
9334
9335 Daniel (31 March 2004)
9336 - Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
9337
9338 - Dirk Manske found out that libcurl timed out waiting for resolves far too
9339   easy when libcurl was built to use (c-)ares for name resolving.
9340
9341 - Further Digest fixing and a successful test case 153 now makes me believe
9342   Mitz Wark's problems are fixed.
9343
9344 - Andres Garcia figured out that test case 63, while working, only proved a
9345   flaw in libcurl's 'http_proxy' parser when a user name and password is
9346   provided. The user name was not extracted properly (and 'http' was always
9347   used as user name).
9348
9349 - Andrés García fixed compiler warnings in our ioctlsocket() usage.
9350
9351 Daniel (30 March 2004)
9352 - Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
9353   particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel.  I've now
9354   written a configure test that checks for a working NI_WITHSCOPEID
9355   implemenation. No code uses the result from this test yet, it is still
9356   experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
9357   (5006623) -- it's not supported and shouldn't be in the header file."
9358
9359 - I provided Mitz Wark with a first patch in order to fix libcurl's problems
9360   to re-negotiate Digest authentication (when 'stale=true' is included in the
9361   response header).
9362
9363 - Roy Shan discovered that the multi interface didn't properly timeout name
9364   lookups which could make handles get stuck in that state and thus never get
9365   completed. I've produced a first test patch that attempts to correct this.
9366
9367 - David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
9368   even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
9369   and 152 were added to verify the functionality.
9370
9371 Daniel (29 March 2004)
9372 - Gisle Vanem updated files for the djgpp/MS-DOS build.
9373
9374 - Andrés García helped me work out a fix for the runtests.pl script to make
9375   the file:// tests run fine when tested with the mingw-built version of curl.
9376
9377 - Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
9378   This also required a minor fix of the configure script.
9379
9380 - The postit2.c source example used the wrong struct name for the post data.
9381
9382 Daniel (26 March 2004)
9383 - Gisle Vanem improved IPv6 support on Windows by making the curl build use
9384   the correct getaddrinfo() function.
9385
9386 Daniel (25 March 2004)
9387 - It turned out that AIX, despite having a "thread-safe libc", doesn't offer
9388   all traditional functions thread-safe. This URL is informative on this
9389   subject:
9390
9391     http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
9392     genprogc/thread_quick_ref.htm
9393
9394   As a result of this, we now check for three *_r() functions on recent AIX
9395   versions as well that the URL mentions aren't thread-safe in AIX 5.1.
9396
9397 - renamed curl_strerror.[ch] to strerror.[ch]
9398
9399 - Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
9400   for users to disable the Nagle algorthim-usage.
9401
9402 - Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
9403   own API which differs from the POSIX one. Daniel adjusted the configure
9404   script to detect the version in use, and the code now uses the new defines
9405   accordingly.
9406
9407 - Fixed some build flaws with the new lib/curl_strerror.c source file.
9408
9409 Daniel (24 March 2004)
9410 - Gisle Vanem's fix to replace the bad use of strerror(). This introduces
9411   Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
9412
9413 - Tor Arntsen spell-fixed lots of libcurl man pages.
9414
9415 - Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
9416   made it not use chdir .. to go back, as that isn't very good when you've
9417   setup a testdir containing symlinks.
9418
9419 - Added a check for strerror_r() in the configure script.
9420
9421 Daniel (23 March 2004)
9422 - Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
9423   use this script for the real distributed testing just yet, but it is only
9424   a matter of time.
9425
9426 - Gisle Vanem provided code that makes curl report a better error message
9427   if --interface fails on windows.
9428
9429 - The regular progress meter is now fixed to never wrap due to long lines. All
9430   fields are now static sized. If the time in the time fields get a time value
9431   that would represent a time that is 100 hours or more (if not, it remains
9432   using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
9433   days and hours) and if that isn't enough it switches to a "NNNd" display if
9434   it is more than 999 days.
9435
9436   Several of the calculations were also moved to fixed-point math instead of
9437   using doubles.
9438
9439 Daniel (22 March 2004)
9440 - Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
9441   used to do if CURLOPT_NOBODY is set TRUE.
9442
9443 - Kevin Roth patched the cygwin package makefile and README to adjust to
9444   new cygwin packaging guidelines.
9445
9446 - Enabled "NT responses" in the NTLM authentication. Doing this simply means
9447   that we provide an extra chunk of data in each "type-3 message". The only
9448   reason for doing this is that it seems that using only the "Lanmanager hash"
9449   (as we've been doing until now) doesn't support passwords longer than 14
9450   characters and it turns out there are users out there who want to use
9451   libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
9452   updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
9453   #915609
9454
9455 - Moved the generated libcurl version info to a new header file, named
9456   curl/curlver.h. Now interested parties can include ONLY version info, should
9457   anyone want that (and it seems at least some windows resource files would).
9458   Mentioned as issue 27 in TODO-RELEASE.
9459
9460 Daniel (21 March 2004)
9461 - Fixed the root Makefile to use tabs for the netware target. Günter Knauf
9462   pointed this out.
9463
9464 - Marty Kuhrt's VMS cleanup
9465
9466 - Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
9467   with particular pre-determined options.
9468
9469 Version 7.11.1 (19 March 2004)
9470
9471 Daniel (18 March 2004)
9472 - Tor Arntsen brought some info about SGI IRIX:
9473
9474   IRIX supports 3 different executable/object formats, -32, -n32 and -64.
9475   -n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
9476   the 64-bit format.  Libraries for the different formats are in lib, lib32
9477   and lib64 respectively.
9478
9479   We've now adjusted the configure script to adapt to this when scanning for
9480   3rd party libs, such as OpenSSL.
9481
9482 Daniel (17 March 2004)
9483 - Watz pointed out a few missing files in the MSVC project description file.
9484
9485 - Günter Knauf brought patches, code and makefiles to build curl on Novell
9486   NetWare.
9487
9488 Daniel (15 March 2004)
9489 - Lots of libcurl man pages were updated to contain references to other man
9490   pages the recognized way so that they appear as nice hyperlinks in the HTML
9491   versions.
9492
9493 - buildconf now checks the m4 version too, since autoconf requires a GNU m4
9494   version to build proper configure scripts.
9495
9496 Daniel (12 March 2004)
9497 - Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
9498   CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
9499
9500 - David Byron fixed an uninitialized variable case/crash.
9501
9502 Daniel (10 March 2004)
9503 - Jeff Lawson fixed the SSL connection to deal with received signals during the
9504   connect.
9505
9506 - Changed the OS string for win32 to become "i386-pc-win32".
9507
9508 Daniel (9 March 2004)
9509 - Changed the internals to use curl_socket_t for socket variable type. This
9510   should enable us to build with less warnings on Windows, where SOCKET is
9511   used which is an unsigned int, while most other platforms use a mere int.
9512
9513 - Modified lib/config-win32.h to build fine on MSVC again.
9514
9515 Version 7.11.1-pre1 (8 March 2004)
9516
9517 Daniel (8 March 2004)
9518 - Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
9519   larger than 4 bytes.
9520
9521 Daniel (4 March 2004)
9522 - Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
9523
9524 - Modified the test HTTP server a lot to work with the upcoming changes for
9525   PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
9526   García's win32-changes. Improved the logging.
9527
9528 - Fixed the file:-related progress/getinfo stuff a bit more.
9529
9530 Daniel (4 March 2004)
9531 - I corrected a problem with the multi interface when following a Location:
9532   header or when doing multiple-request authentications. A subsequent request
9533   could erroneously re-use a previous connection that was sent with
9534   Connection: close. Christopher R. Palmer reported.
9535
9536 - Andrés García patched curl to prevent warnings while compiling with mingw,
9537   mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
9538   defined.
9539
9540 - When transferring files from a file: URL, the progress meter and other
9541   transfer metrics were not updated properly.
9542
9543 - David Byron provided a "version resource" file to the curl executable for
9544   the windows builds.
9545
9546 Daniel (3 March 2004)
9547 - David Byron's work on making libcurl only require winsock 1.1 on Windows
9548   machines.
9549
9550 - More variable cleanups based on compiler warnings generated by Tor Arntsen's
9551   autobuilds with MIPSPro.
9552
9553 - Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
9554
9555 - Applied Tom Bates' patch to build on nsr-tandem-nsk.
9556
9557 - Dan Fandrich corrected some flaws in the configure GSS detection.
9558
9559 Daniel (2 March 2004)
9560 - Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
9561   curl_off_t types internally.
9562
9563 Daniel (1 March 2004)
9564 - Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
9565   response, that signals if this libcurl supports >2GB files. curl -V now
9566   outputs 'Largefile' in the Features: field if this is the case. Most systems
9567   are likely to support this.
9568
9569 - We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
9570   to printf() curl_off_t variables. We also modified the libcurl sources to
9571   use this define instead of the previous %Od approach (although I've left the
9572   O-flag functional in the code). This should also prevent compilers to warn
9573   on the home-grown option.
9574
9575 - Fixed the resume-check code to test for a working resume at the end of the
9576   headers and not at the first body-byte.
9577
9578 - CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
9579   you need a global DNS cache for whatever reason, use the share interface and
9580   you'll get a global cache that works the way it should work. You can even
9581   have any number of global caches, all at your command. This is now also
9582   mentioned in the docs.
9583
9584 - Made the *printf code support the z-flag to enable size_t printf() in a
9585   manner similar to how glibc allows it. To make printfing of this work on
9586   platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
9587
9588 - Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
9589   CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
9590   loop without succeeding to authenticate due to the new connection that was
9591   made for all round-trips in the authentication. Now, the FRESH_CONNECT is
9592   remade to only matter for the first connection made with curl_easy_perform()
9593   and all the rest that might follow due to FOLLOWLOCATION or HTTP
9594   authentication are now ignoring that option.
9595
9596 - Adjusted the QUIT code slightly since it could core-dump.
9597
9598 - Corrected the test suite's FTP server to provide a correct size to the
9599   'verifiedserver' request.
9600
9601 Daniel (27 February 2004)
9602 - Joe Halpin made the FTP code send QUIT on the control connection before
9603   disconnecting the TCP connection. This is what good-behaving ftp clients
9604   should do.
9605
9606 Daniel (26 February 2004)
9607 - David Byron updated several files to make curl build fine on MSVC 6. He
9608   also added the 'buildconf.bat' that works like the 'buildconf + configure'
9609   combo does on unixes.
9610
9611 - Gisle Vanem made the memdebug stuff support calloc() as well.
9612
9613 - Tor Arntsen pointed out that testcurl.sh needed to remove the generated
9614   files in order to have them re-generated in each build.
9615
9616 - Andy Serpa found out that the share interface did not enjoy life when not
9617   having the lock and unlock callbacks set, even though documented to be
9618   OK. It still is OK, and now the code won't segfault anymore!
9619
9620 Daniel (25 February 2004)
9621 - Based on a patch by Greg Hewgill I modified how long long is used in the
9622   mprintf code, as we can use a 64bit type with MSVC that is a long long
9623   equivalent. This corrects some weird large file behaviors on windows.
9624
9625 - Tor Arntsen helped me work out --enable-debug to work better with different
9626   versions of the gcc and icc compilers.
9627
9628 - Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
9629
9630 Daniel (22 February 2004)
9631 - Applied the final pieces of Gisle Vanem's patch that brings a working name
9632   resolve timeout to the windows versions of curl!
9633
9634 Daniel (21 February 2004)
9635 - David Byron's fix to allow the speed-limit logic work even if you set
9636   limit-rate. It does work on the expense of the rate limiter.
9637
9638 Daniel (20 February 2004)
9639 - configure --enable-debug with gcc now also tries to detect the icc compiler
9640   (which somehow gets treated as if it is a gcc) to stop using all the gcc
9641   options with it, and we also provide -isystem options for each extra -I
9642   option the configure script has figured out (for OpenSSL, kerberos, zlib,
9643   Heimdal etc). This of course to prevent warnings on headers we don't have
9644   control of.
9645
9646 Daniel (19 February 2004)
9647 - Doug Porter made libcurl use the HOME environment variable before the
9648   getpwuid results when looking for .netrc files.
9649
9650 - If 'configure --enable-debug' is used with gcc, it now checks which gcc
9651   version it is and uses as picky compiler options as possible for the
9652   particular version.
9653
9654 - Code that can be used in both the lib and in the curl app is now made to use
9655   the curlx_ prefix. The first function to be available like this is the
9656   curlx_strtoll() function. This is made to allow the app to use existing code,
9657   but without polluting the libcurl API. Further explanations posted here:
9658
9659     http://curl.haxx.se/mail/lib-2004-02/0215.html
9660
9661 Daniel (18 February 2004)
9662 - Fixed buildconf to not use "which" as AIX and Tru64 have what have been
9663   referred to as "horribly broken 'which' programs".
9664
9665 - Made sure dns cache timeout set to -1 really means caching forever.
9666
9667 Daniel (17 February 2004)
9668 - Made it possibly to build c-ares with the libcurl memdebug system to better
9669   track memory.
9670
9671 Daniel (16 February 2004)
9672 - When using ares, we now initialize the ares 'channel' in curl_easy_init()
9673   and re-use that same handle during the entire curl handle's life-time. It
9674   improves performance.
9675
9676 - Fixed a problem when displaying verbose for IPv6-enabled libcurls and
9677   re-used connections. Problem reported and fix verified by Grigory Entin.
9678
9679 - Jeff Lawson fixed the version-check in the SOCKS5 code.
9680
9681 Daniel (15 February 2004)
9682 - Fixed a case where a host cache entry was not flagged in-use properly when a
9683   cached entry was used.
9684
9685 - Andrés García's patch that checks for winmm in the configure script was
9686   applied.
9687
9688 Daniel (13 February 2004)
9689 - Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
9690   specific network interface.
9691
9692 - Greg Hewgill found out that the variable holding 'contentlength' wasn't big
9693   enough to hold a large file!
9694
9695 - Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
9696   department, and there was another potential problem in the name resolve code
9697   too.
9698
9699 Daniel (11 February 2004)
9700 - Removed a few variables that were only set but never used, as some compilers
9701   warn about that and we do not like compiler warnings!
9702
9703 - Removed the need for symlinks in the tests/data directory if curl is built
9704   outside of the source directory and the 'make test' is used. This was done
9705   by providing a "source dir path" to the scripts/servers.
9706
9707 - Now, if the configure script can't find an nroff tool or an option to nroff
9708   to use to convert man pages with, it will completely switch off the built-in
9709   manual.
9710
9711 - 'configure --disable-manual' completely disables the built-in manual from
9712   the curl command tool.
9713
9714 - Andrés García fixed the configure script and a minor source edit, and now
9715   he has managed to get msys/mingw to run configure and then build!
9716
9717 Daniel (9 February 2004)
9718 - The default HTTP Accept: header was modified to the much simpler
9719   "Accept: */*".
9720
9721 - P R Schaffner updated the curl-ssl spec file for RPMs.
9722
9723 - Dominick Meglio brought lots of documentation for the share interface's man
9724   pages that were previously missing.
9725
9726 - Tor Arntsen provided a patch that makes libcurl work-around a bug in the
9727   AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
9728   IPv6-enabled AIX builds.
9729
9730 - Ken Rastatter provided portability fixes for the curlgtk.c example, and now
9731   it runs on windows with GTK as well!
9732
9733 Daniel (6 February 2004)
9734 - Andrés García made the configure script find gethostbyname() fine when run
9735   with mingw on windows.
9736
9737 - Modified the ldap code to use proper function pointers all over (instead of
9738   mixed data and function pointers) to work-around the picky MIPSPro compiler
9739   warnings.
9740
9741 - A custom Host: header is only considered if the request is not made by
9742   following a location. After discussions with Tim Baker.
9743
9744 Daniel (5 February 2004)
9745 - The libz part of the configure script now only set the two libz-related
9746   define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
9747   If one is missing, none of the defines is set.
9748
9749 - Andrés García fixed the Mingw makefiles.
9750
9751 - Len Krause reported that curl 7.9.X could do uploading from stdin without
9752   doing chunked encoding, which current curl cannot do even if you disable
9753   the transfer-encoding chunked header. Now it can again, and test case 98
9754   verifies this functionality.
9755
9756 - Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
9757   the IPv6-code for PORT work on AIX 5.2. We now also provide (better) error
9758   messages when bailing out in the that function.
9759
9760 - Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
9761   compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
9762   numerous minor quirks to make less warnings appear.
9763
9764 Daniel (4 February 2004)
9765 - Based on a patch by Gilad, we now use the custom timeouts when waiting for a
9766   server to connect when using FTP PORT. Previously we always waited 10
9767   seconds, no more no less. We now also changed the default (if no timeout is
9768   set) to wait 60 seconds for the connect before we fail.
9769
9770 Daniel (3 February 2004)
9771 - Modified to link with c-ares instead of ares.
9772
9773 Daniel (2 February 2004)
9774 - Added a configure test to check for which option the (g)nroff tool wants
9775   to extract plain text from the man pages. Tor Arntsen told us the AIX
9776   version of GNU gnroff doesn't support -man!
9777
9778 - Added an undef of accept in memdebug.h to make curl build with --enable-debug
9779   on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
9780
9781 - curl_version() now includes c-ares version info, and curl_version_info() now
9782   returns a struct with version SECOND that also includes that info.
9783
9784 - We are now officially using c-ares for asynch name resolves. c-ares is the
9785   new library, based on the existing ares but with an extended and slightly
9786   modified API.
9787
9788 - Dirk improved the ares timeout code, and now we also include the ares error
9789   string when we fail to resolve a name.
9790
9791 - Another tweak to make test case 91 run fine. Now we have another bit on a
9792   connection that is set true if the connection is marked for 'retry'. That
9793   makes the connection get closed and re-opened and the HTTP-done code must
9794   not complain on the fact that no data was received.
9795
9796 - Based on Dirk Manske's patch, I modified the name resolving with ares to
9797   feature a timeout for really slow lookups. It now defaults to 300 seconds,
9798   but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
9799   is set.
9800
9801 - Fixed the inclusion of ca-bundle.h to really use the one in the build dir
9802   before the one in the source dir. Domenico Andreoli found out and reported.
9803
9804 - Added test case 97, a simple POST with a custom Content-Type header
9805   replacing the original application/x-www-form-urlencoded one.
9806
9807 Daniel (30 January 2004)
9808 - Added code that attempts to fix the test 91 failure. As has been figured out
9809   by Patrick Smith, the error happens because we re-use a connection that the
9810   server is just about to close and we even manage to send away the request
9811   without seeing an error. On the first read attempt we get a ECONNRESET.
9812   Starting now, we attempt to detect this and if so, we retry the request on a
9813   fresh connection.
9814
9815 - I added test case 510 which is a custom program that does a POST using a
9816   read callback, with chunked transfer-encoding.
9817
9818 - Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
9819
9820 - Added --socks as a recognized option. It works just like --proxy but sets a
9821   SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
9822   while, just not provided by the curl tool. This does not currently work for
9823   IPv6-enabled libcurls.
9824
9825 Daniel (29 January 2004)
9826 - Stadler Stephan pointed out that src/hugehelp.c included config.h without
9827   checking the define if its present...
9828
9829 - Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
9830   system.
9831
9832 - Dan Fandrich compiled curl with lots of aggressively pedantic compiler
9833   options and thus found a few minor errors and did some general cleanups to
9834   avoid them.
9835
9836 - Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
9837   sockets properly.
9838
9839 Daniel (28 January 2004)
9840 - Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
9841   CRLF combo properly.
9842
9843 Daniel (27 January 2004)
9844 - Made the response-headers during a CONNECT request to a proxy get passed on
9845   as regular headers, so they appear with -i/-I options and similar.
9846
9847 - Based on a patch by Gisle Vanem, I've made the progress meter display
9848   properly switch to a GB-display when more than 9999MB have been transfered.
9849
9850 Daniel (23 January 2004)
9851 - Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
9852   required didn't have one and was on the last line of a file.
9853
9854 - More Windows fixes for large files. We now build and link with
9855   ../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
9856   libcurl function... Perhaps we should consider a 'common' dir or similar
9857   where we put source code used in both the lib and the client. Or perhaps
9858   we'll just make this function available in the library...
9859
9860 - Vincent Bronner found out the socks5 code crashed when no username was
9861   set.
9862
9863 - Vincent Bronner spotted a problem with proxy username/password when re-using
9864   a persistent connection.
9865
9866 - Fixed the progress meter display for files larger than 2^31 bytes. Gisle
9867   Vanem reported.
9868
9869 Daniel (22 January 2004)
9870 - Gisle Vanem made strtoll() get used when curl is built with the mingw
9871   compiler.
9872
9873 - Gisle Vanem fixed the compressed help text code to display properly.
9874
9875 - Removed the '#define HttpPost' from the public header file, as curl_httppost
9876   is the proper name and it has been for quite some time now. Fixes another
9877   name space pollution.
9878
9879 - Added 'curl_off_t' typedef in the public header file, to be used to provide
9880   large file sizes to the *_LARGE options. Adjusted the code all over to use
9881   this variable type instead of 'off_t'. This is an attempt to make the large
9882   file support work on more platforms. The configure script now checks the
9883   size of the curl_off_t instead of the plain off_t.
9884
9885 Version 7.11.0 (22 January 2004)
9886
9887 Daniel (21 January 2004)
9888 - Removed the defines in the public header file with TIMECOND_ prefixes. They
9889   have been obsolete since April 22nd 2002, and if this causes anyone any
9890   problems now it is very easy to just add CURL_ to the names. This corrects
9891   this name space pollution.
9892
9893 Daniel (19 January 2004)
9894 - David Byron cleaned up how --trace with no option was treated, and also
9895   arguments in a config file without a required parameter!
9896
9897 Daniel (16 January 2004)
9898 - Gisle Vanem fixed a few issues where compilers warned about variables
9899   possibly being used unassigned.
9900
9901 - Minor Interix build problem fixed.
9902
9903 Daniel (15 January 2004)
9904 - Peter Sylvester pointed out some necessary escaping needed in the
9905   acinclude.m4 file when automake 1.8 or later is used.
9906
9907 Daniel (14 January 2004)
9908 - Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
9909   Steve Green provided on december 3...
9910
9911 Daniel (13 January 2004)
9912 - Luke Call made the win32 version of the password prompting function support
9913   backspace.
9914
9915 - Dan Fandrich fixed the hugehelp source file to contain both a compressed and
9916   an uncompressed version in the distribution, so that more people easier can
9917   build curl with the compressed version.
9918
9919 - Diego Casorran brought another AmigaOS build patch for native Amiga builds.
9920
9921 - Matt Veenstra updated the Mac OS X framework files.
9922
9923 - Brian R Duffy brought a section to the INSTALL file on how to build a
9924   SSL-enabled curl using the free Borland C++ compiler. He also updated the
9925   Borland lib/Makefile.b32.
9926
9927 - I fixed the test case 509 which I broke yesterday. Now the libtest are
9928   compiled with an include path that points to the library's source dir, so
9929   that the libtests can include files from the source tree. This was made to
9930   make it possible to use the USE_SSLEAY define in the library test files.
9931
9932 Daniel (12 January 2004)
9933 - Peter Sylvester brought code that now allows a callback to modified the URL
9934   even when the multi interface is used, and then libcurl will simulate a
9935   "follow location" to that new URL. Test 509 was added to test this feature.
9936
9937 - Extended the time we retry servers in the test script, and I also made it
9938   retry the https and ftps servers before they are considered bad. I believe
9939   the previous approach could turn problematic on really slow hosts.
9940
9941 Version 7.11.0-pre1 (12 January 2004)
9942
9943 Daniel (11 January 2004)
9944 - Dominick Meglio pointed out FTPS should use default port 990 according to
9945   IANA.
9946
9947 Daniel (8 January 2004)
9948 - Fixed the SPNEGO configure check to not use -R or other non-portable options
9949   in the LDFLAGS. Reported by Pierre in bug report #872930.
9950
9951 Daniel (5 January 2004)
9952 - Dan Fandrich provided a fix on our zlib usage.
9953
9954 - David J Meyer's patch that introduce large file support to libcurl was
9955   applied. New curl_easy_setopt options that accept 'off_t' arguments are:
9956
9957   INFILESIZE_LARGE
9958   RESUME_FROM_LARGE
9959   MAXFILESIZE_LARGE
9960
9961 Daniel (4 January 2004)
9962 - Based on Dominick Meglio's comments, I made our private version of
9963   gettimeofday() declared static. This would otherwise collide with the same
9964   function in other libs (like ares for example).
9965
9966 - Added Dominick Meglio's description on how to build libcurl with ares
9967   on win32.
9968 Daniel (19 December)
9969 - CURLOPT_IPRESOLVE was not possible to set.
9970
9971 - Gisle Vanem updated the djgpp build files.
9972
9973 Daniel (18 December)
9974 - John McGowan reported a redirect-problem that happened if a site used a URL
9975   like "url.com?var=content" (without a proper slash) and from that address
9976   redirected the user-agent to an absolute directory.
9977
9978 - David Byron made libcurl build fine with both the .NET and VC6 versions of
9979   MSVC
9980
9981 Daniel (16 December)
9982 - Updated test 506 since it started to fail after the cache prune change
9983   yesterday. I also changed it slightly to feature a counter in each debug
9984   output for easier tracing.
9985
9986 Daniel (15 December)
9987 - Old DNS cache entries are now only pruned after curl is done with a request,
9988   and not in the actual name resolve call.
9989
9990 - corrected the --enable-ares patch
9991
9992 - Giuseppe Attardi found and fixed a problem within libcurl that re-used
9993   already freed memory.
9994
9995 Daniel (10 December)
9996 - Gisle Vanem reported that the dict support was broken. I broke it during my
9997   ftps-changes overhaul. I've now added a 'curlassert' function that can be
9998   used to verify expressions, to prevent future errors of the same
9999   kind. They're only present in debug-builds.
10000
10001 - Diego Casorran made curl and libcurl possible to build natively (no more
10002   need for the ixemul library) on AmigaOS.
10003
10004 - Dominick Meglio made configure --enable-ares support a given path to the
10005   installed ares lib, instead of always using it in the curl source tree.
10006   This also fixed the curl-config --libs output.
10007
10008 - Eric S. Raymond patched a very minor man page format error in
10009   libcurl-errors.3
10010
10011 Daniel (8 December)
10012 - Fixed the flaw that made -lz appear twice on the link command line.
10013
10014 - After correspondence with Gisle Vanem, I changed the 'connection aborted'
10015   error text when the FTP response reader failed to more specificly identify
10016   what the problem is.
10017
10018 - Based on a patch from Dominick Meglio, curl-config --feature now outputs
10019   'AsynchDNS' as a feature if libcurl was built with ares. The feature name
10020   is the same that 'curl -V' outputs, for simplicity.
10021
10022 Daniel (3 December)
10023 - Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
10024   specific stuff in the client code to a separate header file.
10025
10026 - Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
10027   code fail.
10028
10029 - swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
10030   when Transfer-Encoding: chunked is used, as mandated by RFC2616.
10031
10032 Daniel (2 December)
10033 - --ftp-pasv was added, which serves the only purpose of overriding a
10034   previously set --ftpport option. Starting now, --ftp-port is a recognized
10035   alias for --ftpport for consistency.
10036
10037 - Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
10038   send() and recv(). I added checks for the define in the configure script and
10039   adjusted the code accordingly. If the symbol is present, we won't attempt
10040   to ignore the SIGPIPE signal.
10041
10042 Daniel (1 December)
10043 - Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
10044   run fine against its FTPS implementation. Now these FTPS-related things
10045   work:
10046    o explicit and implicit FTPS
10047    o active (PORT) and passive (PASV)
10048    o upload and download
10049    o verified against bsdftpd-ssl and RaidenFTPD
10050
10051 Daniel (27 November)
10052 - James Clancy made the Borland Makefiles up to date.
10053
10054 - Markus Moeller improved the SPNEGO detection in the configure script.
10055
10056 Daniel (25 November)
10057 - Dave May filed bug report #848371, identifying that if you'd do POST over a
10058   proxy to a https server, libcurl didn't POST at all, it just made a GET! It
10059   turned out to be because libcurl wrongly didn't consider the authentication
10060   "negotiation phase" to be complete yet.
10061
10062   I added test case 95 to verify my fix for this.
10063
10064 Daniel (24 November)
10065 - Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
10066   seems to work somewhat fine now.
10067
10068   The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
10069   (version 12). There seems to exist quite a few servers that have implemented
10070   the server side of this.
10071
10072   We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
10073   connection and the data connection (dealing with two SSL connections forced
10074   me to change a lot of stuff in libcurl).
10075
10076   Alternatively, and what seems to be the recommended way, we can set the new
10077   option CURLOPT_FTP_SSL to one of these values:
10078
10079      CURLFTPSSL_NOPE,   - do not attempt to use SSL
10080      CURLFTPSSL_TRY     - try using SSL, proceed anyway otherwise
10081      CURLFTPSSL_CONTROL - SSL for the control connection or fail
10082      CURLFTPSSL_ALL     - SSL for all communication or fail
10083
10084   Any failure to set the desired level will make libcurl fail with the error
10085   code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
10086   attempt to be made securely.
10087
10088   I've been able to login and get files (passively) from Mathias' server using
10089   both ftps:// and CURLOPT_FTP_SSL. (I've made 'curl' understand the --ftp-ssl
10090   option that sets CURLFTPSSL_TRY.)
10091
10092 - Gaz Iqbal fixed a range string memory leak.
10093
10094 - Gisle Vanem fixed the Windows builds.
10095
10096 - Added the new FTPSSL defines in curl/curl.h
10097
10098 Daniel (20 November)
10099 - Josh Kapell filed bug report #845247 as he found an endless loop when
10100   getting a 407 back from a proxy when no user+password was given. Added test
10101   case 94 to verify the fix.
10102
10103 Daniel (19 November)
10104 - Kevin Roth fixed a progress-bar problem on Windows.
10105
10106 - While working with Nicolas Croiset's bug report #843739, I noticed two minor
10107   problems related to ftp partial downloads: if a partial transfer is
10108   detected, we must close the connection as we cannot know in what state it is
10109   anymore. This looks like a ProFTPD bug:
10110   http://curl.haxx.se/mail/lib-2003-11/0079.html
10111
10112 Daniel (17 November)
10113 - Maciej W. Rozycki made the configure script use a cache variable for the
10114   writable argv test. This way, the default can be overridden better (for
10115   cross-compiles etc)
10116
10117 Daniel (15 November)
10118 - Mathias Axelsson found out libcurl sometimes freed the server certificate
10119   twice, leading to crashes!
10120
10121 Daniel (14 November)
10122 - Siddhartha Prakash Jain found a case with a bad resolve that we didn't
10123   properly bail out from, when using ares.
10124
10125 Daniel (13 November)
10126 - Default Content-Type for parts in multipart formposts has changed to
10127   "application/octet-stream".  This seems more appropriate, and I believe
10128   mozilla and the likes do this. In the same area: .html files now get
10129   text/html as Content-Type. (Pointed out in bug report #839806)
10130
10131 - Gisle Vanem corrected the --progress-bar output by doing a flush of the
10132   output, which apparently makes it look better on at least windows, but
10133   possibly other platforms too.
10134
10135 - Peter Sylvester identified a problem in the connect code, which made the
10136   multi interface on a IPv6-enabled Solaris box do bad. Test case 504 to be
10137   specific. I've spent some time to clean-up the Curl_connecthost() function
10138   now to use less duplicated code for the two different sections: IPv6 and
10139   IPv4.
10140
10141 Daniel (11 November)
10142 - Added CURLOPT_NETRC_FILE. Use this to tell libcurl which file to use instead
10143   of trying to find a .netrc in the current user's home directory. The
10144   existing .netrc file finder is somewhat naive and is far from perfect on
10145   several platforms that aren't unix-style. If this option isn't set when
10146   CURLOPT_NETRC is set, the previous approach will still be used.
10147
10148   The current .netrc check code now also support longer than 256 bytes path
10149   names.
10150
10151 Daniel (10 November)
10152 - Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
10153   written in the source dir if a different build dir is used.
10154
10155 - After Sébastien Willemijns' bug report, we now check the separators properly
10156   in the 229-reply servers respond on a EPSV command and bail out better if
10157   the reply string is not RFC2428-compliant.
10158
10159 Daniel (7 November)
10160 - Based on Gisle Vanem's patch, I made curl try harder to get the home
10161   directory of the current user, in order to find the default .curlrc file.
10162   We're also considering moving out the HOME-dir code from libcurl, and
10163   instead have the app pass in the path to the .netrc file (which is the only
10164   logic left in libcurl that uses the HOME dir). Then curl can use the home
10165   dir for that purpose too.
10166
10167 - Ralph Mitchell's updated testcurl.sh to the script to take an existing
10168   directory name and build/run/test curl in there instead of trying to update
10169   from CVS. Using this approach, the script can now be used to test daily
10170   tarballs etc.
10171
10172 - Gisle Vanem added a "resource file" to the Windows DLL builds, to contain
10173   information such as version number, library name, copyright info etc.
10174
10175 Daniel (6 November)
10176 - curl checks if the existing libcurl supports things like --ntlm, --negotiate
10177   and --krb4 and returns error if not.
10178
10179 - I added three new global defines in the curl/curl.h header:
10180   LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. They
10181   are the three numbers in the library's version number, separated for easier
10182   usage. 'maketgz' was updated accordingly to generate these numbers properly
10183   when building release-archives.
10184
10185 - Uninitialized variable fix, reported by both Marty Kuhrt and Benjamin
10186   Gerard.
10187
10188 - Matt Veenstra provided build files to build libcurl as a "framework" under
10189   Mac OS X. See the lib/libcurl.framework.make for details.
10190
10191 - Removed the defines of TRUE and FALSE from the curl/curl.h header file.
10192   They're not in our name space so we should not fiddle with them.
10193
10194 Daniel (5 November)
10195 - Replaced the man page to HTML converter program with a new one: roffit.
10196   Makes nicer web pages.
10197
10198 Daniel (4 November)
10199 - Troels Walsted Hansen fixed the MSVC makefiles to let them build curl fine
10200   on Windows.
10201
10202 - Kevin Roth corrected the cygwin package generator and spell-fixed the
10203   comment in the ca-bundle.h file.
10204
10205 Version 7.10.8 (1 November 2003)
10206
10207 Daniel (31 October)
10208 - Assume that MDTM on an FTP server returns the timestamp using the UTC time
10209   zone. This changes the time CURLINFO_FILETIME returns for a given file over
10210   FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make
10211   the functionality more similar to how the HTTP one is already working.
10212
10213 - Command line options that take numerical parameters (such as -y, -Y, -C etc)
10214   now report error and exit if the parameter isn't truly a number greater than
10215   or equal to zero. This helps users to notice bad usage earlier. Before, when
10216   a user forgot or missed to add a numerical parameter to an option, the
10217   command line parser would simply "eat" the following option and it would
10218   cause great confusion.
10219
10220 Daniel (30 October)
10221 - David Hull made libcurl deal with NOBODY and HEADER for file:// the same way
10222   it already does for FTP: it provides HTTP-looking headers that provide info
10223   only about the file, without doing the actual transfer. The curl tool then
10224   lets --head do this.
10225
10226 Daniel (29 October)
10227 - runtests.pl now checks for and use valgrind if present. It will redirect the
10228   valgrind results in log/valgrind[num] but it currently doesn't scan that
10229   file for any errors or anything, that is still only made manually.
10230
10231 - David Hull made the file: URL parser also accept the somewhat sloppy file
10232   syntax: file:/path. I added test case 203 to verify this.
10233
10234 Daniel (28 October)
10235 - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
10236   function for some specific versions (reported on 2.2.5 and 2.1.1), and
10237   provided a fix. On Linux machines with these glibc versions, non-IPv6
10238   builds of libcurl would often fail to resolve perfectly resolvable host
10239   names.
10240
10241 Daniel (26 October)
10242 - James Bursa found out that curl_msnprintf() could write the trailing
10243   zero-byte outside its given buffer size. This could happen if you generated
10244   a very long error message as then libcurl would overwrite the ERRORBUFFER
10245   with one byte. Using a non-existing very long local file:// name is one case
10246   that could make this occur.
10247
10248 Daniel (24 October)
10249 - David Hull filed bug report #829827. It identified a problem with -C - if
10250   the full file already was downloaded and thus the server responded with a
10251   416. libcurl would then wrongly use the Content-Length: header and expect
10252   that size to get transfer, causing a "hang" until the server closed the
10253   connection and then an error 18 ("still N bytes data left of the transfer").
10254
10255   Now we don't return any error at all, but I think libcurl should perhaps
10256   return some kind of info since the requested range was out of the size of
10257   the document.
10258
10259 - Based on David Hull's fix in bug report #804599, we now check for solaris and
10260   gcc in configure and set the -mimpure-text link flag for linking the lib
10261   better.
10262
10263 - I've introduced a -t option to the runtests.pl script. With that option set,
10264   the script runs special "memory torture" tests. For each test command line
10265   in that section, the script first runs the command line and counts the total
10266   amount of allocations made. It then runs the exact same command line again,
10267   forcing allocation number N to fail. It will try every N from 1 to the total
10268   number of amounts made. For every invoke, it checks that no memory was
10269   leaked as that would indicate a bad cleanup somewhere in the code.
10270
10271   This is just beginning to work, and I've already made some corrections in
10272   libcurl code. When this code works somewhat fine, I'll make sure 'make test'
10273   in the root dir will run these tests as well.
10274
10275 Daniel (23 October)
10276 - Georg Horn fixed how the CA verification is made. Verifications can now be
10277   made while at the same time the result of it can be ignored. This also
10278   affects the curl tool as -k can now be used together with --cacert or
10279   --capath.
10280
10281 Daniel (22 October)
10282 - Gisle Vanem found out --disable-eprt didn't work and patched it.
10283
10284 - Test case 91 was modified and could now repeat the problem Kevin Roth has
10285   reported, and the bug was fixed.
10286
10287 - Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile
10288   to build a static libcurl that links with a shared OpenSSL using MSVC.
10289
10290 Daniel (21 October)
10291 - Andrés García updated the mingw32 makefiles.
10292
10293 Version 7.10.8-pre5 (21 October 2003)
10294
10295 Daniel (19 October)
10296 - Georg Horn made libcurl output more info on SSL failures when receiving
10297   data.
10298
10299 Version 7.10.8-pre4 (18 October 2003)
10300
10301 Daniel (17 October)
10302 - Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
10303
10304 - Made libcurl show verbose info about what auth type and user name that is
10305   being sent in its HTTP request-headers.
10306
10307 Daniel (16 October)
10308 - Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl
10309   no longer prompt for passwords under any circumstances. Password prompting
10310   was instead moved to curl, which now prompts for password if -u or -U lack
10311   it. This solves the problem Kevin Roth reported when curl prompted for
10312   password twice when doing NTLM authentication.
10313
10314 - I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP-
10315   licensed derivate code.
10316
10317 Daniel (15 October)
10318 - Avoid doing getsockopt() on Windows to verify connects. It seems that this
10319   hogs Windows machines when libcurl is being used multi-threaded (with > ~50
10320   threads). Andrew Fuller helped us verify and test this.
10321
10322 Daniel (14 October)
10323 - Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set.
10324
10325 - Gisle Vanem made libcurl build and work with IPv6 on Windows.
10326
10327 Daniel (13 October)
10328 - Giuseppe Attardi reported yet another segfault with ares and the multi
10329   interface. Me fixed.
10330
10331 - Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am
10332   that was reported about in the debian bug report #212086.
10333
10334   Domenico also fixed two makefiles where we used 'gnroff' instead of the more
10335   portable $(NROFF).
10336
10337 Daniel (12 October)
10338 - Dirk Manske made the share locking around DNS lookups slightly different to
10339   allow the share system's DNS lookups to run somewhat more
10340   independent/faster.
10341
10342 Daniel (9 October)
10343 - Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
10344   an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download
10345   still has a Range header with a garbage value." bug report #820502
10346
10347 - Dominick Meglio made the inet_pton.c file build fine using MSVC.
10348
10349 - The 'sws' test suite web server now #include setup.h from the lib directory.
10350   This makes it more portable easier.
10351
10352 Version 7.10.8-pre3 (8 October 2003)
10353
10354 Daniel (8 October)
10355 - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
10356   addresses, if one of them fails (IPv4 code).
10357
10358 Daniel (7 October)
10359 - Neil Dunbar provided a patch that now makes libcurl check SSL
10360   subjectAltNames when matching certs. This is apparently detailed in RFC2818
10361   as the right thing to do. I had to add configure checks for inet_pton() and
10362   our own (strictly speaking, code from BIND written by Paul Vixie) provided
10363   code for the function for platforms that miss it.
10364
10365 - HTTP POST using the read callback didn't work, as Florian Schoppmann
10366   reported.
10367
10368 Daniel (5 October)
10369 - Shared provided a few fixes to make libcurl build on BeOS
10370   out-of-the-box. New code for BeOS-style non-blocking sockets, provided by
10371   Shard and Jeremy Friesner. Modified the autoconf check for non-blocking
10372   sockets to check for this kind too.
10373
10374 Daniel (4 October)
10375 - Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer
10376   and then set it to NULL in a subsequent one, the previous cookie was still
10377   sent off!
10378
10379 - Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due
10380   to a bad path, it would cause the next transfer to use a bad path as well.
10381
10382 - Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
10383   when working on IP-only names as we then could return "wait" status when the
10384   name in fact already was resolved. I edited the patch slightly to not expose
10385   asynch details to non-ares aware source code.
10386
10387 Daniel (3 October)
10388 - Neil Spring posted the debian bug report #213180, and pointed out that using
10389   the name 'access' in a function prototype is not very wise as some compilers
10390   complain.
10391
10392 - Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source
10393   code that shows how they use ssl and callbacks.
10394
10395 Daniel (2 October)
10396 - James MacMillan's patch makes curl build on QNX 6.2.x.
10397
10398 Daniel (26 September)
10399 - My daughter was born!
10400
10401 Daniel (23 September)
10402 - Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that
10403   particular IP version. They only work for IPv6-enabled libcurls.
10404
10405 - curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to
10406   support that.
10407
10408 Version 7.10.8-pre2 (22 September 2003)
10409
10410 Daniel (22 September)
10411 - Giuseppe Attardi found a segfault in libcurl when using the multi interface
10412   with ares and doing repeated operations against a non-resolving host name.
10413
10414 Daniel (19 September)
10415 - Added the CURLOPT_IPRESOLVE option, that allows an application to select
10416   what kind of IP addresses he wants to use when resolving host names. This
10417   is only interesting when using host names that resolve addresses using more
10418   than one version of IP.
10419
10420 - Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
10421   is built with the FBopenssl libraries. curl_version_info() now returns
10422   info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
10423   with the MIT GSS-library (the Heimdal one still works too).
10424
10425 Daniel (16 September)
10426 - Doing PUT with --digest failed, as reported in bug report #805853.
10427
10428 - Using --anyauth that picked NTLM, and then a redirect closed the connection
10429   and took curl to a second NTLM page made curl fail. Bug report #806328
10430   identified the problem, test case 90 was added to verify the fix.
10431
10432 Daniel (14 September)
10433 - codemastr brought a patch for ares to make the Windows portions of it work
10434   properly on NT4. I uploaded a new diff and updated the docs on where to get
10435   it etc.
10436
10437 - Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a
10438   cached DNS entry even though it may be in use, which caused "random" memory
10439   to get overwritten and thus "random" crashes.
10440
10441 Daniel (12 September)
10442 - Based on a bug report by David Kimdon, I made the runtests.pl script clear
10443   all possible proxy environment variables before the tests are run.
10444
10445 - By default, easy handles within a multi handle now share DNS cache.
10446
10447 - Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for
10448   Microsoft's "Negotiate" authentication as well.
10449
10450 Daniel (11 September)
10451 - A zero-length proxy string confused FTP transfers.
10452
10453 - Bjorn Reese found a case with an uninitialized pointer, only present when
10454   built for ares.
10455
10456 Version 7.10.8-pre1 (8 September 2003)
10457
10458 Daniel (7 September)
10459 - Jurij Smakov found out that the non-OpenSSL MD5 code was not working on
10460   Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects
10461   the problem.
10462
10463 Daniel (5 September)
10464 - Kevin Fisk reported that configure --enable-thread didn't work. I fixed.
10465
10466 - De-macrofied the lib/hash.c source code somewhat.
10467
10468 Daniel (4 September)
10469 - CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
10470   Mueller-Tolk's patch,
10471
10472 Early (4 September)
10473 - Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout
10474   requirements on the FTP server's ability to respond to individual commands
10475   without placing global requirements on transfer or connect time.  Files
10476   affected:
10477     - include/curl/curl.h
10478         Added option CURLOPT_FTP_RESPONSE_TIMEOUT
10479     - lib/ftp.c
10480         Added branch inside Curl_GetFTPResponse to check for
10481         data->set.ftp_response_timeout
10482     - lib/url.c
10483         Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT
10484     - lib/urldata.h
10485         Added ftp_response_timeout to struct UserDefined
10486
10487 Daniel (3 September)
10488 - Peter Pentchev found and fixed two problems in the test suite's web server
10489   code, that made it segfault at times.
10490
10491 - Jörg Mueller-Tolk improved the proxy user+password handling, especially
10492   when providing a blank password.
10493
10494 Daniel (2 September)
10495 - Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
10496   and similar to work.
10497
10498 Daniel (1 September)
10499 - Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current).
10500
10501 - Jeff Pohlmeyer added a proper error message for non-resolving hosts when
10502   using ares for lookups.
10503
10504 Daniel (25 August)
10505 - John McGowan reported that curl -k still failed if the HTTPS server's CN
10506   field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being
10507   set to 1, and libcurl failed if the CN was missing. Starting now, having it
10508   set to 1 will simply output a warning if no CN could be obtained (as having
10509   a mismatch is OK).
10510
10511 Daniel (21 August)
10512 - Vincent Sanders provided a fix for name resolving when linked with uClibc.
10513
10514 Daniel (20 August)
10515 - Gerd v. Egidy provided a patch that makes libcurl store the FTP response
10516   code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE
10517   returns that data. The option is therefore now also known as
10518   CURLINFO_RESPONSE_CODE.
10519
10520 - Antoine Calando found a segfault when doing multi-part/formpost using
10521   the multi interface.
10522
10523 - Antoine Calando pointed out that curl_multi_info_read() didn't set the
10524   msgs_in_queue to 0 properly when returning NULL.
10525
10526 Daniel (19 August)
10527 - I made curl support multiple -T options, as well as -T "{file1,file2}"
10528   style globbing. One -T for each URL is supported.
10529
10530 - Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the
10531   multi interface when trying a non-existing host name.
10532
10533 - Made the libcurl printf code support long longs if available.
10534
10535 - Loren Kirkby pointed out that we did not clean up all SSL-allocated memory
10536   in curl_global_cleanup().
10537
10538 Daniel (17 August)
10539 - Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make
10540   them get the internal defaults restored. Previously this could cause a
10541   segfault. We should aim at having all pointer-related options get restored
10542   to default/safe values when set to NULL.
10543
10544 Version 7.10.7 (15 August 2003)
10545
10546 Daniel (14 August)
10547 - I modified the memdebug system to return failure on memory allocation
10548   functions after a set amount of successful ones. This enables us to test
10549   out-of-memory situations in a controlled manner and we can make sure that
10550   curl/libcurl behaves good in those.
10551
10552   This made me find and fix several spots where we did not cleanup properly
10553   when bailing out due to errors (low memory).
10554
10555 - Corrected test case 74. Made using -o with bad #[num] codes complain and
10556   bail out. Made #[num] support numbers larger than 9 as well. Added test
10557   case 86 for a proper range globbing test as well.
10558
10559 Version 7.10.7-pre4 (12 August 2003)
10560
10561 Daniel (12 August)
10562 - curl_version_info() now returns a flag if libcurl was built with asynch DNS
10563   support, and this is now also displayed with 'curl -V'.
10564
10565 - Added a few new man pages to the docs/libcurl dir: curl_share_init,
10566   curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share.
10567
10568 Daniel (11 August)
10569 - Mike Cherepov made the local binding code work for Windows, which makes
10570   the option CURLOPT_INTERFACE work on Windows as well.
10571
10572 - Vincent Sanders updated the fopen.c example code a lot.
10573
10574 - --proxy-ntlm is now supported by the curl tool. It forces the proxy
10575   authentication to be made using NTLM. It does not yet work for HTTPS over
10576   proxies (or other proxy-tunneling options). Test case 81 and 82 do some
10577   simple initial ntlm testing.
10578
10579 - Found and fixed a minor memory leak on re-used connections with
10580   proxy-authentication.
10581
10582 - I removed -@ and -Z as valid short options. They were very rarely used (@
10583   wasn't even documented).
10584
10585 - Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to
10586   CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH,
10587   but is for the proxy connection only, and HTTPAUTH is for the remote host.
10588
10589 - Fixed loading of cookies with blank contents from a cookie jar. Also made the
10590   cookie functions inform on added and skipped cookies (for cookie debugging).
10591
10592 Version 7.10.7-pre3 (8 August 2003)
10593
10594 Daniel (8 August)
10595 - Applied David Byron's fix for file:// URLs with drive letters included.
10596
10597 - I added the --ftp-create-dirs to the client code, which activates Early's
10598   CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify
10599   it. Added the option to the curl.1 man page too. Added the option to the
10600   curl_easy_setopt.3 man page too.
10601
10602 Daniel (7 August)
10603 - Test case 60 failed on ia64 and AMD Opteron. Fixed now.
10604
10605 - Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the
10606   debian bug tracker). Added test case 74 to verify the fix and to discover if
10607   this breaks in the future.
10608
10609 - "make distcheck" works again.
10610
10611 Version 7.10.7-pre2 (6 August 2003)
10612
10613 Daniel (5 August)
10614 - Duncan Wilcox helped me verify that the latest incarnation of my ares patch
10615   builds fine on Mac OS X (see the new lib/README.ares) file for all details.
10616
10617 - Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
10618   bug report to the libcurl list, both identifying a problem with FTP
10619   persistent connections and how the dir hierarchy was not properly reset
10620   between files.
10621
10622 - David Byron's thoughts on a fixed Makefile in tests/ were applied.
10623
10624 - Jan Sundin reported a case where curl ignored a cookie that browsers don't,
10625   which turned up to be due to the number of dots in the 'domain'. I've now
10626   made curl follow the the original netscape cookie spec less strict on that
10627   part.
10628
10629 Daniel (4 August)
10630 - Dirk Manske added cookie support for the experimental, hidden and still
10631   undocumented share feature!
10632
10633 - Mark Fletcher provided an excellent bug report that identified a problem
10634   with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
10635   properly ignore the body contents of 3XX response that included the
10636   Location: header.
10637
10638 Early (6 August)
10639 - Added option CURLOPT_FTP_CREATE_MISSING_DIRS
10640     This option will force the target file's path to be created if it
10641     does not already exist on the remote system.
10642
10643   Files affected:
10644     - include/curl/curl.h
10645         Added option CURLOPT_FTP_CREATE_MISSING_DIRS
10646     - lib/ftp.c
10647         Added function ftp_mkd, which issues a MKD command
10648         Added function ftp_force_cwd, which attempts a CWD,
10649           and does a MKD and retries the CWD if the original CWD
10650           fails
10651         Modified ftp_perform() to call its change directory function
10652           through a pointer.  The pointer points to ftp_cwd by default,
10653           and is modified to point to ftp_force_cwd IFF
10654           data->set.ftp_create_missing_dirs is not 0.
10655     - lib/url.c
10656         Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS
10657     - lib/urldata.h
10658         Added ftp_create_missing_dirs to struct UserDefined
10659
10660 - Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not
10661   present to do the time comparison, it would fail.
10662   Files affected:
10663     - lib/ftp.c
10664         In ftp_perform(), the call to ftp_getfiletime() used to be followed
10665         by
10666           if (result)
10667             return result;
10668         And then by the code that actually did the time comparison.
10669         The code that did the comparison handled the case where the filetime
10670         was not available (as indicated by info.filetime < 0 or set.timevalue
10671         < 0), so I replaced the if (result) return result with a switch(result)
10672         that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the
10673         normal time comparison.
10674
10675 Daniel (3 August)
10676 - When proxy authentication is used in a CONNECT request (as used for all SSL
10677   connects and otherwise enforced tunnel-thru-proxy requests), the same
10678   authentication header is also wrongly sent to the remote host.
10679
10680   This is a rather significant info leak. I've fixed it now and mailed a patch
10681   and warning to the mailing lists.
10682
10683 Daniel (1 August)
10684 - David Byron provided a patch to make 7.10.6 build correctly with the
10685   compressed hugehelp.c source file.
10686
10687 Version 7.10.7-pre1 (31 July 2003)
10688
10689 Daniel (30 July)
10690 - Jörg Müller-Tolk updated the VC makefile.
10691
10692 - Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
10693   style like other faked HTTP headers when NOBODY and HEADER are used. I
10694   updated two corresponding test cases too.
10695
10696 - Marty Kuhrt pointed out a compilation problem on VMS due to my having
10697   changed a type from long to time_t, and I'm now changing it back to work
10698   more portably...
10699
10700   He also indicated that distributing the src/hugehelp.c in a compressed state
10701   like I accidentally did may not be the smartest move... I've now fixed the
10702   distribute procedure to automatically generate an uncompressed version when I
10703   make release archives.
10704
10705 Daniel (29 July)
10706 - Gisle Vanem brought changes to the mkhelp script for the generation of the
10707   compressed help text on some platforms.
10708
10709 Version 7.10.6 (28 July 2003)
10710
10711 Daniel (28 July)
10712 - François Pons brought a patch that once again made curl deal with ftp and
10713   "double slash" as indicating the root directory. In the RFC1738-fix of April
10714   30, that ability was removed (since it is not the "right" way). So, starting
10715   now we can list the root dir of an ftp server both these ways:
10716
10717     curl ftp://server.com/%2f  as well as
10718     curl ftp://server.com//
10719
10720 Daniel (24 July)
10721 - Henry Bland pointed out that we included sys/resource.h without good reason
10722   in several source files. Without it included, QNX builds better...
10723
10724 - Andrés García updated the mingw makefiles.
10725
10726 Daniel (23 July)
10727 - Tracy Boehrer experienced DNS cache problems and did some nice debugging
10728   and tracking which made it easy for me to correct the problem and Tracy
10729   could verify that it did cure the problem! When re-using a connection we
10730   now make sure we don't re-use the 'connect_addr' struct.
10731
10732 - Daniel Kouril corrected the GSS-Negotiate code.
10733
10734 - Juan F. Codagnone provided fixes to allow curl to build fine on Windows
10735   again.
10736
10737 Daniel (22 July)
10738 - Edited the curl/curl.h include file to build on Windows properly.
10739
10740 Daniel (21 July)
10741 - Moved the proxy credentials from the SessionHandle struct to the connectdata
10742   struct, to make multiple proxy connections with differerent user names work.
10743
10744 - Adjusted the NTLM code to support proxy functionality.
10745
10746 - Made the krb4 stuff compile with the user+password fields moved.
10747
10748 Version 7.10.6-pre4 (21 July 2003)
10749
10750 Daniel (20 July)
10751 - David Gardner pointed out in bug report 770755 that using the FTP command
10752   CWD with a blank argument is a bad idea and I made libcurl skip empty path
10753   segments starting now.
10754
10755 Daniel (18 July)
10756 - Cris pointed out that my fix on July 16th didn't work fully. His pointing
10757   out this (and his patch) also made me realize that we have a very similar
10758   bug in the FTP connection re-use code. We must store a separate user and
10759   password field for each connection we keep (at least for FTP and HTTP+NTLM
10760   connections, so I made us do this unconditionally).
10761
10762 - Since NTLM authenticates connections instead of single requests, I had to
10763   re-arrange how we store the NTLM data and I had to improve the test suite to
10764   finally work properly with persistency to make the NTLM tests run fine
10765   again. This also forced me to have to update lots of HTTP test cases.
10766
10767 Daniel (16 July)
10768 - Cris Bailiff's bug report 768275 pointed out that using Basic auth with
10769   wrong user+password caused an endless loop. Fixed now. He also found out that
10770   we didn't properly authenticate connections with NTLM. Fixed too.
10771
10772 - Dan Winship provided fixes for the NTLM code.
10773
10774 Daniel (5 July)
10775 - Doug Kaufman provided additional fixes for the DOS port.
10776
10777 Daniel (4 July)
10778 - Rick Richardson pointed out that using setvbuf() to achieve non-buffering
10779   on output is no-good for SCO Xenix and other unixes. We switched over to
10780   using plain fflush() instead.
10781
10782 - Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in
10783   the configure script, and I had to change some build stuff to make the new
10784   way work.
10785
10786 - Peter Sylvester's patch was applied that introduces the following:
10787
10788    CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the
10789    OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If
10790    anything but CURLE_OK is returned, that will also be returned by libcurl
10791    all the way back. If this function changes the CURLOPT_URL, libcurl will
10792    detect this and instead go use the new URL.
10793
10794    CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set
10795    with CURLOPT_SSL_CTX_FUNCTION.
10796
10797 Daniel (1 July)
10798 - David Byron provided a patch that allows a client to quit the test suite's
10799   HTTP server.
10800
10801 - Gisle Vanem found and patched a lib handle leak in the ldap code.
10802
10803 Daniel (25 June)
10804 - More NTLM-improvements. Less code. Smaller packets back and forth.
10805
10806 Daniel (23 June)
10807 - Eric Glass provided us with a better doc on NTLM details, and I added more
10808   comments and clarified the current code more. Using the new knowledge, we
10809   should be able to make the NTLM stuff work even better.
10810   Eric's original URL: http://davenport.sourceforge.net/ntlm.html
10811   Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
10812
10813 - Fixed the minor compile problems pre3 had if built without GSSAPI and/or
10814   SSL.
10815
10816 Version 7.10.6-pre3 (19 June 2003)
10817
10818 Daniel (19 June)
10819 - Made curl use curl_free() on memory returned by curl_getenv(), as this
10820   should theoreticly make it possibly to build and run curl and libcurl with
10821   different memory allocation schemes with no problems.
10822
10823 Daniel (18 June)
10824 - Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to
10825   include a better comment in the top for the gzip compressed version.
10826
10827 Daniel (17 June)
10828 - CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication
10829   type(s) you want to use. If more than one is set, libcurl will use one of
10830   the selected one and the one it considers is more secure. Test case 67 and
10831   68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
10832   fetches, and test case 69 and 70 were added for testing authentication
10833   "picking". --anyauth is the new command line tool option, and I also added
10834   --basic for completeness (that's the default type).
10835
10836 - Fixed the runtests.pl script to use the info provided by the new curl -V
10837   output.
10838
10839 - --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it
10840   is meant to be a generic debug conditional.
10841
10842 - curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to
10843   indicate that the library was built with CURLDEBUG set.
10844
10845 - Ralph Mitchell found out that some web applications very badly uses white
10846   spaces in Location: redirects, and apparently IE is a browser (the only
10847   one?) that supports this abomination. Based on Ralph's patch, I added code
10848   that now attempts to replace white spaces with the proper "%20" or "+".
10849   Test case 40 and 42 were added to verify my changes.
10850
10851 - curl -V now also outputs a list of features the available library offers (if
10852   any).
10853
10854 - The curl_version() string now includes "GSS" if libcurl is built with GSSAPI
10855   support.
10856
10857 - David Orrell reported that libcurl still crashed when sending HUGE requests
10858   over HTTPS... I fixed.
10859
10860 Version 7.10.6-pre2 (16 June 2003)
10861
10862 Daniel (16 June)
10863 - curl_version_info() now returns bitmasked information weather NTLM and
10864   GSSNEGOTIATE are supported, since it is doomed to vary on different
10865   installations.
10866
10867 - I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
10868   that is present, and only use our own MD5-code if it isn't.
10869
10870 Daniel (13 June)
10871 - More NTLM help, fixes and patches from Cris Bailiff.
10872
10873 - Marty Kuhrt brought include fixes for making VMS builds warning-free.
10874
10875 Daniel (12 June)
10876 - NTLM authentication works somewhat against the test servers provided by
10877   Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to
10878   CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68
10879   were added for this. NTLM-support requires OpenSSL.
10880
10881 - Dan Fandrich provided a patch, that granted that gzip and libz are available
10882   at build-time, compresses the hugehelp text in the curl command line and
10883   uncompresses it at request. Saves some ~60K in the final output executable.
10884
10885 Daniel (11 June)
10886 - Long day of fighting the NTLM demons.
10887
10888 Daniel (10 June)
10889 - Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead,
10890   and pick method. Supported ones currently are:
10891   CURLAUTH_BASIC     - default selection
10892   CURLAUTH_DIGEST    - formerly CURLOPT_HTTPDIGEST
10893   CURLAUTH_GSSNEGOTIATE
10894
10895 - Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in
10896   the IETF draft draft-brezak-spnego-http-04.txt. In use already by various
10897   Microsoft web applications. --negotiate is the new family member. To take
10898   advantage of this, you need one of these packages:
10899
10900   o Heimdal Kerberos5               http://www.pdc.kth.se/heimdal/heimdal.html
10901   o GSSAPI from Globus                   http://www.globus.org/
10902   o GSSAPI libraries from MIT Kerberos5  http://web.mit.edu/kerberos/www/
10903
10904 - A missing ending bracket (']') while doing URL globbing could lead to a
10905   segfault. While fixing this, I also introduced better error reporting in the
10906   globbing code. (All this is application code outside libcurl.)
10907
10908 Daniel (6 June)
10909 - David Orrell found out that sending a huge GET request over HTTPS could
10910   make libcurl fail and return an error code.
10911
10912 Daniel (2 June)
10913 - Richard Bramante found out that "Content-Length: 0" was not properly used by
10914   libcurl if the response-headers indicated that the connection would be
10915   closed.
10916
10917 - David Byron's patch was applied, that makes the --progress-bar take the
10918   local size into account when doing resumed downloads.
10919
10920 - Feedback from Serge Semashko made me change the error message returned when
10921   CURLE_HTTP_RETURNED_ERROR is returned.
10922
10923 - Anonymous in bug report #745122 pointed out that we should really be using
10924   SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL
10925   implementations.
10926
10927 Daniel (27 May)
10928 - Andreas Ley and Rich Gray helped me point out that no version of HP-UX has
10929   the sys/select.h header file so including it unconditionally in curl/multi.h
10930   is not a good thing. Now we check for HPUX and avoid using that header on
10931   such systems.
10932
10933 - Rudy Koento experienced problems with curl's recent habit of POSTing data in
10934   two separate send() calls, first the headers and then the data. I've now
10935   made a fix that for static and known content that is less than 100K in size,
10936   everything is now sent in one single system call again. This is also better
10937   for network performance reasons.
10938
10939 - I modified the main makefile to not build the test suite and a few other
10940   unnecessary things by default. Now, the test suite is built when 'make test'
10941   is run.  This reduces build time for those who don't care for the test
10942   suite, and it also reduces confusion for people using platforms where the
10943   test suite build fails!
10944
10945 Daniel (26 May)
10946 - Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows,
10947   which is now corrected.
10948
10949 - Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5
10950   proxy a little too much like as if it was a http proxy.
10951
10952 Daniel (23 May)
10953 - Ricardo Cadime found a socket leak when listing directories without
10954   contents. Test cases 144 and 145 were added to verify the fix.
10955
10956 - Rudy Koento found yet another problem when a HTTP server returns only a
10957   single-line of contents without any headers at all. libcurl then failed to
10958   count the data, thus returning error 52 "no contents". Test case 66 was
10959   added to verify that we now do right.
10960
10961 Version 7.10.6-pre1 (23 May 2003)
10962
10963 Daniel (23 May)
10964 - Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
10965
10966 Daniel (22 May)
10967 - David Remahl set up a test-server for me providing Digest authentication,
10968   and I wrote the first working code that support it. The test suite was
10969   modified slightly as well to work better for it and --digest was added to
10970   the command line options (and CURLOPT_HTTPDIGEST to the library)...  RFC2617
10971   has all the gory details.
10972
10973 Daniel (21 May)
10974 - David Balazic pointed out that curl_unescape() didn't check that %-codes
10975   were correctly followed by two hexadecimal digits when it unescape strings.
10976   Now, we do the check and only %XX codes are unescaped if the X letters are
10977   hexadecimals.
10978
10979 - Gisle Vanem made curl build with djgpp on DOS.
10980
10981 - Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is
10982   shown with curl -M.
10983
10984 Daniel (20 May)
10985 - Gisle Vanem provided a fix that makes libcurl more conservative, not
10986   expecting h_aliases of the hostent struct to always be non-NULL.
10987
10988 Daniel (19 May)
10989 - As requested by Martin Michlmayr in Debian bug report #193630, libcurl now
10990   supports user name and password in the proxy environment variables. Added
10991   test case 63 to verify this.
10992
10993 Version 7.10.5 (19 May 2003)
10994
10995 Daniel (15 May)
10996 - Changed the order for the in_addr_t testing, as 'unsigned long' seems to be
10997   a very common type inet_addr() returns.
10998
10999 Daniel (14 May)
11000 - George Comninos provided a fix that calls the progress meter when waiting
11001   for FTP command responses take >1 second. It'll make applications more
11002   "responsive" even when dealing with very slow ftp servers.
11003
11004 Daniel (12 May)
11005 - George Comninos pointed out that libcurl uploads had two quirks:
11006    o when using FTP PORT command, it used blocking sockets!
11007    o it could loop a long time without doing progress meter updates
11008   Both items are fixed now.
11009
11010 Daniel (9 May)
11011 - Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
11012   set to "".  This frees the application from having to know which encodings
11013   the library supports.
11014
11015 - Dan Fandrich pointed out we had three unnecessary files in CVS that is
11016   generated with libtoolize, so they're now removed and libtoolize is invoked
11017   accordingly in the buildconf script.
11018
11019 - Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the
11020   given name is a network interface gave a real performance penalty on Linux,
11021   so now we more appropriately first check if it is an IP number and if so
11022   we don't check for a network interface with that name.
11023
11024 - CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts
11025   to use EPRT and LPRT before the traditional PORT command. The command line
11026   tool sets this option with '--disable-eprt'.
11027
11028 Version 7.10.5-pre2 (6 May 2003)
11029
11030 Daniel (6 May)
11031 - Kevin Delafield reported another case where we didn't correctly check for
11032   EAGAIN but only EWOULDBLOCK, which caused badness on HPUX.
11033
11034 Daniel (4 May)
11035 - Ben Greear noticed that the check for 'writable argv' exited the configure
11036   script when run for cross-compiling, which wasn't nice. Now it'll default to
11037   no and output a warning about the fact that it was not checked for.
11038
11039 Daniel (2 May)
11040 - Added test case 62 and fixed some more on the cookie sending with a custom
11041   Host: header set.
11042
11043 Daniel (1 May)
11044 - Andy Cedilnik fixed a few compiler warnings.
11045
11046 - Made the "SSL read error: 5" error message more verbose, by adding code that
11047   queries the OpenSSL library to fill in the error buffer.
11048
11049 Daniel (30 Apr)
11050 - Added sys/select.h include in the curl/multi.h file, after having been
11051   reminded about this by Rich Gray.
11052
11053 - I made each test set its own server requirements, thus abandoning the
11054   previous system where the test number implied what server(s) to use for a
11055   specific test.
11056
11057 - David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so
11058   that libcurl now uses one CWD command for each path part. A bunch of test
11059   cases were fixed to work accordingly.
11060
11061 - Cookie fixes:
11062
11063   A. Save domains in jars like Mozilla does. It means all domains set in
11064      Set-Cookie: headers are dot-prefixed.
11065   B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars
11066      (the second column).
11067   C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns
11068      both domains with too few dots or domains that are outside the currently
11069      operating server host's domain.
11070   D. Set the path part by default to the one used in the request, if none was
11071      set in the Set-Cookie line.
11072
11073   To make item C really good, I also made libcurl notice custom Host: headers
11074   and extract the host name set in there and use that as the host name for the
11075   site we're getting the cookies from. This allows user to specify a site's
11076   IP-address, but still be able to receive and send its cookies properly if
11077   you provide a valid Host: name for the site.
11078
11079 Daniel (29 Apr)
11080 - Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
11081   when using the multi interface (too).
11082
11083 Version 7.10.5-pre1 (23 Apr 2003)
11084
11085 Daniel (23 Apr)
11086 - Upgraded to libtool 1.5.
11087
11088 Daniel (22 Apr)
11089 - Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
11090   return CURLE_OK no matter what happens.
11091
11092 - Dan Fandrich fixed some gzip decompression bugs and flaws.
11093
11094 Daniel (16 Apr)
11095 - Fixed minor typo in man page, reported in the Debian bug tracker.
11096
11097 Daniel (15 Apr)
11098 - Fixed some FTP tests in the test suite that failed on my Solaris host, due
11099   to the config.h not being included before the system headers. When done that
11100   way, it did get a mixed sense of if big files are supported or not and then
11101   stat() and fstat() (as used in test case 505) got confused and failed to
11102   return a proper file size.
11103
11104 - Formposting a file using a .html suffix is now properly set to Content-Type:    text/html.
11105
11106 Daniel (14 Apr)
11107 - Fixed the SSL error handling to return proper SSL error messages again, they
11108   broke in 7.10.4. I also attempt to track down CA cert problems and then
11109   return the CURLE_SSL_CACERT error code.
11110
11111 - The curl tool now intercepts the CURLE_SSL_CACERT error code and displays
11112   a fairly big and explanatory error message. Kevin Roth helped me out with
11113   the wording.
11114
11115 Daniel (11 Apr)
11116 - Nic Hines provided a second patch for gzip decompression, and fixed a bug
11117   when deflate or gzip contents were downloaded using chunked encoding.
11118
11119 - Dan Fandrich made libcurl support automatic decompression of gzip contents
11120   (as an addition to the previous deflate support).
11121
11122 - I made the CWD command during FTP session consider all 2xy codes to be OK
11123   responses.
11124
11125 Daniel (10 Apr)
11126 - Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash
11127   after the host name, but still had "?" and parameters appended, as in
11128   "http://hostname.com?foobar=moo", were not properly parsed by libcurl.
11129
11130 Daniel (9 Apr)
11131 - Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as
11132   for HTTP. This then made -z work for ftp transfers too. Added test case 139
11133   and 140 for verifying this.
11134
11135 - Getting the file date of an ftp file used the wrong time zone when
11136   displayed. It is supposedly always GMT. Added test case 141 for this.
11137
11138 - Made the test suite's FTP server support MDTM.
11139
11140 - The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs
11141   CURLINFO_HEADER_IN data as well. The most notable effect from this is that
11142   using curl -v, you get to see the incoming "headers" as well. This is
11143   perhaps most useful when doing ftp.
11144
11145 Daniel (8 Apr)
11146 - James Bursa fixed a flaw in the Content-Type extraction code, which missed
11147   the first letter if no space followed the colon.
11148
11149 - Magnus Nilsson pointed out that share.c was missing in the MSVC project
11150   file.
11151
11152 Daniel (6 Apr)
11153 - Ryan Weaver provided a patch that makes the CA cert bundle not get installed
11154   anymore when 'configure --without-ssl' has been used.
11155
11156 Daniel (4 Apr)
11157 - Martijn Broenland found another cases where a server application didn't
11158   like the boundary string used by curl when doing a multi-part/formpost. We
11159   modified the boundary string to look like the one IE uses, as this is
11160   probably gonna make curl work with more applications.
11161
11162 Daniel (3 Apr)
11163 - Kevin Roth reported that a bunch of tests fails on cygwin. One set fails
11164   when using perl 5.8 (and they run fine with perl 5.6), and another set
11165   failed because of an artifact in the test suite's FTP server that I
11166   corrected. It turned out the FTP server code was still having a file opened
11167   while the main test script removed it and invoked the HTTP server that
11168   attempted to create the same file name of the file the FTP server kept open.
11169   This operation works fine on unix, but not on cygwin.
11170
11171 Version 7.10.4 (2 Apr 2003)
11172
11173 Daniel (1 Apr)
11174 - Added test case 505 to exercise FTP upload with rename done with libcurl,
11175   and for that I had to extend the test suite's FTP server to deal with the
11176   RNFR and RNTO commands.
11177
11178 Daniel (31 Mar)
11179 - Even more SSL config check modifications after Richard's testing.
11180
11181 Version 7.10.4-pre6 (31 Mar 2003)
11182
11183 Daniel (31 Mar)
11184 - More fixes for the SSL session ID cache checks when SSL configs are changed
11185   between connections. Based on tests and talks with Richard Bramante.
11186
11187 - Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH.
11188   When enabled, it will prevent libcurl from limiting to which host it sends
11189   user+password to when following locations. By default, libcurl only sends
11190   name and password to the original host used in the first URL, but with this
11191   option set it will send the auth info to all hosts it follows location
11192   headers to. The new tool command line option for this is named
11193   "--location-trusted".
11194
11195 - Frankie Fong reported a problem with libcurl if you re-used an easy handle
11196   with a proxy, and you first made a https:// connection to a host and then
11197   switched to a http:// one to the same host. libcurl would then wrongly re-use
11198   the same connection for it and fail to get the second URL properly
11199
11200 Daniel (29 Mar)
11201 - Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
11202   -O" was applied.
11203
11204 Daniel (26 Mar)
11205 - Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and
11206   I could fix the configure problems on redhat 8.1 and 9 in no time thanks to
11207   this. Thanks a bunch Bryan!
11208
11209 Daniel (25 Mar)
11210 - Renamed configure.in to configure.ac
11211
11212 Version 7.10.4-pre5 (25 Mar 2003)
11213
11214 Daniel (25 Mar)
11215 - Richard Bramante provided a fix for a handle re-use problem seen when you
11216   change options on an SSL-enabled connection between requests. Previously,
11217   changing peer verification or host verification and similar things was not
11218   taken into account when a connection were checked for re-use and thus
11219   enabling stricter check between requests on a re-used connection made no
11220   difference and the connection would thus be used erroneously.
11221
11222 Daniel (24 Mar)
11223 - Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a
11224   certificate from Trustcenter that was a demo certificate only that was never
11225   intended to be part of a CA bundle.
11226
11227 Daniel (21 Mar)
11228 - Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
11229   Churchill filed one bug report each, both identifying problems with a second
11230   transfer when doing persistent transfers re-using a connection. Tim's one is
11231   #706624, labeled "Multiple uploads per handle fail" and Michael's #707003
11232   "Does not send Authorization: header when reusing connection". I could track
11233   both down to the same piece of logic and it turned out libcurl was not using
11234   new settings properly when re-using an existing connection. This concerned
11235   both uploading and downloading and involved exactly those pieces these two
11236   reports identified. This code has been this faulty since the day I
11237   introduced persistent connection support in libcurl, more than 2 years ago.
11238
11239 Daniel (20 Mar 2003)
11240 - Five year anniversary. Today five years ago, the first ever curl release saw
11241   the light of day.
11242
11243 Daniel (17 Mar)
11244 - Andy Cedilnik corrected flaws in some libcurl example-usage sources.
11245
11246 Daniel (16 Mar)
11247 - Juan F. Codagnone reported that the fix from March 2nd was incomplete.
11248
11249 - Added code to the configure.in to check for select() argument types. I've
11250   not made any code use the results just yet though.
11251
11252 Daniel (15 Mar)
11253 - Gisle Vanem provided two patches to build better on Windows.
11254
11255 - Adjusted the test suite code to better make sure that the server(s) required
11256   for a specific test is properly started before the test case is attempted.
11257   Many tests now run a lot faster than before.
11258
11259 Daniel (14 Mar)
11260 - Another configure.in adjustment made the configure detect functions properly
11261   on HPUX now.
11262
11263 Daniel (13 Mar)
11264 - Philippe Raoult fixed pre4-compile quirks for FreeBSD.
11265
11266 Version 7.10.4-pre4 (13 Mar 2003)
11267
11268 Daniel (13 Mar)
11269 - Added a backup-check for functions that aren't found by AC_CHECK_FUNCS()
11270   as I believe some checks on HPUX need this. At least some of the info given
11271   to us by Rick Jones seemed to indicate this.
11272
11273 Daniel (12 Mar)
11274 - Thomas Tonino found out that if you used the curl tool to do PUT operations
11275   as in 'curl www.foo.com/dir/ -T file' and the file name included for example
11276   space or other characters that don't belong in URLs, curl did not properly
11277   URL encode them before using them in the URL.
11278
11279 - Added an option to configure called --enable-libgcc that simply adds -lgcc
11280   to the LIBS variable, as this seems to be a common problem.
11281
11282 - I modified the configure.in file, so that the headers are now checked in an
11283   order of "viality". We must also make sure to use the "default headers"
11284   parameter to AC_CHECK_HEADERS() so that headers are checked with the proper
11285   prerequisites included (i.e all the major and generally important header
11286   files are included there by default). This might be what we need for various
11287   Sun, HP, AIX and Tru64 systems to behave good again on the header check
11288   front.
11289
11290 - Rick Jones pointed out a few compiler warnings on HP-UX that I addressed.
11291
11292 - I made the configure --help output nicer by using AC_HELP_STRING() a lot
11293   more.
11294
11295 Daniel (11 Mar)
11296 - Christophe Demory fixed the socket sending code to work better on HP-UX
11297   when sending data to a socket that would block. It then returns EAGAIN, not
11298   EWOULDBLOCK.
11299
11300 - Richard Gorton improved the seeding function for systems without a good
11301   and reliable random source.
11302
11303 - Richard Gorton fixed a few warnings that popped up when you built curl
11304   using the Sun compiler on a 64bit SPARC platform.
11305
11306 - Martin C. Martin fixed a case where a connect failure using the multi
11307   interface didn't produce a human readable error string.
11308
11309 Daniel (10 Mar)
11310 - Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version
11311   broke the build on numerous platforms. It seems that libtool 1.4.3 puts some
11312   requirements on what versions of the other tools (autoconf + automake) that
11313   I am not familiar with and thus I couldn't fulfill at this point.
11314
11315   Yes, this is more than mildly frustrating.
11316
11317 Daniel (7 Mar)
11318 - Run libtoolize version 1.4.3.
11319
11320 Version 7.10.4-pre3 (4 Mar 2003)
11321
11322 Daniel (3 Mar)
11323 - Added share.obj to the VC6 and Borland libcurl makefiles.
11324
11325 - Troels Walsted Hansen found and investigated a problem with libcurl on AIX,
11326   presumably only on 4.3 or later. gethostbyname_r() is not returning data
11327   that is possible to "keep" and cache the way libcurl does. But instead these
11328   versions of AIX uses a gethostbyname() that works thread-safely we can
11329   instead use the ordinary gethostbyname() and our pack_hostent() approach to
11330   achieve what we want. The configure script now attempts to detect AIX 4.3 or
11331   later to adjust for this.
11332
11333 Daniel (2 Mar)
11334 - Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a
11335   POST and then back to a GET using the same easy handle.
11336
11337 Daniel (28 Feb)
11338 - Removed the strequal and strnequal defines from curl/curl.h header. They
11339   were never meant for the public header anyway. Philippe Raoult brought it
11340   up.
11341
11342 - James Bursa fixed the RISC OS build.
11343
11344 Daniel (27 Feb)
11345 - Avery Fay pointed out the very misleading curl_multi_info_read man page, and
11346   I updated it to become more accurate.
11347
11348 - Salvatore Sorrentino found a problem with FTP downloading that turned out to
11349   be his FTP server returning size zero (0 bytes) when SIZE was used on a file
11350   while being in BINARY mode. We now make a second check for the actual size
11351   by scanning the RETR reply anyway, even if the SIZE command returned 0.
11352
11353 Daniel (26 Feb)
11354 - Kyle Sallee reported a case where he would do a transfer that didn't update
11355   the progress meter properly. It turned out to be a case where libcurl would
11356   loop a little too eagerly in the transfer loop, which isn't really good for
11357   the APIs, especially not the multi API.
11358
11359 Version 7.10.4-pre2 (24 Feb 2003)
11360
11361 Daniel (24 Feb)
11362 - Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
11363   than 5 could cause a segfault.
11364
11365 - I believe I fixed the 'Expect: 100-continue' behavior that has been broken
11366   for a while (I think since my change dated Dec 10 2002). When this header is
11367   used, libcurl should wait for a HTTP 100 (or timeout) before sending the
11368   post/put data.
11369
11370 Daniel (14 Feb)
11371 - Matthew Clarke provided some info what to modify to make curl build
11372   flawlessly on AIX 3.2.5.
11373
11374 - Martin C. Martin found and fixed a problem in the multi interface when
11375   running on Windows and trying to connect to a port without a listener.
11376
11377 Daniel (13 Feb)
11378 - Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
11379   data to encode.
11380
11381 Daniel (4 Feb)
11382 - Jean-Philippe added the first code that enables the 'share' system. This
11383   should now enable sharing of DNS data between two curl easy handles.
11384
11385 - Incorporated Nico Baggus' fixes to again compile flawlessly on VMS.
11386
11387 - James Bursa corrected a bad comment in the public include file curl/multi.h
11388
11389 - Peter Forret reported one of those error:00000000 cases in libcurl again
11390   when connecting to a HTTPS site, and this time I did discover some oddities
11391   in how curl reports SSL errors back. It could miss showing the actual error.
11392
11393 Version 7.10.4-pre1 (3 Feb 2003)
11394
11395 Daniel (3 Feb)
11396 - Removed things in the docs saying capath doesn't work on Windows, as Julian
11397   Noble told us it works fine.
11398
11399 Daniel (31 Jan)
11400 - Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
11401
11402 Daniel (30 Jan)
11403 - Kevin Roth found out that curl on Windows always checked for the CA cert
11404   bundle using the environment variable and the path scan, even though
11405   -k/--insecure was used.
11406
11407 - Hamish Mackenzie pointed out that curl only did strict host name verifying
11408   if capath or cainfo was used. Now it'll always do it unless -k / --insecure
11409   is used!
11410
11411 - Pavel Cenek pointed out that the Content-Type extraction was done wrongly
11412   as the full string was not fetched. Added test case 57 to verify that curl
11413   does it right now.
11414
11415 Daniel (29 Jan)
11416 - Jamie Wilkinson provided a patch that now makes curl attempt to clear out
11417   "sensitive" command line arguments so that they don't appear in ps outputs
11418   (only on platforms that allow writing to argv[]).
11419
11420 - John McGowan found out that the DEBUGFUNCTION could be called with bad
11421   arguments and thus cause the --trace outputs to go wrong.
11422
11423 - Removed all the emacs local variables from all files. Mats Lidell provided
11424   the new sample.emacs file (for a sample of what to include in your .emacs)
11425   and the curl-style.el that sets a better c-style for editing curl sources.
11426
11427 - Dave Halbakken found a problem with FTP downloads that could accidently
11428   return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY
11429   set TRUE.
11430
11431 Daniel (27 Jan)
11432 - The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
11433   work again.
11434
11435 Daniel (24 Jan)
11436 - Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
11437   when following locations.
11438
11439 Daniel (22 Jan 2003)
11440 - Ian Wilkes and Legoff Vincent both independently provided fixes for making
11441   curl/multi.h work properly when compiled with a C++ compiler.
11442
11443 Daniel (20 Jan 2003)
11444 - Fixed 'buildconf' to check version number of the required tools before
11445   they're actually used.
11446
11447 - Wrote 'testcurl.sh', a script targeted for automatic and distributed curl
11448   tests on various platforms.
11449
11450 - David Thiel pointed out that the .netrc file was not being dealt with
11451   properly anymore. I broke this in the password prompting "fix".
11452
11453 - Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only
11454   on demand and thus we save 32KB in each curl handle that don't use that
11455   buffer. This need appeared when some people started using thousands of
11456   simultaneous curl handles... :-)
11457
11458 Daniel (16 Jan 2003)
11459 - Markus Oberhumer fixed curl-config --cflags when the includedir was not
11460   /usr/include.
11461
11462 - Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was
11463   set to NULL!
11464
11465 Version 7.10.3 (14 Jan 2003)
11466
11467 Daniel (10 Jan 2003)
11468 - Steve Oliphant pointed out that test case 105 did not work anymore and this
11469   was due to a missing fix for the password prompting.
11470
11471 Version 7.10.3-pre6 (10 Jan 2003)
11472
11473 Daniel (9 Jan 2003)
11474 - Bryan Kemp pointed out that curl -u could not provide a blank password
11475   without prompting the user. It can now. -u username: makes the password
11476   empty, while -u username makes curl prompt the user for a password.
11477
11478 - Kjetil Jacobsen found a remaining connect problem in the multi interface on
11479   ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed
11480   his problems.
11481
11482 - memanalyze.pl now reads a file name from the command line, and no longer
11483   takes the data on stdin as before.
11484
11485 Version 7.10.3-pre5 (9 Jan 2003)
11486
11487 Daniel (9 Jan 2003)
11488 - Fixed tests/memanalyze.pl to work with file names that contain colons (as on
11489   Windows).
11490
11491 - Kjetil Jacobsen quickly pointed out that lib/share.h was missing...
11492
11493 Version 7.10.3-pre4 (9 Jan 2003)
11494
11495 Daniel (9 Jan 2003)
11496 - Updated lib/share.c quite a bit to match the design document at
11497   http://curl.haxx.se/dev/sharing.txt a lot more.
11498
11499   I'll try to update the document soonish. share.c is still not actually used
11500   by libcurl, but the API is slowly getting there and we can start
11501   implementing code that takes advantage of this system.
11502
11503 Daniel (8 Jan 2003)
11504 - Updated share stuff in curl/curl.h, including data types, structs and
11505   function prototypes. The corresponding files in lib/ were also modified
11506   of course to remain compilable. Based on input from Jean-Philippe and also
11507   to make it more in line with the design document.
11508
11509 - Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in
11510   curl_escape() that would happen when realloc() returns NULL...
11511
11512 - Matthew Blain provided feedback to make the --create-dirs stuff build
11513   properly on Windows.
11514
11515 - Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out.
11516
11517 Daniel (7 Jan 2003)
11518 - Philippe Raoult provided a patch that now makes libcurl properly support
11519   wildcard checks for certificate names.
11520
11521 - Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other
11522   strings recognized as "HTTP 200" to allow http-like protocols to get
11523   downloaded fine by curl.
11524
11525 - Now using autoconf 2.57 and automake 1.7.2
11526
11527 - Doing "curl -I ftp://domain/non-existing-file" still outputed a date!
11528   Wayne Haigh reported.
11529
11530 - The error message is now written properly with a newline in the --trace
11531   file.
11532
11533 Daniel (6 Jan 2003)
11534 - Sterling Hughes fixed a possible bug: previously, if you called
11535   curl_easy_perform and then set the global dns cache, the global cache
11536   wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre.
11537
11538 - Matthew Blain's fixed the VC6 libcurl makefile to include better debug data
11539   on debug builds.
11540 Daniel (27 Dec 2002)
11541 - Philippe Raoult reported a bug with HTTPS connections which I evidently
11542   added in my 19 dec fix. I corrected it.
11543
11544 Daniel (20 Dec)
11545 - Idea from the Debian latest patch: use AM_MAINTAINER_MODE in the configure
11546   script to make the default makefile less confusing "to the casual
11547   installer".
11548
11549 Version 7.10.3-pre3 (20 Dec)
11550
11551 Daniel (19 Dec)
11552 - Matthew Blain patched the Curl_base64_decode() function.
11553
11554 - Evan Jordan reported in bug report #653022 that the SSL_read() usage was
11555   wrong, and it certainly was. It could lead to curl using too much CPU due to
11556   a stupid loop.
11557
11558 Daniel (18 Dec)
11559 - As suggested by Margus Freudenthal, CURLE_HTTP_NOT_FOUND was renamed to
11560   CURLE_HTTP_RETURNED_ERROR since it is returned on any >= 400 code when
11561   CURLOPT_FAILONERROR is set.
11562
11563 Daniel (17 Dec)
11564 - Bug reported #651464, reported by Christopher Palmer, provided an example
11565   source code using the multi interface that hang when trying to connect to a
11566   proxy on a localhost port where no proxy was listening. This bug was not
11567   repeatable on libcurls that were IPv6-enabled.
11568
11569 Daniel (16 Dec)
11570 - Christopher Palmer also noticed what Vojtech Janota already was
11571   experiencing: The attempted name resolve fix for glibc 2.2.93 caused libcurl
11572   to crash when used on some older glibc versions. The problem is of course
11573   the silliness of the 2.2.93. I committed a fix that hopefully should make
11574   the binary run fine on either one of the versions, even though the solution
11575   is not as nice as I'd like it to be.
11576
11577 Daniel (13 Dec)
11578 - Bug report #651460 by Christopher R. Palmer showed that when using libcurl
11579   to for example go over a proxy on localhost, it would attempt to connect
11580   through the proxy TWICE.
11581
11582   I added test case 503 with which I managed to repeat this problem and I
11583   fixed the code to not re-attempt any connects (which also made it a nicer
11584   fix for the #650941 bug mentioned below).
11585
11586   The sws server was extended to deal with CONNECT in order to make test
11587   case 503 do good.
11588
11589 - Evan Jordan posted bug report #650989 about a memory leak in the public key
11590   retrieving code. He provided a suggested fix and I merely applied it!
11591
11592 - Bug report #650941, posted by Christopher R. Palmer identified a problem
11593   with the multi interface and getting file:// URLs. This was now fixed and
11594   test case 502 was added to verify this.
11595
11596 Daniel (12 Dec)
11597 - Test case 500 and 501 are the first ever libcurl test cases that run.
11598
11599 - Made "configure --enable-debug" cut off all -O* options to the compiler
11600
11601 - Finally fixed the test suite's ftp server so that test case 402 doesn't
11602   cause the following test case to fail anymore!
11603
11604 Daniel (11 Dec)
11605 - CURL_MAX_WRITE_SIZE is now decreased to 16KB since it makes the Windows
11606   version perform uploads much faster!!! RBramante did lots of research on
11607   this topic.
11608
11609 - Fixed the #include in curl/curl.h to include the other files outside the
11610   extern "C" scope.
11611
11612 Daniel (10 Dec)
11613 - Moved around and added more logic:
11614
11615   First, POST data is never sent as part of the request headers in the http.c
11616   code. It is always sent the "normal" read callback then send() way. This now
11617   enables a plain HTTP POST to be sent chunked if we want to. This also
11618   reduces the risk of having very big POSTs causing problems.
11619
11620   Further, sending off the initial HTTP request is not done using a loop
11621   anymore. If it wasn't all sent off in the first send(), the rest of the
11622   request is sent off in the normal transfer select() loop. This makes several
11623   things possible, but mainly it makes libcurl block less when used from the
11624   multi interface and it also reduces the risk of problems with issuing very
11625   large requests.
11626
11627 Daniel (9 Dec)
11628 - Moved the read callback pointer and data within the structs to a more
11629   suitable place. This in preparation for a better HTTP-request sending code
11630   without (a silly) loop.
11631
11632 - The Dodds fix seems not to work.
11633
11634 - Vojtech Janota tests proved that the resolve fix from oct 21st is not good
11635   enough since obviously older glibcs might return EAGAIN without this meaning
11636   that the buffer was too small.
11637
11638 - [the other day] Made libcurl loop on recv() and send() now until done, and
11639   then get back to select(). Previously it went back to select() more often
11640   which really was a slight overhead. This was due to the reported performance
11641   problems on HTTP PUT on Windows. I couldn't see any notable difference on
11642   Linux...
11643
11644 Version 7.10.3-pre2 (4 Dec 2002)
11645
11646 Daniel (4 Dec 2002)
11647 - Lots of work with Malcolm Dodds made me add a temporary code fix that now
11648   shortens the timeout waiting for the 226 or 250 line after a completed
11649   FTP transfer.
11650
11651   If no data is received within 60 seconds, this is taken as a sign of a dead
11652   control connection and we bail out.
11653
11654 Daniel (3 Dec 2002)
11655 - Ralph's bug report #644841 identified a problem in which curl returned a
11656   timeout error code when in fact the problem was not a timeout. The proper
11657   error should now be propagated better when they're detected in the FTP
11658   response reading function.
11659
11660 - Updated the Borland Makefiles.
11661
11662 Daniel (2 Dec 2002)
11663 - Nicolas Berloquin provided a patch that introduced --create-dirs to the
11664   command line tool. When used in combination with -o, it lets curl create
11665   [non-existing] directories used in -o, suitably used with #-combinations
11666   such as:
11667
11668      curl "www.images.com/{flowers,cities,parks,mountains}/pic_[1-100].jpg \
11669        -o "dir_#1/pic#2.jpg" --create-dirs
11670
11671 Version 7.10.3-pre1
11672
11673 Daniel (28 Nov 2002)
11674 - I visited Lars Nordgren and had a go with his problem, which lead me to
11675   implement this fix. If libcurl detects the added custom header
11676   "Transfer-Encoding: chunked", it will now enable a chunked transfer.
11677
11678   Also, chunked transfer didn't quite work before but seems to do so now.
11679
11680 - Kjetil Jacobsen pointed out that ./configure --disable-ipv6 --without-zlib
11681   didn't work on any platform...
11682
11683 Daniel (26 Nov 2002)
11684 - Fixed a bad addrinfo free in the hostip.c code, hardly exposed anywhere
11685
11686 - Dan Becker found and fixed a minor memory leak on persistent connnections
11687   using CURLOPT_USERPWD.
11688
11689 Daniel (22 Nov 2002)
11690 - Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
11691   web server (sws) which now lets test case 306 run fine even in combination
11692   with the other test cases.
11693
11694 - Juan Ignacio Hervás found a crash in the verbose connect message that is
11695   used on persistent connections. This bug was added in 7.10.2 due to the
11696   rearranged name resolve code.
11697
11698 Daniel (20 Nov 2002)
11699 - Kjetil Jacobsen provided a patch that introduces:
11700
11701    CURLOPT_PRIVATE stores a private pointer in the curl handle.
11702
11703    CURLINFO_PRIVATE retrieves the private pointer from the curl handle.
11704
11705 - Karol Pietrzak pointed out how curl-config --cflags didn't output a good
11706   include dir so I've removed that for now.
11707
11708 Version 7.10.2 (18 Nov 2002)
11709
11710 Daniel (11 Nov 2002)
11711 - Dave Halbakken added curl_version_info to lib/libcurl.def to make libcurl
11712   properly build with MSVC on Windows.
11713
11714 Daniel (8 Nov 2002)
11715 - Doing HTTP PUT without a specified file size now makes libcurl use
11716   Transfer-Encoding: chunked.
11717
11718 Daniel (7 Nov 2002)
11719 - Bug report #634625 identified how curl returned timeout immediately when
11720   CURLOPT_CONNECTTIMEOUT was used and provided a fix.
11721
11722 Version 7.10.2-pre4 (6 Nov 2002)
11723
11724 Daniel (5 Nov 2002)
11725 - Lehel Bernadt found out and fixed. libcurl sent error message to the debug
11726   output when it stored the error message.
11727
11728 - Avery Fay found some problems with the DNS cache (when the cache time was
11729   set to 0 we got a memory leak, but when the leak was fixed he got a crash
11730   when he used the CURLOPT_INTERFACE with that) that had me do some real
11731   restructuring so that we now have a reference counter in the dns cache
11732   entries to prevent an entry to get flushed while still actually in use.
11733
11734   I also detected that we previously didn't update the time stamp when we
11735   extracted an entry from the cache so that must've been a reason for some
11736   very weird dns cache bugs.
11737
11738 Version 7.10.2-pre3
11739
11740 Daniel (31 Oct 2002)
11741 - Downgraded automake to 1.6.3 in an attempt to fix cygwin problems. (It
11742   turned out this didn't help though.)
11743
11744 - Disable the DNS cache (by setting the timeout to 0) made libcurl leak
11745   memory. Avery Fay brought the example code that proved this.
11746
11747 Version 7.10.2-pre2
11748
11749 Daniel (28 Oct 2002)
11750 - Upgraded to autoconf 2.54 and automake 1.7 on the release-build host.
11751
11752 - Kevin Roth made the command line tool check for a CURL_CA_BUNDLE environment
11753   variable (if --cacert isn't used) and if not set, the Windows version will
11754   check for a file named "curl-ca-bundle.crt" in the current directory or the
11755   directory where curl is located. That file is then used as CA root cert
11756   bundle.
11757
11758 - Avery Fay pointed out that curl's configure scrip didn't get right if you
11759   used autoconf newer than 2.52. This was due to some badly quoted code.
11760
11761 Version 7.10.2-pre1
11762
11763 Daniel (23 Oct 2002)
11764 - Emiliano Ida confirmed that we now build properly with the Borland C++
11765   compiler too. We needed yet another fix for the ISO cpp check in the curl.h
11766   header file.
11767
11768 - Yet another fix was needed to get the HTTP download without headers to work.
11769   This time it was needed if the first "believed header" was read all in the
11770   first read. Test 306 has not run properly since the 11th october fix.
11771
11772 Daniel (21 Oct 2002)
11773 - Zvi Har'El pointed out a problem with curl's name resolving on Redhat 8
11774   machines (running IPv6 disabled). Mats Lidell let me use an account on his
11775   machine and I could verify that gethostbyname_r() has been changed to return
11776   EAGAIN instead of ERANGE when the given buffer size is too small. This is
11777   glibc 2.2.93.
11778
11779 - Albert Chin helped me get the -no-undefined option corrected in
11780   lib/Makefile.am since Cygwin builds want it there while Solaris builds don't
11781   want it present. Kevin Roth helped me try it out on cygwin.
11782
11783 - Nikita Schmidt provided a bug fix for a FOLLOWLOCATION bug introduced when
11784   the ../ support got in (7.10.1).
11785
11786 Daniel (18 Oct 2002)
11787 - Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
11788   the multi interface.
11789
11790 Daniel (17 Oct 2002)
11791 - Richard Cooper's experimenting proved that -j (CURLOPT_COOKIESESSION) didn't
11792   work quite as supposed. You needed to set it *before* you use
11793   CURLOPT_COOKIEFILE, and we dont' want that kind of dependencies.
11794
11795 Daniel (15 Oct 2002)
11796 - Andrés García provided corrections for erratas in four libcurl man pages.
11797
11798 Daniel (13 Oct 2002)
11799 - Starting now, we generate and include PDF versions of all the docs in the
11800   release archives.
11801
11802 Daniel (12 Oct 2002)
11803 - Trying to connect to a host on a bad port number caused the multi interface
11804   to never return failure and it appeared to keep on trying forever (it just
11805   didn't do anything).
11806
11807 Daniel (11 Oct 2002)
11808 - Downloading HTTP without headers didn't work 100%, some of the initial data
11809   got written twice. Kevin Roth reported.
11810
11811 - Kevin Roth found out the "config file" parser in the client code could
11812   segfault, like if DOS newlines were used.
11813
11814 Version 7.10.1 (11 Oct 2002)
11815
11816 Daniel (10 Oct 2002)
11817 - Jeff Lawson fixed a few problems with connection re-use that remained when
11818   you set CURLOPT_PROXY to "".
11819
11820 Daniel (9 Oct 2002)
11821 - Craig Davison found a terrible flaw and Cris Bailiff helped out in the
11822   search. Getting HTTP data from servers when the headers are split up in
11823   multiple reads, could cause junk data to get inserted among the saved
11824   headers. This only concerns HTTP(S) headers.
11825
11826 Daniel (8 Oct 2002)
11827 - Vincent Penquerc'h gave us the good suggestion that when the ERRRORBUFFER
11828   is set internally, the error text is sent to the debug function as well.
11829
11830 - I fixed the telnet code to timeout properly as the option tells it to. On
11831   non-windows platforms.
11832
11833 Daniel (7 Oct 2002)
11834 - John Crow pointed out that libcurl-the-guide wasn't included in the release
11835   tarball!
11836
11837 - Kevin Roth pointed out that make install didn't do right if build outside
11838   the source tree (ca-bundle wise).
11839
11840 - FOLLOWLOCATION bugfix for the multi interface
11841
11842 Daniel (4 Oct 2002)
11843 - Kevin Roth got problems with his cygwin build with -no-undefined was not
11844   present in lib/Makefile.am so I put it back in there again. The poor one who
11845   needs to remove it again must write a configure script to detect that need.
11846
11847 - Ralph Mitchell pointed out that curl was a bit naive and didn't deal with ./
11848   or ../ stuff in the string passed back in a Location: header when following
11849   locations.
11850
11851 - Albert Chin helped me to work out a better configure.in check for zlib, and
11852   both --without-zlib and -with-zlib seem to work rather well right now.
11853
11854 - Zvi Har'El improvied the OpenSSL ENGINE check in the configure script to
11855   become more accurate.
11856
11857 Daniel (1 Oct 2002)
11858 - Detlef Schmier pointed out the lack of a --without-libz option to configure,
11859   so I added one.
11860
11861 Version 7.10 (1 Oct 2002)
11862
11863 Daniel (30 Sep 2002)
11864 - Modified the curl_version_info() proto and returned struct once again, and
11865   updated the man page accordingly.
11866
11867 - Cris Bailiff found out that the pre-releases crashed on name lookups on
11868   names such as "a:" or "baz:" (on Linux versions not being IPv6-enabled) due
11869   to some weird return codes from gethostbyname_r(). I'll blame the complete
11870   lack of docs in that department. Cris provided a fix, which I modified only
11871   slightly.
11872
11873 Daniel (27 Sep 2002)
11874 - After a suggestion from Christian Kurz to Debian curl package maintainer
11875   Domenico Andreoli, I made it possible to override the proxy environment
11876   variables better. Now, by setting -x "" you can explicitly tell libcurl to
11877   not use a proxy, no matter whan the environment variables say.
11878
11879 Version 7.10-pre4
11880
11881 Daniel (26 Sep 2002)
11882 - Extended curl_version_info() more and wrote a man page for it.
11883
11884 Daniel (25 Sep 2002)
11885 - libcurl could leak memory when downloading multiple files using http ranges,
11886   reported and fixed by Jean-Luc Guevel.
11887
11888 - Walter J. Mack provided code and docs for the new curl_free() function that
11889   shall be used to free memory that is allocated by libcurl and returned back
11890   to the application, as curl_escape() and curl_unescape() do.
11891
11892 - Yarram Sunil pointed out a flaw in the multi interface where a failed
11893   connection didn't close down properly and thus a second transfer using the
11894   same handle failed.
11895
11896 - Andrés García fixed a flaw that made (among other things) dict-fetches
11897   return a random value.
11898
11899 Daniel (24 Sep 2002)
11900 - Wez Furlong brought his initial patch that introduced curl_version_info().
11901   We might need to tweak it somewhat before release.
11902
11903 Daniel (20 Sep 2002)
11904 - Craig Markwardt fixed another Tru64 IP resolve problem.
11905
11906 Daniel (19 Sep 2002)
11907 - Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
11908   in the same style other code does.
11909
11910 - Ilguiz Latypov fixed a flaw in the client code when fetching multiple URLs
11911   and -C - was used. The first file's resume position was then accidentally
11912   reused on all the other files too.
11913
11914 Daniel (18 Sep 2002)
11915 - The curl_easy_setopt.3 man page was greatly modified and the options have
11916   now been grouped in logical groups so that it should be somewhat easier to
11917   read it and find things you search for.
11918
11919 Daniel (13 Sep 2002)
11920 - Kevin Roth pinpointed a scary flaw in libcurl, when the HTTP server doesn't
11921   send any headers back, only raw content. Right, that is a violation of the
11922   standard but still happens at times and we need to deal with it. Test case
11923   306 was added to verify that we do right now.
11924
11925 Version 7.10-pre3
11926
11927 Daniel (11 Sep 2002)
11928 - Lukasz Czekierda found out that curl didn't send a correct HTTP Host: header
11929   when you specified the URL with an IPv6 IP-address.
11930
11931 Daniel (4 Sep 2002)
11932 - Sven Neuhaus made --silent being acknowledged even when multiple URLs
11933   were used. It used to output "[1/2]: http://host/a.html.de --> a.html.d" etc
11934   even when told to shut up.
11935
11936 Daniel (3 Sep 2002)
11937 - Updated all source code headers to use MIT-license references only, and
11938   point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
11939   URL. I've cut out all references to MPL that I could find.
11940
11941 - Corected the makefiles to not always use -lz when linking
11942
11943 Version 7.10-pre2
11944
11945 Daniel (2 Sep 2002)
11946 - James Gallagher added Content-Encoding support to libcurl so now curl and
11947   libcurl-using apps can request compressed contents using the 'deflate'
11948   method. See the special file lib/README.encoding for details.
11949
11950   curl --compressed is now used to request compressed contents.
11951
11952   curl-config --feature will include 'libz' if this feature was around when
11953   the library was built.
11954
11955 Daniel (30 Aug 2002)
11956 - Applied an anonymous SOCKS5-proxy patch. Not properly working in all
11957   situations though, as all getaddrinfo()-using libcurls will fail on this.
11958   This is because of the somewhat naive way the current code tries to extract
11959   the IP address of the proxy.
11960
11961 - Fixed up the SSL cert fixes from the other day even more after more inputs
11962   from Cris. Added three new SSL error codes to make the
11963   CURLE_SSL_CONNECT_ERROR slightly less overloaded.
11964
11965 Daniel (27 Aug 2002)
11966 - After lots of talk with Tom Zerucha, Nick Gimbrone and Cris Bailiff I
11967   decided to talk the bold path and I now made libcurl do CA certificate
11968   verification by default. Thus library users need to explicitly turn this off
11969   if you want to connect to sites without proper checking. We also install a
11970   CA cert bundle on 'make install' now.
11971
11972   The curl tool now requires the -k/--insecure option in order to allow
11973   connections and operations on SSL sites that aren't properly verified with
11974   -cafile or --capath.
11975
11976   curl-config --ca displays the built-in path to the CA cert bundle.
11977
11978 Daniel (26 Aug 2002)
11979 - Andrew Francis cleaned up some code that now compiles fine without the need
11980   for ugly MSVC pragmas.
11981
11982 - Keith MacDonald found a minor bug in src/main.c that made it close stdin
11983   instead of the actual file handle. It shouldn't have resulted in much
11984   trouble as most operating systems close all file handles on process exit
11985   anyway.
11986
11987 Daniel (22 Aug 2002)
11988 - Markus Oberhumer provided some documentation for his previously provided
11989   CURLOPT_NOSIGNAL fix.
11990
11991 - Patched the lib/Makefile.am to hopefully no longer complain on undefined
11992   symbols that seemed to occur on builds with shared OpenSSL libraries on
11993   Solaris lately...
11994
11995 Daniel (20 Aug 2002)
11996 - Fixed compiler warnings on MSCV++ compiles. We're looking for help here:
11997   remove the pragmas from lib/config-win32.h and adjust the sources where
11998   the warnings occur. Hiding them with pragmas like this is not the correct
11999   way of dealing with compiler warnings.
12000
12001 Daniel (13 Aug 2002)
12002 - Ulrich Zadow made the global include files in curl/* include themselves
12003   using "curl.h" instead of <curl/curl.h> which thus allows people to more
12004   freely decide how to include curl and how to setup their include paths.
12005
12006 - Sterling Hughes added the curl_share* interface, somewhat as discussed
12007   previously.
12008
12009 - Jörn Hartroth pointed out that poll() was used in the pre1 source code and
12010   it isn't very portable, so now I check for it in the configure script and
12011   work around it.
12012
12013 Version 7.9.9-pre1
12014
12015 Daniel (12 Aug 2002)
12016 - Applied my initial take on making the multi stuff more asynchronous. Connects
12017   should now return back without "hanging" until it has connected for real.
12018   This should also be the case for FTP-PASV connects.
12019
12020 Daniel (9 Aug 2002)
12021 - Applied Markus F.X.J. Oberhumer's patch that introduces CURLOPT_NOSIGNAL,
12022   which effectively prevents libcurl from doing anything that may cause
12023   signals to get sent. This is basicly for multi-threaded applications that
12024   now can use timeouts properly, without risking any signals to burst in and
12025   ruin the party.
12026
12027 Daniel (5 Aug 2002)
12028 - Lukasz Czekierda reported that RFC2732-style literal IPv6 addresses didn't
12029   work. When did that code vanish? Anyway, it's back again now and seems to
12030   work!
12031
12032 - Jonatan Lander found out that POSTing an empty string didn't work with the
12033   command line tool.
12034
12035 Daniel (3 Aug 2002)
12036 - Jörn Hartroth fixed the libcurl.def file to build the windows DLL with
12037   the multi interface enabled.
12038
12039 Daniel (1 Aug 2002)
12040 - The ftp PORT command now uses a better default IP address, as it will
12041   extract and use the local IP address used by the control connection.
12042
12043 - Modified the #include lines in curl/multi.h to work better on more
12044   platforms.
12045
12046 Daniel (31 Jul 2002)
12047 - Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
12048   problems.
12049
12050 Daniel (30 Jul 2002)
12051 - Priya Ramakrishnan and Ryan Jones compiles curl/curl.h with a C++ compiler
12052   and don't get __STDC__ defined, which required us to extend the preprocessor
12053   check for the ## operator usage.
12054
12055 - Correct the description for CURLOPT_PASSWDFUNCTION, if set to NULL the
12056   internal default function will be put back.
12057
12058 - danfuzz at milk.com found out that libcurl badly assumed a space after
12059   'Set-Cookie:' so if it wasn't present, it caused the first letter of the
12060   cookie name to fall off!
12061
12062 Daniel (29 Jul 2002)
12063 - The password prompt asking for user password used stdout and now uses
12064   stderr instead to better allow redirecting. It also leaked a fopen() file
12065   handle that is now fixed.
12066
12067 Daniel (28 Jul 2002)
12068 - HAVE_SETVBUF was left out from src/main.c which made -N not work. Found out
12069   by M T.
12070
12071 Daniel (26 Jun 2002)
12072 - Glen Nakamura solved a crash in the name resolving function for IP-only
12073   addresses on Alpha Linux (at least).
12074
12075 - T. Bharath corrected the high resolution timer introduced in 7.9.8.
12076
12077 Daniel (22 Jun 2002)
12078 - Andrés García pointed out man page errors in curl_formadd.3. I fixed.
12079
12080 Daniel (19 Jun 2002)
12081 - Chris Combes pointed out a flaw in curl_escape(). I fixed. We no longer
12082   tries to generate nor parse '+' in URLs. Spaces become %20, and only %-codes
12083   are translated by curl_unescape().
12084
12085 Daniel (15 Jun 2002)
12086 - Added --limit-rate to the curl tool. Allows the user to set a maxmimum
12087   upper limit to how much bandwidth to use for transfers.
12088
12089 - CURLOPT_BUFFERSIZE was added to libcurl. This sets a prefered size for the
12090   receive buffer in libcurl. The main point of this would be that the write
12091   callback gets called more often and with smaller chunks.
12092
12093 Daniel (14 Jun 2002)
12094 - Yarram Sunil found out that the SocketIsDead() function performed a lot
12095   faster on Windows when removing the 1 microsecond timeout.
12096
12097 - Hanno L. Kranzhoff fixed the VC++ project files.
12098
12099 - Tom Mattison found out that ftp transfers closed the connection a little
12100   too often.
12101
12102 - Miklos Nemeth posted a VC++ makefile fix and some INSTALL comments on how
12103   to disable specific protocols when building for Windows.
12104
12105 Version 7.9.8
12106
12107 Daniel (13 Jun 2002)
12108 - Time to let this baby go.
12109
12110 Daniel (12 Jun 2002)
12111 - Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
12112   CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH.  They are used to create a
12113   multipart that appears as a regular file upload, but the data is provided
12114   with a pointer and length.
12115
12116 - Nico Baggus made the VMS version use sigsetjmp() too.
12117
12118 - Jörn Hartroth fixed the mingw32 build using the mm lib.
12119
12120 - Applied patches by Kris Kennaway that correct format string problems in
12121   lib/ftp.c and lib/ldap.c.
12122
12123 Version 7.9.8-pre3
12124
12125 Daniel (11 Jun 2002)
12126 - James Cone brought the idea of using sigsetjmp() in the signal handler to
12127   make the time-out of name lookups to work, even when the underlying name
12128   resolver library traps EINTR. The use of sigsetjmp() and siglongjmp() for
12129   this may be a bit drastic, and also not likely to exist on all platforms.  I
12130   added careful checking for this in the configure script, even checks for it
12131   being a macro (which seems to be the case in for example Linux).
12132
12133   sigsetjmp() seems to be mentioned in the Single Unix specification.
12134
12135 - Miklos Nemeth brought a patch that allows libcurl to get built with specific
12136   protocols disabled. This is done by running ./configure
12137   --disable-[protocol].
12138
12139 - FTP range downloads could make CURLE_FTP_WRITE_ERROR get returned. We now
12140   make precautions to not return this for range downloads.
12141
12142   Added test case 135 that makes an ftp range download. Had to tweak the
12143   runtests.pl script a bit too.
12144
12145 - Bug report #566835 identified a strlen() on a NULL pointer. Added additional
12146   check to prevent this.
12147
12148 Daniel (10 Jun 2002)
12149 - Found and corrected a connect failure problem that didn't create a human
12150   error text.
12151
12152 - Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
12153   and comments from Götz Babin-Ebell.
12154
12155 - Gautam Mani found a socket descriptor leak that happened when FTP transfers
12156   failed and you reinvoked curl_easy_perform().
12157
12158 Daniel (5 Jun 2002)
12159 - Gustaf Hui corrected curl_multi_remove_handle() so that it won't crash no
12160   matter when you decide to remove the CURL handle.
12161
12162 - HAVE_RAND_STATUS was added to lib/config-win32.h by Andreas Olsson, as it
12163   makes windows builds stop complaining about "weak seeding" when it in fact
12164   isn't.
12165
12166 - Another 64bit architecture crash that was introduced in 7.9.7 was now
12167   removed, as bug report #564585 clarified. This happened due to our attempts
12168   to only allocate only as much memory as is actually needed for name
12169   resolving (using realloc) which called for a function that could 'move' a
12170   hostent struct in memory.
12171
12172 Version 7.9.8-pre2
12173
12174 Daniel (3 Jun 2002)
12175 - T. Bharath fixed the CURLINFO_REDIRECT_TIME to return a correct time and
12176   made the CURLINFO_REQUEST_SIZE return the correct total request size. He
12177   also made the win32 timers use higher resolution than before.
12178
12179 Daniel (29 May 2002)
12180 - Renaud Chaillat made me aware of the fact that libcurl returned an error if
12181   you tried to get an empty FTP file. This seemed like a wrong thing to do, so
12182   now it no longer does that! I just hope that no one built anything fancy
12183   upon this unexpected behavior...
12184
12185 Daniel (28 May 2002)
12186 - Cris Bailiff brought CURLOPT_CAPATH that works like CURLOPT_CAINFO but
12187   specifies a path to a directory with certificates rather than a single file
12188   with them all concatenated. --capath was added to the command line tool
12189   for the same function.
12190
12191   Windows users need to pay attention that the directory should be setup with
12192   the c_rehash tool of the OpenSSL package, and that creates symlinks by
12193   default that need to be replaced with actual copies to work on Windows.
12194
12195 - Gustaf Hui provided new code that changes how curl_multi_info_read()
12196   messages are stored, so that they don't have to be kept around for the multi
12197   handle's entire life time. He also made it return failure codes properly
12198   which it didn't do before.
12199
12200 Daniel (27 May 2002)
12201 - Gustaf Hui pointed out that running curl_multi_perform() without doing
12202   curl_multi_fdset() first was not really a working combo. I added an internal
12203   check for this and have some extra select() code without timeout to make the
12204   library internals work identically nevertheless. We might need to somehow
12205   either document that once you've used the *_fdset() you should remain using
12206   them in select() or you should blank them somehow so that libcurl won't go
12207   crazy.
12208
12209 Version 7.9.8-pre1
12210
12211 Daniel (22 May 2002)
12212 - James Cone brought an excellent patch, including several tests and docs!
12213   CURLOPT_NETRC now takes an enum as argument instead of the previous boolean.
12214   --netrc-optional was introduced as an addition to --netrc to allow the
12215   command line client to take use of all that new netrc stuff.
12216
12217 - Bug report #558888 showed a case where libcurl re-used the previous host
12218   name when a connection over a proxy was re-used but to a different target
12219   host.
12220
12221 Daniel (21 May 2002)
12222 - Edin Kadribasic helped me sort out a problem to made libcurl crash when
12223   trying to HTTP POST an empty string.
12224
12225 - Clarified that Juergen Wilke donated the original tests/server/sws.c code.
12226
12227 - Jean-Philippe Barrette-LaPierre made curl_formadd() return a typedef named
12228   CURLFORMcode instead of the previous 'int', and the various return codes are
12229   now globally exported. It allows applications to better figure out what goes
12230   wrong when curl_formadd() returns errors.
12231
12232 Daniel (20 May 2002)
12233 - Roland Zimmermann pointed out that SSL_CTX_use_certificate_chain_file()
12234   is prefered to SSL_CTX_use_certificate_file().
12235
12236 Daniel (17 May 2002)
12237 - Bug report #556869 pointed out that src/writeout.c didn't compile on freebsd
12238   after my AIX fixes the other week.
12239
12240 - Bug report #556930 pointed out a FreeBSD core dump introduced in 7.9.7 in
12241   the DNS struct realloc stuff. Actually, this crash could happen on all
12242   systems that made the pack_hostent() function get invoked.
12243
12244 - I removed several compiler warnings in the test suite's HTTP server.
12245
12246 Version 7.9.7
12247
12248 Daniel (10 May 2002)
12249 - Kevin Roth adjusted the --trace-ascii output slightly.
12250
12251 - Paul Harrington found out that src/writeout.c needed an additional header
12252   file included for AIX builds
12253
12254 Version 7.9.7-pre2
12255
12256 Daniel (7 May 2002)
12257 - Updated the man page with --trace-ascii and -j/--junk-session-cookies.
12258
12259 - Made --trace-ascii do pretty much the same as --trace but without the hex
12260   part in the output.
12261
12262 - Added CURLOPT_COOKIESESSION that when enabled makes libcurl ignore session
12263   cookies read from a file. This option is enforced by the curl command line
12264   tool using the new -j/--junk-session-cookies option. After discussions with
12265   Kevin Roth. This makes it easier to use curl to fully emulate a browser's
12266   behavior, even when it comes to "session cookies". Session cookies are
12267   cookies that a normal browser discards when the browser is shut
12268   down. They're identified by not having any expire date/time.
12269
12270 - When CURLOPT_DEBUGDATA was set, it ruined the CURLOPT_STDERR setting and
12271   this was discovered when --trace was made to crash.
12272
12273 - Using -v and --trace at the same time confused matters. -v is now pretty
12274   much ignored when --trace or --trace-ascii is used.
12275
12276 - Made --trace (and --trace-ascii) support - as file name to pass output to
12277   stdout instead. It makes it consistent with how other options work.
12278
12279 Version 7.9.7-pre1
12280
12281 Daniel (6 May 2002)
12282 - Added multi-post.c to the examples directory. I got the basic source for
12283   this from Gustaf Hui.
12284
12285 Daniel (3 May 2002)
12286 - CURL_MAX_WRITE_SIZE is now an exported #define in the curl/curl.h header and
12287   can be used to figure out the maximum buffer size your write callback can
12288   get.
12289
12290 - CURLOPT_READDATA is now an alias for CURLOPT_INFILE and CURLOPT_WRITEDATE is
12291   an alias for CURLOPT_FILE. These two were added for conformity. Most other
12292   callback function's userdata are provided with options using a similar name-
12293   scheme.
12294
12295 - Added "--trace [file]" to the command line tool. It makes a very detailed
12296   trace dump get stored, with a full protocol dump that includes all received
12297   and transmitted data. This could be a very effective tool for debugging what
12298   goes wrong. This dump includes every byte the way it is sent to/received
12299   from the server. The dump is the plain-text version, so SSL transfers will
12300   still be readable.
12301
12302 - I found out that the DEBUGFUNCTION was not called properly everywhere as we
12303   wanted it to. I fixed it.
12304
12305 - -D now stores all headers to the same file if multiple URLs are given on the
12306   command line! Kevin Roth made me aware of that it didn't already do this!
12307
12308 - Gustaf Hui wrote an excellent formpost example that used the multi
12309   interface.  Unfortunately, it didn't work due to several bugs in how
12310   transfers were made when the multi interface was used.
12311
12312 Daniel (2 May 2002)
12313 - Hanno Kranzhoff found out that when doing multiple transfers on the same
12314   easy handle, the progress meter would show a bad "currently downloaded
12315   value" when the transfer starts.
12316
12317 Daniel (1 May 2002)
12318 - Applied another patch by Jacky Lam to make the name resolve info realloc()
12319   stuff work properly.
12320
12321 Daniel (28 April 2002)
12322 - curl_multi_info_read() is now implemented!
12323
12324 Daniel (27 April 2002)
12325 - Updated BUGS, TODO, FAQ, INSTALL and added BINDINGS.
12326
12327 - I think I fixed the DNS cache prune crach Jacky Lam found and reported.
12328
12329 - I cleaned up the name prefix stuff in the hash and llist modules.
12330
12331 - FTP responses should now be better on timing out properly. The timeout value
12332   is maximum timeout for the entire request operation, but before this, the
12333   timeout was used as a maximum allowed time between two reads...
12334
12335 Daniel (26 April 2002)
12336 - Fixed the test suite http server to not use snprintf() anymore due to better
12337   portability.
12338
12339 Daniel (25 April 2002)
12340 - With Sterling Hughes' new DNS pruning, Jacky Lam asked if this wouldn't
12341   cause problems since the pruning is only checking the entry time, and it
12342   sure could cause problems. Therefor, I've now added and changed code so that
12343   this should not be a problem. Nowhere in the code will be store name
12344   resolved information around so that a sunsequent DNS cache prune should
12345   cause a problem. This of course called for some mild internal changes.
12346
12347 Daniel (23 April 2002)
12348 - Improved the 'no_proxy' check, as using port numbers in the URL confused it
12349   previously. Reported by Erwan Legrand in bug report #547484.
12350
12351 - The --interface option now works even on IPv6 enabled builds. Reported by
12352   'thor'.
12353
12354 Daniel (22 April 2002)
12355 - The #defines names starting with TIMECOND now has CURL_ prefixes. (The old
12356   names are still #defined too.) Pointed out by Robert Olson.
12357
12358 - Jacky Lam brought code that lets the name resolve function only use as much
12359   memory as it actually needs. This only works on certain operating systems,
12360   but is totally transparant to all users.
12361
12362 Daniel (19 April 2002)
12363 - Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
12364
12365 Daniel (18 April 2002)
12366 - Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
12367   experienced very big caches.
12368
12369 Daniel (17 April 2002)
12370 - Dirk Manske patched the 301 response to work against the RFC but more like
12371   common browsers do. If a POST get a 301 back, it'll switch to GET in the
12372   next request (if location-following is enabled).
12373
12374 Daniel (16 April 2002)
12375 - Dirk Manske posted a patch originally written by Ingo Wilken that introduced
12376   two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and
12377   CURLINFO_REDIRECT_COUNT.
12378
12379 Daniel (15 April 2002)
12380 - Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
12381   reflect reality better, like when the first request isn't POST and when
12382   the second isn't GET... :-)
12383
12384 - Craig Davison pointed out that when curl_formadd()ing a file that doesn't
12385   exist, libcurl doesn't return error. Now, curl_easy_perform() will return
12386   CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
12387
12388 Version 7.9.6
12389
12390 Daniel (14 April 2002)
12391 - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
12392   beginning of cookie contents.
12393
12394 - Had to patch include/curl/curl.h since MSVC doesn't set the __STDC__ define.
12395   Moonesamy pointed out the problem, Bjorn Reese the solution.
12396
12397 Version 7.9.6-pre5
12398
12399 Daniel (12 April 2002)
12400 - Fixed the TIMER_CONNECT to be more accurate for FTP transfers. Previously
12401   FTP transfers got the "connect done" time set after the initial FTP commands
12402   and not directly after the TCP/IP connect as it should.
12403
12404   I also made the time stamp get set even if the connect itself fails, which
12405   it didn't do previously.
12406
12407 - Jean-Philippe Barrette-LaPierre provided his patch that introduces
12408   CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA. They allow a program to a set a
12409   callback to receive debug/information data. That includes headers and data
12410   that is received and sent. CURLOPT_VERBOSE still controls it.
12411
12412   By default, there is an internal debugfunction that will make things look
12413   and work as before if not changed.
12414
12415 Daniel (10 April 2002)
12416 - Sebastien Willemijns found out that -x didn't use the default port number as
12417   is documented. It does now.
12418
12419 - libcurl-errors.3 is a new man page attempting to document all libcurl error
12420   codes
12421
12422 - Added two new error codes and changed the behaviour of two old ones
12423   slightly:
12424
12425   CURLE_WRITE_ERROR
12426    This error was returned *both* for errors that occured when writing
12427    received data to a local file, as well as when we get problems writing data
12428    to a remote server. CURLE_SEND_ERROR has now been added for the latter
12429    error.
12430
12431   CURLE_READ_ERROR
12432    This error was similarly returned *both* for errors when reading a local
12433    file, as well as when getting problems when reading network data.
12434    CURLE_RECV_ERROR has now been added for the latter error.
12435
12436  (Two test cases were adjusted accordingly.)
12437
12438 Daniel (9 April 2002)
12439 - runtests.pl now sets the HOME variable before running curl, to prevent any
12440   actual ~/.curlrc file to fool the tests!
12441
12442 Version 7.9.6-pre4
12443
12444 Daniel (8 April 2002)
12445 - Michael Curtis provided new functionality for curl on some platforms. Using
12446   the --environment option, curl will *set* a bunch of environment variables
12447   to values. The names are the same ones as for the -w/--writeout option.
12448
12449   For now, this only works on the RISC OS version, as this feature relies on
12450   both OS support and that it matches OS paradigms.
12451
12452 - Jacky Lam provided a fix for getting headers-only when the reply is HTTP/1.0
12453   and 304, I edited it slightly.
12454
12455 Daniel (5 April 2002)
12456 - As requested by Jay Graves, the '.curlrc' file (or _curlrc as it is called
12457   when used in windows), is now loaded from the current directory if the HOME
12458   environment variable isn't set (or if it is too long). I also enlarged the
12459   array used to store the full file path in, to 512 bytes.
12460
12461 - Kevin Roth pointed out to me why the "19 March" change regarding -G and -I
12462   was stupid and the change was reverted. Added test case 48 to verify the
12463   functionality.
12464
12465 Version 7.9.6-pre3
12466
12467 Daniel (4 April 2002)
12468 - Jonatan Lander brought a patch that makes curl/curl.h compile nicely on
12469   pre-ISO compilers, like when using gcc -traditional.
12470
12471 Daniel (3 April 2002)
12472 - Jacky Lam identified a glitch when getting headers-only, where libcurl would
12473   "hang" 1 second in vain in the select() loop before returning back.
12474
12475 - Tor Arntsen brought a patch for multipart formposts. It turned out that the
12476   "CGI_Lite Perl package" makes some bad assumptions on what letters that may
12477   be used in boundary strings and thus curl could confuse it by including '+'
12478   and '/'. While this is standards-compliant, we change the behavior to work
12479   smoothly with existing software based on that package.
12480
12481 Daniel (2 April 2002)
12482 - Gerhard Herre filed bug report #536238 where he pointed out a crash in
12483   verbose FTP passive transfers for AIX.
12484
12485 - Clarence Gardner pointed out a minor flaw in how libcurl didn't properly
12486   take care of all errors that SSL_read() could return.
12487
12488 - Jacky Lam fixed a MALLOCDEBUG problem in lib/getinfo.c
12489
12490 Daniel (27 March 2002)
12491 - T. Bharath pointed out a flaw in the connection re-use function that didn't
12492   check proxy connections properly for "deadness" before they were re-used.
12493
12494 - Pedro Neves found out that HTTP POSTing with --data-binary did not properly
12495   work under Windows as the file specified wasn't read fully binary!
12496
12497 Daniel (25 March 2002)
12498 - Jacky Lam brought a fix that improves treatment of cookies using identical
12499   domains but with leading dots properly.
12500
12501 Daniel (22 March 2002)
12502 - Miklos Nemeth updated the windows section of the docs/INSTALL file and the
12503   windows makefiles.
12504
12505 - Jon Dillon provided us with several good-looking curl images for
12506   promotion. View them here http://curl.haxx.se/icons.html
12507
12508 Daniel (20 March 2002)
12509 - Peter Verhas found out that CRLF replacement in uploads was not working. I
12510   fixed it, and added test case 128 that verifies the functionality.
12511
12512 - The list formerly known as curl-main is now named curl-users and is hosted
12513   by sourceforge. Susbcribe to the new list, get off the old one.
12514
12515 Version 7.9.6-pre2
12516
12517 Daniel (19 March 2002)
12518 - Made -G and -I on the same command line cause an error.
12519
12520 - Moved the multi.h file to the "public" include directory and made it get
12521   included by curl.h so that no extra include files will be necessary to use
12522   it.
12523
12524   Added docs and man pages for the multi interface to the release archive.
12525   Added the three example source codes too.
12526
12527   Necessary steps in my campaign to sneak in the multi interface... ;-)
12528
12529 - Updated the year in all copyright notices in all C and H files.
12530
12531 Daniel (18 March 2002)
12532 - Tomas Szepe found out that -d and -G didn't mix as they should. I broke this
12533   in 7.9.5... Added test case 32 for this.
12534
12535 Version 7.9.6-pre1
12536
12537 Daniel (16 March 2002)
12538 - Peter Verhas pointed out that the curl_escape and curl_unscape man pages
12539   contained factual errors.
12540
12541 - Albert Choy found and corrected a problem with the verbose output when doing
12542   PASV ftp transfers. It could make libcurl crash.
12543
12544   Details in bug report #530562:
12545   http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
12546
12547 Daniel (15 March 2002)
12548 - Jun-ichiro itojun Hagino filed bug report #530204 that clearly pointed out
12549   the PF_INET fix from February 19 as a not-very-good fix as it broke IPv6
12550   capability! That patch is now reverted.
12551
12552   The problem with slow name lookups with getaddrinfo() on non-IPv6 enabled
12553   hosts are instead made by first checking if the stack is IPv6-enabled and if
12554   not, the PF_INET is used and otherwise we go with the full PF_UNSPEC.
12555
12556 - T. Bharath pointed out that when we return an "error" from a WRITEFUNCTION
12557   as described in the man page, libcurl did not return the documented error
12558   code (CURLE_WRITE_ERROR) but would instead return CURLE_READ_ERROR. This is
12559   now corrected.
12560
12561 Daniel (14 March 2002)
12562 - Setting CURLOPT_POST without setting CURLOPT_POSTFIELDS now read the POST-
12563   data from the callback.
12564
12565 - The GOPHER support seems to be broken. I don't think I'll even start fixing
12566   it until someone else finds out... :-)
12567
12568 Daniel (13 March 2002)
12569 - Trying 'curl -I ftp.sunet.se' or similar did a SIZE on a silly "(nil)"
12570   string. If such a file would be present, curl returned the size of it! Now
12571   we prevent this.
12572
12573 - Curl_sendf() was fixed to deal with situation where Curl_write() would've
12574   blocked and thus return -1.
12575
12576 - Setting CURLOPT_PROGRESSFUNCTION to NULL now restores the internal function.
12577
12578 - All CURLFORM_* options can now be used in a CURLFORM_ARRAY except the
12579   CURLFORM_ARRAY itself. This was necessary since we couldn't expand the
12580   CURLFORM_* list proprely and unrestricted until this was the case. It was
12581   also a bit peculiar to users why some options could be used in an array
12582   while others couldn't.
12583
12584 - Removed some silly CRLF lines that had accidentally slipped into src/main.c
12585   Nico Baggus pointed them out to me.
12586
12587 Daniel (11 March 2002)
12588 - CURLFORM_FILENAME was added. This can be set when creating a file upload
12589   part, to set the 'filename' field to a custom value. If this isn't used,
12590   the actually used filename will be included instead (as libcurl always has
12591   done). curl was adjusted accordingly, and now -F accepts a 'filename=' field
12592   too, and allows constructs such as:
12593
12594     -F 'name=@filename;filename=/dev/null'
12595
12596   and this can be combined with type= too, in a manner similar to:
12597
12598    -F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"
12599
12600   Test case 39 was added to verify this functionality.
12601
12602 - The struct formerly known as HttpPost is now named curl_httppost to properly
12603   use the curl name space. I added a #define for the old name to make existing
12604   programs compile even when this new include file is used.
12605
12606 Daniel (8 March 2002)
12607 - Clifford also discovered that if the client code failed early, as when doing
12608   "curl -O" only, it would do fclose(NULL) which caused a segmentation fault
12609   on some systems.
12610
12611 - Clifford Wolf provided a patch that made --progress-bar work again.
12612
12613 - I closed bug report #527032 by making sure that we add a newline after a
12614   transfer when --progress-bar has been used. Before, without the newline, it
12615   made the subsequent text come out wrong.
12616
12617 Version 7.9.5
12618
12619 Daniel (7 March 2002)
12620 - Added docs/KNOWN_BUGS to the release archive.
12621
12622 Daniel (6 March 2002)
12623 - Kevin Roth corrected a flaw in the curl client globbing code that made it
12624   mess up backslashes. This was most notable on windows (cygwin) machines when
12625   using file://.
12626
12627 - Brad provided another fix for building outside the source-tree.
12628
12629 - Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
12630
12631 Daniel (5 March 2002)
12632 - I noticed that the typedef in curl.h for the progress callback prototype was
12633   wrong and thus applications that used it would not get the proper input
12634   data. It used size_t where the implementation actually uses doubles!
12635
12636   I wish I could blame someone else, but this was my fault. Again.
12637
12638 Version 7.9.5-pre6
12639
12640 Daniel (4 March 2002)
12641 - Cut off the changes done during 2001 from this changelog file and put them
12642   in a separate file (CHANGES.2001), available from CVS of course.
12643
12644 - I removed the multi directory. The example sources were moved to the
12645   docs/examples directory where they belong.
12646
12647 - Wrote 7 new man pages for the current functions in the new multi interface.
12648   They're all still pretty basic, but we can use them as a start and add more
12649   contents to them when we figure out what to write. The large amount of man
12650   pages for libcurl now present made me decide to put them in a new separate
12651   subdirectory in the docs directory. Named libcurl.
12652
12653 - Giuseppe Corbelli provided a template file for the EPM package manager, it
12654   gets generated nicely by the configure script now.
12655
12656 Version 7.9.5-pre5
12657
12658 Daniel (1 March 2002)
12659 - Moved the memanalyze.pl script into the tests/ dir and added it to the
12660   release archives. It was previously only present in the CVS tree.
12661
12662 - Modified the February 17th Host: fix, as bug report #523718 pointed out that
12663   it caused crashes!
12664
12665 - Nico Baggus added more error codes to the VMS stuff.
12666
12667 - Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
12668   option. It is just another FTP quote option that allows the user to specify
12669   a list of FTP commands to issue *just before* the transfer command (RETR or
12670   STOR etc). It has turned up a few systems that really need this.
12671
12672   The curl command line tool can also take advantage of this by prefixing the
12673   quote commands with a plus (+) in similar style that post transfer quote
12674   commands are specified.
12675
12676   This is not yet documented. There is no test case for this yet.
12677
12678 Daniel (28 February 2002)
12679 - Ralph Mitchell made some serious efforts and put a lot of sweat in setting
12680   up scripts and things for me to be able to repeat his problems, and I
12681   finally could.  I found a problem with the header byte counter that wasn't
12682   increased properly and thus we could return CURLE_GOT_NOTHING when we in
12683   fact had received data.
12684
12685 Daniel (27 February 2002)
12686 - I had to revert the non-space parsing cookie fix I posted to the mailing
12687   list. Expire dates do have spaces and still need to get parsed properly!
12688   Instead we just ignore trailing white space and it seems to work...
12689
12690 Daniel (26 February 2002)
12691 - Made the cookie property 'Max-Age' work, just since we already tried to
12692   support it, it is better to do it right. No one uses this anyway.
12693
12694 - The cookie parser could crash if a really weird (illegal) cookie line was
12695   received. I also made it better discard really oddly formatted lines better.
12696
12697   Made the cookie jar store the second field from the left using the syntax
12698   that Netscape and Mozilla probably like. Curl itself ignores it.
12699
12700   Added test case 31 for these cases.
12701
12702   Clay Loveless' email regarding some cookie issues started my cleanup.
12703
12704 - Kevin Roth pointed out that my automake fiddles broke the ability to build
12705   outside the source-tree and I posted a patch to the mailing list that brings
12706   this ability back.
12707
12708 Version 7.9.5-pre4
12709
12710 Daniel (25 February 2002)
12711 - Fiddled with the automake files to make all source files in the lib
12712   directory not have ../src in the include path, and the src sources shouldn't
12713   have ../lib!
12714
12715 - All 79 test cases ran OK under Linux and Solaris using the new HTTP server
12716   in the test suite. The new HTTP server was first donated by Georg Horn and
12717   subsequently modified to work with the test suite. It is currently still not
12718   portable enough to run on "all over" but this is a start and I can run all
12719   curl tests on my machines. This is an important requirement for the upcoming
12720   public release.
12721
12722 - Using -d and -I on the same command line now reports an error, as it implies
12723   two different HTTP requests that can't be mixed.
12724
12725 - Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
12726   support %{content_type} to get the content type of the recent download.
12727
12728 - Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
12729   and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
12730   out if we could include winsock.h which turns out not to be a wise choice to
12731   do on cygwin since it has the file but can't include it!
12732
12733 Daniel (22 February 2002)
12734 - Added src/config-vms.h to the release archive.
12735
12736 - Fixed the connection timeout value again, the change from February 18 wasn't
12737   complete.
12738
12739 Version 7.9.5-pre3
12740
12741 Daniel (21 February 2002)
12742 - Kevin Roth and Andrés García both found out that lib/config.h.in was missing
12743   in the pre-release archive and thus the configure script failed.
12744
12745 Version 7.9.5-pre2
12746
12747 Daniel (20 February 2002)
12748 - Andrés García provided a solution to bug report #515228. the total time
12749   counter was not set correctly when -I was used during some conditions (all
12750   headers were read in one single read).
12751
12752 - Nico Baggus provided a huge patch with minor tweaks all over to make curl
12753   compile nicely on VMS.
12754
12755 Daniel (19 February 2002)
12756 - Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
12757   getaddrinfo() calls, he could speed up some name resolving calls with an
12758   order of magnitudes on his Redhat Linux 7.2.
12759
12760 - Philip Gladstone found a second INADDR_NONE problem where we used long
12761   intead of in_addr_t which caused 64bit problemos. We really shouldn't define
12762   that on two different places.
12763
12764 Daniel (18 February 2002)
12765 - Philip Gladstone found a problem in how HTTP requests were sent if the
12766   request couldn't be sent all at once.
12767
12768 - Emil found and corrected a bad connection timeout comparison that made curl
12769   use the longest of connect-timeout and timout as a timeout value, instead of
12770   the shortest as it was supposed to!
12771
12772 - Aron Roberts provided updated information about LDAP URL syntax to go into
12773   the manual as a replacement for the old references.
12774
12775 Daniel (17 February 2002)
12776 - Philip Gladstone pointed out two missing include files that made curl core
12777   dump on 64bit architectures. We need to pay more attention on these details.
12778   It is *lethal* to for example forget the malloc() prototype, as 'int' is
12779   32bit and malloc() must return a 64bit pointer on these platforms.
12780
12781 - Giaslas Georgios fixed a problem with Host: headers on repeated requests on
12782   the same handle using a proxy.
12783
12784 Daniel (8 February 2002)
12785 - Hanno L. Kranzhoff accurately found out that disabling the Expect: header
12786   when doing multipart formposts didn't work very well. It disabled other
12787   parts of the request header too, resulting in a broken header. When I fixed
12788   this, I also noticed that the Content-Type wasn't possible to disable. It is
12789   now, even though it probably is really stupid to try to do this (because of
12790   the boundary string that is included in the internally generated header,
12791   used as form part separator.)
12792
12793 Daniel (7 February 2002)
12794 - I moved the config*.h files from the root directory to the lib/ directory.
12795
12796 - I've added the new test suite HTTP server to the CVS repository, It seems to
12797   work pretty good now, but we must make it get used by the test scripts
12798   properly and then we need to make sure that it compiles, builds and runs on
12799   most operating systems.
12800
12801 Version 7.9.5-pre1
12802
12803 Daniel (6 February 2002)
12804 - Miklos Nemeth provided updated windows makefiles and INSTALL docs.
12805
12806 - Mr Larry Fahnoe found a problem with formposts and I managed to track down
12807   and patch this bug. This was actually two bugs, as the posted size was also
12808   said to be two bytes too large.
12809
12810 - Brent Beardsley found out and brought a correction for the
12811   CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
12812   accidentaly broke Giaslas Georgios' patch.
12813
12814 Daniel (5 February 2002)
12815 - Kevin Roth found yet another SSL download problem.
12816
12817 Version 7.9.4
12818
12819 - no changes since pre-release
12820
12821 Version 7.9.4-pre2
12822
12823 Daniel (3 February 2002)
12824 - Eric Melville provided a few spelling corrections in the curl man page.
12825
12826 Daniel (1 February 2002)
12827 - Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
12828   uses gmtime_r() on all hosts that have it.
12829
12830 Daniel (31 January 2002)
12831 - An anonymous bug report identified a problem in the DNS caching which made it
12832   sometimes allocate one byte too little to store the cache entry in. This
12833   happened when the port number started with 1!
12834
12835 - Albert Chin provided a patch that improves the gethostbyname_r() configure
12836   check on HP-UX 11.00.
12837
12838 Version 7.9.4-pre1
12839
12840 Daniel (30 January 2002)
12841 - Georg Horn found another way the SSL reading failed due to the non-blocking
12842   state of the sockets! I fixed.
12843
12844 Daniel (29 January 2002)
12845 - Multipart formposts now send the full request properly, including the CRLF.
12846   They were previously treated as part of the post data.
12847
12848 - The upload byte counter bugged.
12849
12850 - T. Bharath pointed out that we seed SSL on every connect, which is a time-
12851   consuming operation that should only be needed to do once. We patched
12852   libcurl to now only seed on the first connect when unseeded. The seeded
12853   status is global so it'll now only happen once during a program's life time.
12854
12855   If the random_file or egdsocket is set, the seed will be re-made though.
12856
12857 - Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
12858   curl_easy_getinfo() read the content-type from the previous request.
12859
12860 Daniel (28 January 2002)
12861 - Kjetil Jacobsen found a way to crash curl and after much debugging, it
12862   turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
12863   name resolving.
12864
12865 - Andreas Damm posted a huge patch that made the curl_getdate() function fully
12866   reentrant!
12867
12868 - Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
12869   CURLOPT_POSTFIELDS. You can now!
12870
12871 Daniel (25 January 2002)
12872 - Krishnendu Majumdar pointed out that the header length counter was not reset
12873   between multiple requests on the same handle.
12874
12875 - Pedro Neves rightfully questioned why curl always append \r\n to the data
12876   that is sent in HTTP POST requests. Unfortunately, this broke the test suite
12877   as the test HTTP server is lame enough not to deal with this... :-O
12878
12879 - Following Location: headers when the connection didn't close didn't work as
12880   libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
12881   the restructured internals. 'Frank' posted a bug report about this.
12882
12883 Daniel (24 January 2002)
12884 - Kevin Roth very quickly spotted that we wrongly installed the example
12885   programs that were built in the multi directory, when 'make install' was
12886   used. :-/
12887
12888 Version 7.9.3
12889
12890 Daniel (23 January 2002)
12891 - Andrés García found a persistancy problem when doing HTTP HEAD, that made
12892   curl "hang" until the connection was closed by the server. This problem has
12893   been introduced in 7.9.3 due to internal rewrites, this was not present in
12894   7.9.2.
12895
12896 Version 7.9.3-pre4
12897
12898 Daniel (19 January 2002)
12899 - Antonio filed bug report #505514 and provided a fix! When doing multipart
12900   formposts, libcurl would include an error text in the actual post if a
12901   specified file wasn't found. This is not libcurl's job. Instead we add an
12902   empty part.
12903
12904 Daniel (18 January 2002)
12905 - Played around with stricter compiler warnings for gcc (when ./configure
12906   --enable-debug is used) and changed some minor things to stop the warnings.
12907
12908 - Commented out the 'long long' and 'long double' checks in configure.in, as
12909   we don't currently use them anyway and the code in lib/mprintf.c that use
12910   them causes warnings.
12911
12912 - Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
12913   to correct them. Two compiler warnings were removed as well.
12914
12915 - Andrés García fixed two minor mingw32 building problems.
12916
12917 Version 7.9.3-pre3
12918
12919 Daniel (17 January 2002)
12920 - docs/libcurl-the-guide is a new tutorial for our libcurl programming
12921   friends.
12922
12923 - Richard Archer brought back the ability to compile and build with OpenSSL
12924   versions before 0.9.5.
12925   [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
12926
12927 - The DNS cache code didn't take the port number into account, which made it
12928   work rather bad on IPv6-enabled hosts (especially when doing passive
12929   FTP). Sterling fixed it.
12930
12931 Daniel (16 January 2002)
12932 - Georg Horn could make a transfer time-out without error text. I found it and
12933   corrected it.
12934
12935 - SSL writes didn't work, they return an uninitialized value that caused
12936   havoc all over. Georg Horn experienced this.
12937
12938 - Kevin Roth patched the curl_version() function to use the proper OpenSSL
12939   function for version information. This way, curl will report the version of
12940   the SSL library actually running right now, not the one that had its headers
12941   installed when libcurl was built. Mainly intersting when running with shared
12942   OpenSSL libraries.
12943
12944 Version 7.9.3-pre2
12945
12946 Daniel (16 January 2002)
12947 - Mofied the main transfer loop and related stuff to deal with non-blocking
12948   sockets in the upload section. While doing this, I've now separated the
12949   connection oriented buffers to have one for downloads and one for uploads
12950   (as two can happen simultaneously). I also shrunk the buffers to 20K
12951   each. As we have a scratch buffer twice the size of the upload buffer, we
12952   arrived at 80K for buffers compared with the previous 150K.
12953
12954 - Added the --cc option to curl-config command as it enables so very cool
12955   one-liners. Have a go a this one, building the simple.c example:
12956
12957         $ `curl-config --cc --cflags --libs` -o example simple.c
12958
12959 Daniel (14 January 2002)
12960 - I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
12961   only need to address all writes (send) too and then I'm ready for another
12962   pre-release...
12963
12964 - Stoned Elipot patched the in_addr_t configure test to make it work better on
12965   more platforms.
12966
12967 Daniel (9 January 2002)
12968 - Cris Bailiff found out that filling up curl's SSL session cache caused a
12969   crash!
12970
12971 - Posted the curl questionnaire on the web site. If you haven't posted your
12972   opinions there yet, go there and do it now while it is still there:
12973
12974         http://curl.haxx.se/q/
12975
12976 - Georg Horn quickly found out that the SSL reading no longer worked as
12977   supposed since the switch to non-blocking sockets. I've made a quick patch
12978   (for reading only) but we should improve it even further.
12979
12980 Version 7.9.3-pre1
12981
12982 Daniel (7 January 2002)
12983 - I made the 'bool' typedef use an "unsigned char". It makes it the same on
12984   all platforms, no matter what the platform thinks the default format for
12985   char is. This was noticed since we made a silly comparison involving such a
12986   bool variable, and only one compiler/platform combination (on Debian Linux)
12987   complained about it (that happened to have its char unsigned by default).
12988
12989 - Bug report #495290 identified a cookie parsing problem that was corrected.
12990   When a Set-Cookie: line is received without a trailing semicolon, libcurl
12991   didn't read the last "name=value" pair of the line, leading to confusions...
12992
12993 - Sterling committed his updated DNS cache code.
12994
12995 - I worked with Georg Horn and comments from Götz Babin-Ebell and switched
12996   curl's socket operations completely over to non-blocking for the entire
12997   operation (previously we used non-blocking only for the connection phase).
12998   We had to do this to make the SSL connection phase timeout properly without
12999   the use of signals. A little extra code to deal with this was added.
13000
13001 - T. Bharath pointed out a slightly obscure cookie engine flaw.
13002
13003 - Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
13004   204-replies never provides a response-body. This resulted in bad persistant
13005   behavior when 204 was received.
13006
13007 Daniel (5 January 2002)
13008 - SM updated the VC++ library Makefiles for the new source files.
13009
13010 Daniel (4 January 2002)
13011 - I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
13012   two places in the source code). One happened with VERBOSE set on connects,
13013   and the other when VERBOSE was on and krb4 over nat was used... I honestly
13014   don't think anyone has suffered from these mistakes.
13015
13016 - I replaced a lot of silly occurances of printf() to instead use the more
13017   appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
13018   affected.
13019
13020 - Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
13021   sparc on solaris 8).
13022
13023 - After discussions on the libcurl list with Raoul Cridlig, I just made FTP
13024   response lines get passed to the header callback if such a one is
13025   registered. It'll make it possible for any application to get all the
13026   responses an FTP server sends to libcurl.
13027
13028 Daniel (3 January 2002)
13029 - Sterling Hughes brought a few buckets of code. Now, libcurl will
13030   automatically cache DNS lookups and re-use the previous results first if any
13031   such is available. It greatly improves speed when doing many repeated
13032   operations to the same host.
13033
13034 - As the test case uses --include and then --head, I had to modify src/main.c
13035   to deal with this situation slightly better than previously. When done, we
13036   have 100% good tests again in the main branch.
13037
13038 Daniel (2 January 2002)
13039 - Made test case 25 run again in the multi-dev branch. But it seems that the
13040   changes done on dec-20 made test case 104 cease to work (in both branches).
13041
13042 - Philip Gladstone pointed out a few portability problems in the source code
13043   that didn't compile on 64-bit sparcs using Sun's native compiler.
13044 Daniel (20 December 2001)
13045 - Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
13046   libcurl to hang on transfers over proxy, when the proxy was specified with
13047   an environment variable!
13048
13049 - Added code to make ftp operations treat the NO_BODY and HEADERS options
13050   better:
13051
13052    NO_BODY set TRUE and HEADERS set TRUE:
13053     Return a set of headers with file info
13054
13055    NO_BODY set FALSE
13056     Transfer data as usual, HEADERS is ignored
13057
13058    NO_BODY set TRUE and HEADERS set FALSE
13059     Don't transfer any data, don't return any headers. Just perform the set
13060     of FTP commands.
13061
13062 Daniel (17 December 2001)
13063 - Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
13064   made libcurl support it! This allows libcurl to do SSL connections with the
13065   private key stored in external hardware.
13066
13067   To make this good, he had to add a bunch of new library options that'll be
13068   useful to others as well:
13069
13070    CURLOPT_SSLCERTTYPE  set SSL cert type (PEM/DER)
13071    CURLOPT_SSLKEY       set SSL private key (file)
13072    CURLOPT_SSLKEYTYPE:  set SSL key type (PEM/DER/ENG)
13073    CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
13074                           (CURLOPT_SSLCERTPASSWD is an alias)
13075    CURLOPT_SSLENGINE:   set the name of the crypto engine
13076                         (returns CURLE_SSL_ENGINE_NOTFOUND on error)
13077    CURLOPT_SSLENGINE_DEFAULT: set the default engine
13078
13079   There are two new failure codes:
13080
13081    CURLE_SSL_ENGINE_NOTFOUND
13082    CURLE_SSL_ENGINE_SETFAILED
13083
13084 Daniel (14 December 2001)
13085 - We have "branched" the source-tree at a few places. Checkout the CVS sources
13086   with the 'multi-dev' label to get the latest multi interface development
13087   tree. The idea is to only branch affected files and to restrict the branch
13088   to the v8 multi interface development only.
13089
13090   *NOTE* that if we get bug reports and patches etc, we might need to apply
13091   them in both branches!
13092
13093   The multi-dev branch is what we are gonna use as main branch in the future
13094   if it turns out successful. Thus, we must maintain both now in case we need
13095   them. The current main branch will be used if we want to release a 7.9.3 or
13096   perhaps a 7.10 release before version 8. Which is very likely.
13097
13098 - Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
13099   curl_formadd(), that lets an application add a set of headers for that
13100   particular part in a multipart/form-post. He also provided a section to the
13101   man page that describes the new option.
13102
13103 Daniel (11 December 2001)
13104 - Ben Greear made me aware of the fact that the Curl_failf() usage internally
13105   was a bit sloppy with adding newlines or not to the error messages. Let's
13106   once and for all say that they do not belong there!
13107
13108 - When uploading files with -T to give a local file name, and you end the URL
13109   with a slash to have the local file name used remote too, we now no longer
13110   use the local directory as well. Only the file part of the -T file name
13111   will be appended to the right of the slash in the URL.
13112
13113 Daniel (7 December 2001)
13114 - Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
13115   link failed. Added a configure check and corrected source code.
13116
13117 Version 7.9.2
13118
13119 Daniel (5 December 2001)
13120 - Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
13121   on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
13122   His suggested fix was perfect.
13123
13124 Daniel (4 December 2001)
13125 - Incorporated more macos fixes and added four specific files in a new
13126   subdirectory below src.
13127
13128 Daniel (3 December 2001)
13129 - Eric Lavigne reported two problems:
13130
13131   First one in the curl_strnequal() function. I think this problem is rather
13132   macos 9 specific, as most platform provides a function to use instead of the
13133   one provided by libcurl.
13134
13135   A second, more important, was in the way we take care of FTP responses. The
13136   code would read a large chunk of data and search for the end-of-response
13137   line within that chunk. When found, it would just skip the rest of the
13138   data. However, when the network connections are special, or perhaps the
13139   server is, we could actually get more than one response in that chunk of
13140   data so that when the next invoke to this function was done, the response
13141   had already been read and thrown away. Now, we cache the data not used in
13142   one call, as it could be useful in the subsequent call. Test case 126 was
13143   added and the test ftp server modified, to exercise this particular case.
13144
13145 Version 7.9.2-pre8
13146
13147 Daniel (2 December 2001)
13148 - Bug report #487825 correctly identified a problem when using a proxy and
13149   following a redirection from HTTP to HTTPS. libcurl then re-used the same
13150   proxy connection but without doing a proper HTTPS request.
13151
13152 - Fixed win32 compiling quirks.
13153
13154 Version 7.9.2-pre7
13155
13156 Daniel (30 November 2001)
13157 - Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
13158
13159 Daniel (29 November 2001)
13160 - Added --disable-epsv as an option. When used, curl won't attempt to use the
13161   EPSV command when doing passive FTP downloads. Wrote a test case for it.
13162
13163 - Eric provided a few more fixes for building on Macs. He also pointed out
13164   a flaw in the signal handler restoration code.
13165
13166 Daniel (28 November 2001)
13167 - Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
13168   only when using VERBOSE ftp transfers. Do we use a too small buffer for
13169   gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
13170   hostent struct must be blanked before use? With Dimitris help and these
13171   patches, the problems seem to be history.
13172
13173 - CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
13174   from using the EPSV command before trying the normal PASV. Heikki Korpela
13175   pointed out that some firewalls and similar don't like the EPSV so we must
13176   be able to shut if off to work everywhere.
13177
13178 - I added a configure check for 'in_addr_t' and made the ftp code use that to
13179   receive the inet_addr() return code in. Works on Solaris and Linux at
13180   least. The Linux man page for inet_addr() doesn't even mention in_addr_t...
13181
13182 - Adjusted (almost) all FTP tests to the new command sequence.
13183
13184 - FTP command sequence changes:
13185
13186   EPSV is now always attempted before PASV. It is the final touch to make IPv6
13187   passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
13188   fine with IPv4 too on the servers that support it.
13189
13190   SIZE is now always issued before RETR. It makes curl know the actual
13191   download size before the download takes place, as it makes it less important
13192   to find the size sent in RETR responses. Many sites don't include the size
13193   in there.
13194
13195   Both these changes made it necessary to change the test suite's ftp server
13196   code, and all FTP test cases need to be checked and adjusted!
13197
13198 Daniel (27 November 2001)
13199 - Hans Steegers pointed out that the telnet code read from stdout, not stdin
13200   as it is supposed to do!
13201
13202 Version 7.9.2-pre6
13203
13204 Daniel (27 November 2001)
13205 - Eric Lavigne's minor changes to build on MacOS before OS X were applied.
13206
13207 - greep at mindspring.com provided a main index.html page for our release
13208   archive docs directory. It just links to all the existing HTML files, but
13209   I think it may come useful to people.
13210
13211 - There's now some initial code to support the EPSV FTP command. That should
13212   be used to do passive transfers IPv6-style. The code is still #if 0'ed in
13213   lib/ftp.c as I have no IPv6 ftp server to test this with.
13214
13215 Daniel (26 November 2001)
13216 - Robert Schlabbach had problems to understand how to do resumed transfers,
13217   and I clarified the man page -C section somewhat.
13218
13219 Version 7.9.2-pre5
13220
13221 Daniel (22 November 2001)
13222 - Andrés García helped me out to track down the roots of bug report #479537,
13223   which was concerning curl returning the wrong error code when failing to
13224   connect. This didn't happen on all systems, and more specificly I've so far
13225   only seen this happen on IPv4-only Linux hosts.
13226
13227 - I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
13228   port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
13229   response reader function. The latter write is however likely to occur in our
13230   own buffer unless very big FTP server replies (>25K) are read. I've never
13231   seen such a reply ever, so I think this is a relatively minor risk.
13232
13233 Daniel (21 November 2001)
13234 - Moonesamy provided code to prevent junk from being output when libcurl
13235   returns an error code but no error description and that corrects how make is
13236   run in the Makefile.dist file (that appears as root Makefile in release
13237   archives).
13238
13239 - Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
13240   (non-X).
13241
13242 - Kevin Roth modified the cygwin files once again, now to build against the
13243   shared OpenSSL DLLs.
13244
13245 Version 7.9.2-pre4
13246
13247 Daniel (20 November 2001)
13248 - Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
13249   complete with man page updates!
13250
13251 Daniel (19 November 2001)
13252 - Miklos Nemeth provided details enough to update the Borland makefile
13253   properly.
13254
13255 - Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
13256   amazed we never saw this before!
13257
13258 - Kevin Roth patched the cygwin Makfile.
13259
13260 Daniel (16 November 2001)
13261 - Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
13262   HTTP.
13263
13264 Version 7.9.2-pre3
13265
13266 Daniel (14 November 2001)
13267 - Samuel Listopad patched away the problem with SSL we got when someone call
13268   curl_global_init() => curl_global_cleanup() => curl_global_init(). The
13269   second init would not "take" and SSL would be unusable with curl from that
13270   point. This doesn't change the fact that calling the functions that way is
13271   wrong. curl_global_init() should be called exactly once and not more.
13272
13273 Daniel (13 November 2001)
13274 - Fixed some minor variable type mixups in ftp.c that caused compiler warnings
13275   on HP-UX 11.00.
13276
13277 - The FTP fix I did yesterday used an uninitialized variable that caused
13278   spurious errors when doing FTP.
13279
13280 Version 7.9.2-pre2
13281
13282 Daniel (12 November 2001)
13283 - Ricardo Cadime fell over a multiple-requests problem when first a FTP
13284   directory fetch failed and then a second request is made after that. The
13285   second request happened to get the FTP server response back from the
13286   previous request, when it did its initial CWD command.
13287
13288 - Bjorn Reese pointed out that we could improve the time diff function to
13289   prevent truncation a bit.
13290
13291 - Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
13292   work for plain HTTP requests! So I made that work.
13293
13294 Version 7.9.2-pre1
13295
13296 Daniel (12 November 2001)
13297 - Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
13298   faster, it should also support such ("broken") proxies that John Lask
13299   previously have reported problems with. His proxy sends a trailing zero byte
13300   after the end of the (proxy-) headers. I've tested this myself and it seems
13301   to work on a proxy the previous version also worked with...! This rewrite is
13302   due to the problems John Lask previously experienced.
13303
13304 - Andrés García found out why the "current speed" meter sometimes showed 2048K
13305   for very quick transfers. It turned out the "time diff"-function returned a
13306   zero millisecond diff. We now always say it is at least one millisecond! In
13307   reality, these timers very rarely have that good resolution so even though
13308   the time diff was longer than 1 millisecond, it was reported as no diff.
13309
13310 - I also modified the getinfo() again when returning times, as Paul Harrington
13311   reports that 7.9.1 only returns times with 1 second accuracy, which indeed
13312   is wrong.
13313
13314 Daniel (8 November 2001)
13315 - Marcus Webster found out that curl_formadd() could read one byte outside a
13316   buffer boundary, which then of course could lead to a crash. Marcus also
13317   gracefully provided a patch for this this.
13318
13319 - Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
13320   correct way of calling gethostbyname_r() and thus failed to resolve hosts.
13321   This is two errors: it shouldn't continue the configure script if it finds
13322   gethostbyname_r() but can't figure out how to use it, and it should really
13323   figure out how to use it as it was running Linux and we know how that
13324   works...
13325
13326 Daniel (7 November 2001)
13327 - docs/VERSIONS is a new file in the archive that explains the version number
13328   system we use in the curl project.
13329
13330 - Did some more fixes that now makes libcurl only ignore signals as long as
13331   it needs to, and then restore (if any) previous signal handler again.
13332
13333 Daniel (6 November 2001)
13334 - Enrik Berkhan posted bug report #478780, in which he very correctly pointed
13335   out two bad timeout matters in libcurl: we didn't restore the sigaction
13336   struct (the alarm handler for SIGALRM) nor did we restore the previous
13337   alarm() timeout that could've been set by a "parent" process or similar.
13338
13339 - Kevin Roth made the cygwin binary get stripped before install.
13340
13341 Daniel (5 November 2001)
13342 - Detlef Schmier reported that curl didn't compile using Solaris 8 with the
13343   native cc compiler. It was due to a bad function prototype. Fixed now.
13344   Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
13345   though, as gcc then complains like crazy on OpenSSL include files... :-(
13346
13347 - John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
13348   to work on all platforms.
13349
13350 - John Lask added the -1/--TLSv1 options that forces SSL into using TLS
13351   version 1 when speaking HTTPS.
13352
13353 - John Lask brought a brand new VC++ makefile for the lib directory, that
13354   works a lot better than the previous!
13355
13356 - Ramana Mokkapati brought some clever insights on the LDAP failures (bug
13357   report #475407), and his suggested changes are now applied.
13358
13359 Version 7.9.1
13360
13361 Daniel (4 November 2001)
13362 - I've added a number of new test cases the last few days. A few of them since
13363   I got reports that hinted on problems on timeouts, so I added four tests
13364   with timeouts for all sorts of protocols and stuff. I also came to think of
13365   a few other error scenarios that we currently didn't test properly, so I
13366   wrote up tests for a few of those too.
13367
13368 Daniel (2 November 2001)
13369 - Replaced read() and write() with recv() and send() for socket operations
13370   even under normal unixes.
13371
13372 Daniel (1 November 2001)
13373 - When an FTP transfer was aborted due to a timeout, it wasn't really aware of
13374   how many bytes that had been transferred and the error text always said 0
13375   bytes. I modified this to output the actually transferred amount! :-)
13376
13377 - The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
13378   added more comments in the lib/ftp.c source file.
13379
13380 - Minor updates to the FAQ, added a brand new section to the web site about
13381   the name issue (who owns "curl"? will someone sue us? etc etc):
13382   http://curl.haxx.se/legal/thename.html
13383
13384 Version 7.9.1-pre7
13385
13386 Daniel (31 October 2001)
13387 - The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
13388   the calculations used longs instead of doubles! Paul Harrington reported.
13389
13390 - The SSL SocketIsDead() checks weren't good enough (as expected really), so I
13391   had to add a generic internal try-it-out system. If the request on a re-used
13392   connection seems to fail, then we go back and get a new (fresh) connection
13393   and re-tries the request on that instead. It kind of makes the
13394   SocketIsDead() check obsolete, but I think it is a quicker way for those
13395   cases where it actually discovers that the connection is dead.
13396
13397 - When fixing the above, I noticed that we did quite a few writes to sockets
13398   in libcurl where we didn't check the return code (that it actually worked to
13399   send the data). With the new "attempted request" system we must detect those
13400   situations so I went over a bunch of functions, changed return types and
13401   added checks for what they actually return.
13402
13403 Version 7.9.1-pre6
13404
13405 Daniel (31 October 2001)
13406 - Paul Harrington detected a problem with persistant SSL connections. Or to be
13407   more exact, we didn't properly detect that the connection was dead and then
13408   a second connection would try to re-use it wrongly. The solution to this
13409   problem is still not very clear and I'm working on it. One OpenSSL insider
13410   said there is no way to know if the SSL connection is alive or not without
13411   actually trying an operation.
13412
13413 Daniel (30 October 2001)
13414 - If a cookie was read from a file, it could accidentally strdup() a NULL
13415   pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]
13416
13417 - The MANUAL file now documents -t correctly. I also fixed the -T description
13418   in the curl.1 man page.
13419
13420 Daniel (29 October 2001)
13421 - John Janssen found out that curl_formadd was missing in the libcurl.def file
13422   and that the docs stated the wrong return type for the function.
13423
13424 - Andrés García found a bug with multiple files in the curl_formadd() function,
13425   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].
13426
13427 - Kevin Roth brought another patch that moved the cygwin package files to the
13428   packages/Win32/cygwin directory.
13429
13430 - A bug in the connection re-use logic made repeated requests to the same FTP
13431   server (when using name+pasword in the URL) sometimes use more than one
13432   connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
13433
13434 - Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
13435   code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
13436   (test 19)...
13437   [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
13438
13439 Daniel (26 October 2001)
13440 - Added test28 which verifies that "Location:"-following works even if the
13441   contents is separated with more than one space.
13442
13443 Daniel (25 October 2001)
13444 - Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
13445   correct data has been output.
13446
13447 Version 7.9.1-pre5
13448
13449 Daniel (24 October 2001)
13450 - T. Bharath found a memory leak in the cookie engine. When we update a cookie
13451   that we already knew about, we lost a chunk of memory in the progress... The
13452   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]
13453
13454 Daniel (23 October 2001)
13455 - pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
13456   would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]
13457
13458 Daniel (22 October 2001)
13459 - Tom Benoist reported that this SGI IRIX compiler didn't handle indented
13460   preprocessor instructions, so they're no longer in the source code!
13461
13462 - Applied Kevin Roth's patches to make it easier to build cygwin packages from
13463   the out-of-the-box curl release archives.
13464
13465 - I forgot to mention it below, but libcurl now closes connections that report
13466   transfer failures. Unconditionally. This could be made more nicely in the
13467   future if we set a flag or something that the connection is still good to be
13468   used for the errors that know that for a fact. We have to close the
13469   connection for the cases where we abort for example a HTTP transfer in the
13470   middle, or otherwise we might re-use that connection later with lots of data
13471   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]
13472
13473 Daniel (19 October 2001)
13474 - CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
13475   anything, not even a header. test case 37 was added to test for this.
13476
13477 - T. Bharath made curl_easy_duphandle() properly clone the cookie status as
13478   well.
13479
13480 Version 7.9.1-pre4
13481
13482 Daniel (18 October 2001)
13483 - CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
13484   the HTTP return code is below 400.
13485
13486 Daniel (17 October 2001)
13487 - The test suite now kills any running test http server when you re-start the
13488   tests.
13489
13490 - We had to remove 'use strict' from two perl scripts, as the cygwin
13491   adjustments didn't play nicely otherwise for some reason. Any perl wizard
13492   out there who can put the scrict back and still make it run good on unix and
13493   cygwin?
13494
13495 - A potential memory leak pointed out to us by Yanick Pelletier was removed.
13496   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]
13497
13498 - The memory debugging system should no longer display anything to stderr
13499   if the curl_memdebug() hasn't been used to explicitly say so. This makes it
13500   easier to use the memory debug system and switch the logging on/off.
13501
13502 Daniel (16 October 2001)
13503 - Kevin Roth provided fixes for building curl nicer in cygwin environments.
13504
13505 Daniel (12 October 2001)
13506 - Cleaning up the progress meter/info code. The "current speed" is now more
13507   accurate than before as we now use the true time spent between the measures,
13508   and not just "assuming" every-second-update like before. The output should
13509   now also be of the same width at all times, never to show "extra" zeroes on
13510   the right edge.
13511
13512 - After talking about possible Location: bugs on the mailing list, I modified
13513   the "absolute URL" checker in lib/transfer.c to be more strict when checking
13514   if the redirected URL is absolute.
13515
13516 Daniel (11 October 2001)
13517 - Kevin Roth provided patches that make the test suite run fine on Windows
13518   2000 running cygwin.
13519
13520 Daniel (10 October 2001)
13521 - Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
13522   Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.
13523
13524 Version 7.9.1-pre3
13525
13526 Daniel (9 October 2001)
13527 - Added a new option to the command line client: -0/--http1.0. It uses the new
13528   libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
13529   requests instead of the default version (1.1). It should only be used if you
13530   really MUST do that because of a silly remote server.
13531
13532 - Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
13533   all public curl-symbols should.
13534
13535 - libcurl now explicitly ignores the SIGPIPE signal.
13536
13537 Daniel (8 October 2001)
13538 - Kevin Roth's change to the cookie-jar comment (in the stored file) was
13539   applied.
13540
13541 - Lucas Adamski's minor bug in the bind error code failf() was fixed.
13542
13543 Daniel (5 October 2001)
13544 - Moonesamy fixed the Curl_connecthost() function to not give compiler errors
13545   on a bunch of compilers, due to the argument named 'socket'.
13546
13547 - Moonesamy also provided updated VC++ makefiles and project files.
13548
13549 Version 7.9.1-pre2
13550
13551 Daniel (4 October 2001)
13552 - Albert Chin provided a configure patch that makes the script detect proper
13553   gethostbyname_r() method without actually running any code, only compiling
13554   is necessary. This also removes the need of having a resolving 'localhost'
13555   name.
13556
13557 - Found and removed memory leakage (name resolve data) in libcurl on
13558   IPv6-enabled hosts. These could sneak through because we didn't have any
13559   resource tracing on the IPv6-related functions. We do now.
13560
13561 Daniel (3 October 2001)
13562 - Keith McGuigan patched away a (mainly Windows-) problem with the name
13563   resolver data being kept in the static memory area, which is removed when a
13564   thread is killed. The curl handle itself though perfectly handles being
13565   passed between threads.
13566
13567 - Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
13568   required an Authorization: header. Now, proxies are not supposed to require
13569   that header, that is for true servers...
13570
13571 - I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.
13572
13573 Version 7.9.1-pre1
13574
13575 Daniel (3 October 2001)
13576 - Georg Huettenegger once again made an effort beyond the call of duty and not
13577   only improved the curl_formadd() function, but also took care of adjusting
13578   the curl command line client to use this new function instead of the
13579   obsoleted curl_formparse.
13580
13581 Daniel (2 October 2001)
13582 - Major fix in how libcurl does TCP connects. It now does non-blocking
13583   connects to enable good timeouts without signals, and it now tries all IP
13584   addresses for any given host (if it resolves more than one and the first
13585   one(s) don't connect). Added a new source file 'connect.c' to deal with all
13586   the TCP connect stuff.
13587
13588 - We now support IPv4-style IP-addresses in rfc2732-format, to better support
13589   people writing scripts without knowing what address there is.
13590
13591 Daniel (28 September 2001)
13592 - Cleanups in the FTP source code. Divided the code into even more smaller
13593   functions and generally tried to make the differences between IPv4 and IPv6
13594   get less noticable in the sources.
13595
13596 - If the remote file time is not readable/accessable/understood by libcurl,
13597   libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
13598   did. This should make curl not touch the file data unless there was a known
13599   remote date when -R is used.
13600
13601 Daniel (27 September 2001)
13602 - Working on getting non-blocking connects working platform independent. We
13603   will also make curl try all IPs for a given host if the first one should
13604   fail.
13605
13606 Daniel (26 September 2001)
13607 - Kevin Roth provided a cookie example that proved the cookie jar
13608   functionality wasn't working properly. I added test case 46 and made it
13609   work.
13610
13611 Daniel (25 September 2001)
13612 - Jörn Hartroth updated the mingw32 makefiles.
13613
13614 Version 7.9
13615
13616 Daniel (23 September 2001)
13617 - Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
13618   when FTP RETR failed.
13619
13620 - Made the FTP upload tests run fine on machines with IPv6 enabled.
13621
13622 Version 7.9-pre8
13623
13624 Daniel (19 September 2001)
13625 - Vojtech Minarik set up a special-purpose test server and provided me with
13626   test certificates in order for me to repeat the bug reports #440068 and
13627   #440373. It turned out we didn't check all the error codes properly. We do
13628   now, and connecting with a unacceptable certificate will make libcurl fail
13629   to connect with an error code returned.
13630
13631 - Ramana Mokkapati found a case when the Location: following code did wrong.
13632   I wrote a test case for this (45).
13633
13634 Version 7.9-pre7
13635
13636 Daniel (17 September 2001)
13637 - Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
13638   winsock 2.0.
13639
13640 Version 7.9-pre6
13641
13642 - libtool 1.4.2 is now in use!
13643
13644 Version 7.9-pre5
13645
13646 Daniel (14 September 2001)
13647 - Added another 14 ftp tests.
13648
13649 Daniel (13 September 2001)
13650 - Added curl_easy_duphandle() to the easy.h header file. It has now been
13651   tested and proved to work in a real-world tests by T Bharath. We still need
13652   to write up some docs for this function.
13653
13654 - Added four more ftp tests to the test suite.
13655
13656 Daniel (12 September 2001)
13657 - CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
13658   --ciphers. Use them to specify a list of ciphers to use in the SSL
13659   connection.
13660
13661 - T. Bharath found a memory leak in libcurl's windows version. It turned out
13662   to be the new duphandle() that didn't quite work yet.
13663
13664 Version 7.9-pre4
13665
13666 Daniel (11 September 2001)
13667 - Added verbose output for SSL connections that output the server
13668   certificate's start and expire dates. As suggested by Paul Harrington.
13669
13670 - Heikki Korpela found problems in the perl ftp server used for the test
13671   suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
13672   made, but nothing really certain.
13673
13674 - T. Bharath has experienced problems with libcurl's stack usage on windows
13675   and works on reducing it.
13676
13677 Daniel (10 September 2001)
13678 - Cris Bailiff fixed the perl interface. It stopped working since the changed
13679   behavior with WRITEHEADER and NULL pointers.
13680
13681 - The "output cookies" function could dump core if no cookies were enabled.
13682
13683 Daniel (7 September 2001)
13684 - SM pointed out that the SSL code didn't compile any longer if SSL was
13685   disabled... Also, we needed to correct the #include for the utime stuff on
13686   windows.
13687
13688 Daniel (6 September 2001)
13689 - T. Bharath pointed out a flaw in the SSL session cache code that made it
13690   sometimes read from a NULL pointer.
13691
13692 Version 7.9-pre3
13693
13694 Daniel (3 September 2001)
13695 - Added the -R/--remote-time option, that uses the remote file's datestamp to
13696   set the local file's datestamp. Thus, when you get a remote file your local
13697   file will get the same time and date. Note that this only works when you use
13698   -o or -O.
13699
13700 - Installed libtool 1.4.1, libtoolized and everything.
13701
13702 Daniel (1 September 2001)
13703 - Heikki Korpela pointed out that I did not ship the proper libtool stuff in
13704   the pre-releases, even though that was my intention. libtoolize has now
13705   been re-run.
13706
13707 - Heikki also patched away the bad use of 'make -C' in the test suite
13708   makefile. make -C is not very portable and is now banned from here.
13709
13710 Version 7.9-pre2
13711
13712 Daniel (31 August 2001)
13713 - I just made a huge internal struct rehaul, and all the big internally used
13714   structs have been renamed, redesigned and stuff have been moved around a bit
13715   to make the source easier to follow, more logically grouped and to hopefully
13716   decrease future bugs. I also hope that this will make new functions to get
13717   easier to add, and make it less likely that we have bugs left like the URL-
13718   free bug from August 23.
13719
13720 Version 7.9-pre1
13721
13722 Daniel (29 August 2001)
13723 - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
13724   that to specify the file name in which you want to have all cookies curl
13725   knows of, dumped to. It'll be written using the netscape cookie format.
13726
13727   This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
13728   which in turn dumps this information when curl_easy_cleanup() is invoked.
13729   There might be reasons to re-consider my choice of putting it there. Perhaps
13730   it is better placed to get done just before *_perform() is done. It is all
13731   of course depending on how you guys want to use this feature...
13732
13733 - Added ftpupload.c in the source examples section, based on source code posted
13734   by Erick Nuwendam.
13735
13736 Daniel (28 August 2001)
13737 - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
13738   on OpenBSD and hopefully on FreeBSD as well!
13739
13740 - Georg Huettenegger modified the curl_formadd() functionality slightly, and
13741   added support for error code 417 when doing form post and using the Expect:
13742   header. Great work!
13743
13744 - Made some tests with cached SSL session IDs, and they seem to work. There
13745   should be a significant speed improvement in the SSL connection phase, but
13746   in my tiny tests it just isn't possible to notice any difference. Like other
13747   caching in libcurl, you must reuse the same handle for the caching to take
13748   effect. SSL session ID caching is done on a per host-name and destination
13749   port number basis.
13750
13751   Set verbose, and you'll get informational tests when libcurl detects and
13752   uses a previous SSL session ID.
13753
13754 - Upgraded to automake 1.5 on my development/release machine.
13755
13756 Daniel (27 August 2001)
13757 - Slowly started writing SSL session ID caching code
13758
13759 Daniel (24 August 2001)
13760 - T. Bharath removed compiler warnings on windows and updated the MS project
13761   files.
13762
13763 - Kevin Roth reported two kinds of command line constructs with the new -G that
13764   curl didn't really deal with the way one would like.
13765
13766 - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
13767   own portable version named strequal() that should be used!
13768
13769 - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
13770   debug object modules causing confusions.
13771
13772 Daniel (23 August 2001)
13773 - T. Bharath accurately found a libcurl bug that would happen when doing a
13774   second invoke of curl_easy_perform() with a new URL when the previous invoke
13775   followed a Location: header.
13776
13777 - Started the improvement work on the cookie engine:
13778   - Now keeps cookies in the same order as the cookie file
13779   - A write to the possibly static string was removed
13780   - Added a function that can output all cookies
13781   - Now supports reading multiple cookie files
13782
13783 - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
13784
13785 - Split up the monster function in lib/ftp.c to use more smallish functions to
13786   increase readability and maintainability.
13787
13788 Daniel (21 August 2001)
13789 - Georg Huettenegger's big patch was applied. Now we have:
13790   o "Expect: 100-continue" support. We will from now on send that header in
13791     all rfc1867-posts, as that makes us abort much faster when the server
13792     rejects our POST. Posting without the Expect: header is still possible in
13793     the standard replace-internal-header style.
13794   o curl_formadd() is a new formpost building function that is introduced to
13795     replace the now deprecated curl_formparse() function. The latter function
13796     will still hang around for a while, but the curl_formadd() is the new way
13797     and correct way to build form posts.
13798   o Documentation has been updated to reflect these changes
13799
13800   These changes are reason enough to name the next curl release 7.9...
13801
13802 - We now convert man pages to HTML pages and include them in the release
13803   archive. For the pleasure of everyone without nroff within reach.
13804
13805 - Andrés García's suggested flushing of the progress meter output stream was
13806   added. It should make the progress meter look better on Windows.
13807
13808 - Troy Engel pointed out a mistake in the configure script that made it fail
13809   on many Red Hat boxes!
13810
13811 Daniel (20 August 2001)
13812 - We need an updated libtool to make a better build environment for OpenBSD
13813   as well as FreeBSD
13814
13815 Version 7.8.1
13816
13817 Daniel (20 August 2001)
13818 - Brad pointed out that we ship two extra libtool files in the tarballs that
13819   we really don't need to! Removing them makes the gz-archive about 60K
13820   smaller!
13821
13822 - Albert Chin brought fixes for the configure script to detect socklen_t
13823   properly as well as moving lots of our custom autoconf macros to
13824   acinclude.m4.
13825
13826 Daniel (19 August 2001)
13827 - Moonesamy improved his -G feature for host names only URLs...
13828
13829 Daniel (17 August 2001)
13830 - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
13831   symbols and to not use global variables.
13832
13833 Version 7.8.1-pre6
13834
13835 Daniel (16 August 2001)
13836 - S. Moonesamy added the -G option to curl, that converts the data specified
13837   with -d to a GET request. Default action when using -d is POST. When -G is
13838   used, the -d specified data will be appended to the URL with a '?'
13839   separator. As suggested previously by Kevin Roth.
13840
13841 - curl-config --libs should now display all linker options required to link
13842   with libcurl. It includes the path and options for libcurl itself.
13843   curl-config --cflags displays the compiler option(s) needed to compile
13844   source files that use libcurl functions. Basically, that sets the include
13845   path correct.
13846
13847 Daniel (15 August 2001)
13848 - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
13849   were parsed and used. (RFC2732-format)
13850
13851 - Bug #12733 over on php.net identified a problem in libcurl that made it core
13852   dump if you used CURLOPT_POST without setting any data to post with
13853   CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
13854   now equals setting it to no data at all.
13855
13856 - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
13857   properly when used for multiple URLs on a single command line. Indeed, the
13858   variable was not reset between the requests. This is now fixed.
13859
13860 - David James fixed the Borland makefile so that libcurl still compiles and
13861   builds with that compiler.
13862
13863 Daniel (14 August 2001)
13864 - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
13865
13866 - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
13867   windows users to curl_global_init(), that makes libcurl init the winsock
13868   stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
13869   with this is a comfortable shortcut to fame.
13870
13871 Version 7.8.1-pre5
13872
13873 Daniel (14 August 2001)
13874 - Nico Baggus provided more feedback from his VMS porting efforts and a few
13875   minor changes were necessary.
13876
13877 - I modified configure.in so that --enable-debug sets more picky gcc options.
13878   I then removed almost all the new warnings that appeared, and by doing so I
13879   corrected the size_t-treated-as-signed problem that has been discussed on
13880   the mailing list previously. I also removed a bunch of the just recently
13881   added #ifdef VMS lines.
13882
13883 - I removed the use of a global variable in the SSL code. It was once
13884   necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
13885   (hopefully) still work if libcurl is built against an ancient version of
13886   OpenSSL.
13887
13888 Daniel (13 August 2001)
13889 - Peter Todd posted a patch that now allows non-file rc1867-style form posts
13890   to be larger than 4K.
13891
13892 Daniel (10 August 2001)
13893 - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
13894
13895 Daniel (9 August 2001)
13896 - The redirected error stream was closed before the curl_easy_cleanup() call
13897   was made, and when VERBOSE was enabled, the cleanup function tried to use
13898   the stream. It could lead to a segmentation fault. Also, the stream was
13899   closed even if we looped to get more files.  Corrects Dustin Boswell's bug
13900   report #441610
13901
13902 - Now generates the release configure script with autoconf 2.52
13903
13904 Version 7.8.1-pre4
13905
13906 Daniel (8 August 2001)
13907 - curl -E uses a colon to separate a file name from a passphrase. This turned
13908   out really bad for the windows people who wants to include a drive letter in
13909   the file name like "c:\cert.pem". There's now a win32 work-around
13910   implemented that tries work around that, when the colon seems to be used for
13911   this kind of construct.
13912
13913 - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
13914   verify the server's CN field when talking https://. If --cacert is not used,
13915   any failures in matching is only displayed as information (-v).
13916
13917 Daniel (7 August 2001)
13918 - Wrote up nine more test cases, more or less converted from the former test
13919   suite.
13920
13921 Daniel (6 August 2001)
13922 - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
13923   directory in which libcurl itself is installed in. While this wasn't my
13924   initial intention with this option, it makes sense and makes linking with
13925   libcurl easier.
13926
13927 - Stefan Ulrich pointed out to us that other tools and libraries treat file://
13928   URLs with only one slash after the host name slighly different than libcurl
13929   does. Since all the others seem to agree, we better follow them.
13930
13931 - Nico Baggus provided us with a huge set of fixes to make curl compile and
13932   build under OpenVMS.
13933
13934 Version 7.8.1-pre3
13935
13936 Daniel (6 August 2001)
13937 - Jonathan Hseu noticed that you couldn't get a header callback unless you
13938   set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
13939   data. This is now fixed.
13940
13941 Daniel (5 August 2001)
13942 - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
13943   1.5.x servers, as they return really screwed up response headers when asked
13944   for with HTTP 1.1.
13945
13946 - curl_escape() no longer treats already encoded characters in the input
13947   string especially.
13948
13949 Daniel (3 August 2001)
13950 - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
13951   avoid the BSD annoucement clause of the license in the former file.
13952
13953 - Andrew Francis provided a new version of base64.c to work around the license
13954   boiler plate that came with the previous one. I patched it, but the glory
13955   should go to Andrew for his heads up.
13956
13957 - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
13958   couldn't always reliably change HTTP request. This has now been fixed and a
13959   new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
13960   requestr (back) to GET.
13961
13962 - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
13963   release archives. It should be now.
13964
13965 Daniel (2 August 2001)
13966 - Frank Keeney pointed out a manual mistake for certificate convertions.
13967
13968 - Tomasz Lacki pointed out a problem in the transfer loop that could make the
13969   select() loop use far too much CPU.
13970
13971 - Pawel A. Gajda pointed out an output mistake done when using libcurl's
13972   progress callback.
13973
13974 Daniel (29 June 2001)
13975 - Naveen Noel noticed that the Borland library makefile wasn't updated.
13976
13977 - Nic Roets brought a fix for the certificate verification when using SSL.
13978
13979 Daniel (27 June 2001)
13980 - Made the FTP tests run OK even on machines running curl IPv6-enabled.
13981
13982 - Troy Engel corrected some RPM package details.
13983
13984 Version 7.8.1-pre2
13985
13986 Daniel (25 June 2001)
13987 - Björn Stenberg correctly identified a problem that occurred when downloading
13988   several files with curl, and using resume. The first file's resume index was
13989   then used for all files, resulting in weird results...
13990
13991 - Anton Kalmykov provided a fix that makes curl work with form field names
13992   with spaces like when -F is used.
13993
13994 Version 7.8.1-pre1
13995
13996 Daniel (20 June 2001)
13997 - Mike Bytnar provided a fine report that proved that the --with-ssl option
13998   for configure needed tweaking. It no longer searches the default directories
13999   for OpenSSL libs or directories when a specified path is given.
14000
14001 Daniel (19 June 2001)
14002 - When an FTP transfer is cut off during transfer, curl could present a truly
14003   garbaged error message and in worst case dump core. Thanks to detailed
14004   reports from Shawn Poulson we nailed this.
14005
14006 Daniel (12 June 2001)
14007 - Salvador Dávila provided a fix for FTP range downloads.
14008
14009 - Added a few more test cases from the former test suite to the new file
14010   format. We're now at a total of 26 tests.
14011
14012 Daniel (11 June 2001)
14013 - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
14014   David Odin.
14015
14016 Daniel (7 June 2001)
14017 - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
14018
14019 - I made SSL certificate failure messages to be more detailed.
14020
14021 Version 7.8
14022
14023 Daniel (7 June 2001)
14024 - SDavila provided a resumed download fix.
14025
14026 Version 7.8-pre4
14027
14028 Daniel (1 June 2001)
14029 - Sterling provided some new PHP examples.
14030
14031 - Changed the CVS hierarchy and the older checkout instruction does no longer
14032   work. We moved the entire source code into a CVS module named 'curl'.
14033
14034 Daniel (31 May 2001)
14035 - CURLOPT_MUTE does not exist anymore. It is still present in the include file
14036   to not cause compiler errors for applications using it, but it isn't used
14037   anywhere in the library.
14038
14039 Version 7.8-pre3
14040
14041 Daniel (31 May 2001)
14042 - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
14043   less warnings.
14044
14045 - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
14046   curl_global_init() now lets the argument flags *SET* what parts to
14047   init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
14048   known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
14049   necessary. Man page updated accordingly.
14050
14051 - Fixed the strtok.h include file as it wouldn't compile on all platforms!
14052
14053 Daniel (30 May 2001)
14054 - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
14055   set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
14056   option is subject for complete removal...
14057
14058 Version 7.8-pre2
14059
14060 Daniel (30 May 2001)
14061 - Cris Bailiff wrote a makefile for building Solaris packages.
14062
14063 - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
14064   we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
14065
14066 - Kjetil Jacobsen privately announced his python interface to libcurl,
14067   available at http://pycurl.sourceforge.net/
14068
14069 Daniel (29 May 2001)
14070 - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
14071   safe function. Now configure checks for a thread-safe version, and
14072   lib/strtok.c offers one for the systems that don't come with one included!
14073
14074 - Mettgut Jamalla correctly pointed out that the -# progress bar was written
14075   to stderr even though --stderr redirection was used. This is now corrected.
14076
14077 - I moved out the list of contributors from the curl.1 man page and made a
14078   separate docs/THANKS file. It makes the list easier to find, and made it
14079   easier for me to make a separate web page with that same information.
14080
14081   I really do want all you guys mentioned in there to feel you get the credit
14082   you deserve.
14083
14084 - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
14085
14086 Version 7.8-pre1
14087
14088 Daniel (28 May 2001)
14089 - curl-config now supports '--vernum' that outputs a plain hexadecimal version
14090   of the libcurl version number (using 8 bits for each 3 numbers). Version
14091   7.7.4 appears as 070704
14092
14093 - Wrote man pages for curl_global_init and curl_global_cleanup...
14094
14095 - T. Bharath brought news about the usage of the OpenSSL interface that was
14096   not previously taken into consideration and thus caused libcurl to leak
14097   memory.  The only somewhat sane approach to fix this dilemma, is adding two
14098   two new functions curl_global_init() and curl_global_cleanup() that should
14099   be called *ONCE* by the application using libcurl. The init should be done
14100   only at startup, no matter how many threads the application is gonna use,
14101   and the cleanup should be called when the application has finished using
14102   libcurl completely.
14103
14104   *** UPGRADE NOTICE ***
14105
14106   If you write applications using libcurl, you really want to use the two
14107   functions mentioned above !!!
14108
14109   I can't say I think this is a very beautiful solution, but as OpenSSL
14110   insists on making lots of stuff on a "global" scope, we're forced to walk
14111   the path they point us to.
14112
14113 - Moving more test cases into the new file format.
14114
14115 Version 7.7.4-pre3
14116
14117 Daniel (23 May 2001)
14118 - Introduced a new file format for storing test cases, and thus I had to
14119   modify all the perl test scripts and more (I added a new one). I have not
14120   "ported" all the old test cases to the new format yet, but it'll come.
14121
14122   The main advantage of this new format is that all test data for each test
14123   case is stored in a single file. It gives a better overview for each test
14124   case and a lot less files.
14125
14126 - Andrés García brought a fix for the netscape/mozilla cookie file parsing
14127   function, as it turns out it doesn't always store the path!
14128
14129 Daniel (22 May 2001)
14130 - As was reported anonymously, when FAILONERROR was used, the httpcode was
14131   not stored properly and thus wasn't possibly to read after a transfer with
14132   the curl_easy_getinfo() function. This is now corrected.
14133
14134 - Installed and made use of the following tool versions:
14135     autoconf 2.50
14136     libtool 1.4
14137     automake 1.4-p1
14138
14139   I wouldn't recommend any developer to try to generate things with older
14140   versions than these. Building from CVS will probably more or less require
14141   at least these versions.
14142
14143   As a result of this, the configure script grew to more than double its
14144   previous size!
14145
14146   Arkadiusz Miskiewicz helped me by pointing out I had to remove my
14147   acinclude.m4 file before I could get it working!
14148
14149 Daniel (21 May 2001)
14150 - I made ftps:// work. Added test case 400 to the release archive, as the
14151   first ftps:// test case. Requires stunnel.
14152
14153 - Also made the test cases that runs ssl tests not run if libcurl isn't built
14154   with ssl support.
14155
14156 Daniel (19 May 2001)
14157 - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
14158   are actually needed. Albert Chin's and Domenico Andreoli's suggestions
14159   helped out.
14160
14161 Version 7.7.4-pre2
14162
14163 Daniel (18 May 2001)
14164 - Nicer configure-check for the OpenSSL headers, which then sets the proper
14165   variable to have curl-config be good. (Albert Chin provided the fix)
14166
14167 - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
14168   It was now renamed to prevent collides with other libs. (After discussions
14169   with Sterling Hughes and the implications this had on PHP builds.)
14170
14171 Daniel (17 May 2001)
14172 - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
14173   turned out to be a problem with the debian-built 7.7.3-package that
14174   contained files from the 7.7.2 release!
14175
14176 - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
14177   make programs that use it, not fail when compiling against this version of
14178   libcurl.
14179
14180 Daniel (14 May 2001)
14181 - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
14182   connections.
14183
14184 Version 7.7.4-pre1
14185
14186 Daniel (14 May 2001)
14187 - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
14188
14189 - Added the first HTTPS test to the test suite in the release archive.
14190
14191 Daniel (12 May 2001)
14192 - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
14193   certificate and the peer can't be verified, it should fail and return a
14194   proper error code. I added a brand new error code named
14195   CURLE_SSL_PEER_CERTIFICATE for this purpose.
14196
14197 Daniel (11 May 2001)
14198 - As was discussed with Frederic Lepied a while ago, I now made libcurl not
14199   return error even though no data was transfered on upload/download resume
14200   when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
14201   from the header file to make any implemenator that uses that to be aware of
14202   the fact that it can't be returned anymore!
14203
14204 - Improved general header-parsing to better allow white spaces and more.
14205
14206 - Rodney Simmons proved the fix I did yesterday was bad and I had to post
14207   another one.
14208
14209 - Ingo Wilken patched away two redirect problems more!
14210
14211 Daniel (10 May 2001)
14212 - Cris Bailiff correctly noted that the space-after-header problem with
14213   Location: is present on several other places in the libcurl sources.
14214
14215 - Ingo Wilken patched away a problem libcurl had when following Location:
14216   headers with an extra space after the colon.
14217
14218 - Rodney Simmons found out that multiple FTP transfers did not treat relative
14219   directories correctly.
14220
14221 Daniel (9 May 2001)
14222 - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
14223   makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
14224   returned error. Starting now, it just don't output the file size instead.
14225   Anonymous bug report.
14226
14227 - stunnel.pm was accidentally left out from the release archive, it is now
14228   added (stunnel is needed to run the https-tests in the test suite)
14229
14230 Daniel (7 May 2001)
14231 - Corrected two minor compiler warnings due to the FILE * to void * conversion
14232   that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
14233   filed a bug report on this.
14234
14235 Version 7.7.3
14236
14237 Daniel (4 May 2001)
14238 - All callback functions now take 'void *' instead of 'FILE *'. This is made
14239   this way to make it more obvious to people that anything can be passed to
14240   them (by using the apropriate option). After discussions with Sterling
14241   Hughes.
14242
14243 Daniel (3 May 2001)
14244 - Cris Bailiff fixed a chunked transfer encoding problem with persistent
14245   connection that made libcurl fail if the persistent connection used mixed
14246   chunked and non-chunked transfers.
14247
14248 - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
14249   treated as content-length 0 replies but would cause a "hang" until the
14250   server timed-out and closed the connection.
14251
14252 - Brad Burdick found a minor problem in the docs/examples/Makefile.am
14253
14254 Daniel (27 April 2001)
14255 - Updated the INTERALS document again. It was lagging a bit. I think I made it
14256   more easy to follow now as well.
14257
14258 - Brad Burdick found a problem with persistent connections when curl received
14259   a "Content-Length: 0" header.
14260
14261 - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
14262   compiled/built on win32. It seems to work for unixes though!
14263
14264 - Dave Hamilton reported weird problems with CURL/PHP that I really can't
14265   explain at the moment. I'm hoping on some help from the PHP crew.
14266
14267 Daniel (26 April 2001)
14268 - I rewrote the FTP command response function. I had to do it to make ftps
14269   work, as the OpenSSL read()-function didn't work the same way the normal
14270   unix read() does, but it was also a huge performance boost. Previously the
14271   function read one byte at a time, now it reads very large chunks, and it
14272   makes a notable speed difference.
14273
14274 Daniel (25 April 2001)
14275 - Connection re-use when not using a proxy didn't work properly for
14276   non-default port numbers.
14277
14278 Daniel (24 April 2001)
14279 - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
14280   data transfer, which causes the transfer to 'hang'... We need to fix this.
14281
14282 - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
14283   the alredy written perl servers easily.
14284
14285 Daniel (23 April 2001)
14286 - The OpenSSL version string recently modified didn't zero terminate one
14287   of the generated strings properly, which could lead to a crash or simply
14288   weird version string output!
14289
14290 Version 7.7.2
14291
14292 Daniel (22 April 2001)
14293 - Rosimildo da Silva updated the Makefiles for Borland/Windows.
14294
14295 - Eric Rautman pointed out a problem with persistent connections that would
14296   lead to broken Host: headers in the second HTTP request.
14297
14298 Daniel (20 April 2001)
14299 - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
14300   a 'libcurl overview' man page.
14301
14302 - Spell-fixed some documents.
14303
14304 - S. Moonesamy corrected mistakes in the man page.
14305
14306 - Cris Bailiff fixed the curl_slists options in the perl interface, present
14307   separately in the Curl::easy 1.1.4 package.
14308
14309 Daniel (19 April 2001)
14310 - Linus Nielsen Feltzing removed the decimals from the size variables in the
14311   --write-out output. We hardly ever get fraction of bytes! :-)
14312
14313 Version 7.7.2-pre1
14314
14315 Daniel (19 April 2001)
14316
14317 - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
14318
14319 Daniel (18 April 2001)
14320 - Input from Michael Mealling made me add --feature to curl-config. It
14321   displays a list of features that have been built-in in the current
14322   libcurl. The currently available features that can be listed are: SSL, KRB4
14323   and IPv6.
14324
14325 - I committed Cris and Georg's perl interface work. They've got callbacks
14326   working and options that receives those slist pointers.
14327
14328 - Puneet Pawaia detected a problem with resumed downloads that use persistent
14329   connections and I made a rather large writeup to correct this. It is
14330   important that all session-data is stored in the connectdata struct and not
14331   in the main struct as this previously did.
14332
14333 Daniel (17 April 2001)
14334 - Frederic Lepied fixed a ftp resumed download problem and introduced a new
14335   error code that lets applications be able to detect when a resumed download
14336   actually didn't download anything since the whole file is already present.
14337   Should this return OK instead?
14338
14339 - I added 'curl-config.in' to the root dir and configure script. Now, a
14340   curl-config script is made when curl is built. The script can be used to
14341   figure out compile time options used when libcurl was built, which in turn
14342   should be options YOU should use to build applications that use libcurl.
14343
14344   This *-config style is not a new idea, but something that has been used
14345   successfully in other (library based) projects.
14346
14347 - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
14348   for the If-Modified-Since style headers.
14349
14350 - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
14351   for curl to build on Ultrix.
14352
14353 Daniel (11 April 2001)
14354 - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
14355   of the environment variable HTTP_PROXY in uppercase may become a security
14356   hazard when people use libcurl in a server/cgi situation where the server
14357   sets the HTTP_*-variables according to incoming headers in the HTTP
14358   request. Thus, a "Proxy:"-header would set that environment variable!
14359
14360   Then, invoking curl_easy_perform() without having an URL set caused a crash.
14361
14362 - S. Moonesamy brought a patch that make curl use non-blocking connects on
14363   windows when connection timeout is set, as it allows windows users to set
14364   that timeout!
14365
14366 - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
14367
14368 - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
14369
14370 - I've written a first shot at a Java interface to libcurl. Many thanks to
14371   Daniel Marell for tirelessly answering to all my basic Java questions. It
14372   works, but it is still very basic.
14373
14374 Daniel (10 April 2001)
14375 - The progress display could get silly when doing multiple file transfers, as
14376   it wasn't properly reset between transfers!
14377
14378 - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
14379   me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
14380   function for writing headers. Previously you could only set a different FILE
14381   * when headers are written from within libcurl.
14382
14383 Daniel (7 April 2001)
14384 - Andrés García fixed a problem in curl_escape() and pointed out a flaw in
14385   the curl_easy_setopt man page.
14386
14387 Daniel (6 April 2001)
14388 - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
14389   change their version define format often...
14390
14391 - curl_formfree() now accepts a NULL pointer without crashing!
14392
14393 Version 7.7.1
14394
14395 Daniel (3 April 2001)
14396 - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
14397   read bad memory during situations when an (ftp) connection attempt failed.
14398   Also, the lib/Makefile.vc6 was corrected.
14399
14400 - More investigations in the Location: following code made me realize that
14401   it was not clean enough to work transparantly with persistent and non-
14402   persistent connections. I think I've fixed it now.
14403
14404 Daniel (29 March 2001)
14405 - Georg Horn mailed me some corrections for the Curl::easy perl interface.
14406
14407 - Experimental ftps:// support added. It is basically FTP over SSL for the
14408   control connection. It still makes all data transfers going over unencrypted
14409   connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
14410   that to verify the functionality.
14411
14412 Daniel (27 March 2001)
14413 - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
14414   to get a file from a site and it fails, the SIGALRM would still be sent
14415   after the timeout-time, quite inexpectedly!
14416
14417 - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
14418   example makefile that can be used as a start when building one of the
14419   examples.
14420
14421 Version 7.7.1-beta1
14422
14423 Daniel (26 March 2001)
14424 - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
14425   connections (when the server replied a Connection: Keep-Alive) and this
14426   problem was not properly dealt with in 7.7 either. A patch was posted to the
14427   curl-and-php mailing list.
14428
14429 Daniel (24 March 2001)
14430 - Colin Watson reported about a problem and brought a patch that corrected it,
14431   which was about the man page and lines starting with a single quote (') in a
14432   way that gnroff doesn't like.
14433
14434 Daniel (23 March 2001)
14435 - Peter Bray reported correctly that the root makefile used make instead of
14436   $(MAKE) for the test target.
14437
14438 - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
14439   curl_setopt() which was removed in 7.7!
14440
14441 - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
14442
14443 - When following a Location:, libcurl would sometimes write to the URL string
14444   in a way it shouldn't. As the pointer is passed-in to libcurl from an
14445   application, we can't be allowed to write to it. The particular bug report
14446   from 'nk' that brought this up was because he had a read-only URL that then
14447   caused a libcurl crash!
14448
14449 - No longer reads HEAD responses longer than to the last header. Previously,
14450   curl would read the full reply if the connection was a "close" one.
14451
14452 - libcurl did re-use connections way too much. Doing "curl
14453   http://www.{microsoft,ibm}.com" would make it re-use the connection which
14454   made the second request return very odd results.
14455
14456 Daniel (22 March 2001)
14457 - Edin Kadribasic made me aware that curl should not re-send POST requests
14458   when following 302-redirects. I made 302 work like 303 which means curl uses
14459   GET in the following request(s).
14460
14461 - libcurl now reset the "followed-location" counter on each invoke of
14462   curl_easy_perform() as it otherwise would sum up all redirects on the same
14463   connection and thus could reach the maxredirs counter wrongly.
14464
14465 - Jim Drash suggested curl_escape() should not re-encode what already looks
14466   like an encoded sequence and I think that's a fair suggestion.
14467
14468 Version 7.7
14469
14470 Daniel (22 March 2001)
14471 - The configure script now fails with an error message if gethostbyname_r() is
14472   detected but it couldn't figure out how to invoke it (what amount of
14473   arguments it is supposed to get). Reports from Andrés García made me aware
14474   of this need.
14475
14476 - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
14477   functions in the curl.h include file and write man pages for them. The
14478   escape function was modified to use the same interface as the unescape one
14479   had.
14480
14481 - No bug reports at all on the latest betas. Release time coming up.
14482
14483 Version 7.7-beta5
14484
14485 Daniel (19 March 2001)
14486 - Georg Ottinger reported problems with using -C together with -L in the sense
14487   that the -C info got lost when it was redirected. I could not repeat this
14488   problem on the 7.7 branch why I leave this for the moment. Test case 39 was
14489   added to do exactly this, and it seems to do right.
14490
14491 - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
14492   form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
14493   engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
14494   and POST operations that I need to add support for. Section 8.2.3 in RFC2616
14495   has all the details. Seems to work now!
14496
14497 Daniel (16 March 2001)
14498 - After having experienced another machine break-down, we're back.
14499
14500 - Georg Horn's perl interface Curl::easy is now included in the curl release
14501   archive. The perl/ directory is now present. Please help me with docs,
14502   examples and updates you think fit.
14503
14504 - Made a new php/ directory in the release archive and moved the PHP examples
14505   into a subdirectory in there. Not much PHP info yet, but I plan to. Please
14506   help me here as well!
14507
14508 - Made libcurl return error if a transfer is aborted in the middle of a
14509   "chunk". It actually enables libcurl to discover premature transfer aborts
14510   even if the Content-Length: size is unknown.
14511
14512 Daniel (15 March 2001)
14513 - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
14514   option in libcurl. It limits the time curl is allowed to spend in the
14515   connection phase. This differs from -m/--max-time that limits the entire
14516   file transfer operation. Requested by Larry Fahnoe and others.
14517
14518   I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
14519   item from the TODO.
14520
14521 Version 7.7-beta4
14522
14523 Daniel (14 March 2001)
14524 - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
14525   again when ENABLE_IPV6 is set.
14526
14527   I need to remake things in the test suite. I can't test the FTP parts with
14528   curl built for IPv6 as it uses a different set of FTP commands then!
14529
14530 - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
14531   a report meant for our project. Anyway, it said the .netrc parsing didn't
14532   work as supposed, and as I agreed with Lars, I made the netrc parser use
14533   getpwuid() to figure out the home directory of the effective user and try
14534   that netrc. It still uses the environment variable HOME for those that don't
14535   have that function or if the user doesn't return valid pwd info.
14536
14537 - Edin Kadribaic posted a bug report where he got a crash when a fetch with
14538   user+password in the URL followed a Location: to a second URL (absolute,
14539   without name+password). This bug has been around for a long while and
14540   crashes due to a read at address zero. Fixed now. Wrote test case 38, that
14541   tests this.
14542
14543 - Modified the test suite's httpserver slightly to append all client request
14544   data to its log file so that the test script now better can verify a range
14545   of requests and not only the last one, as it did previously.
14546
14547 - Updated the curl man page with --random-file and --egd-file details.
14548
14549 Version 7.7-beta3
14550
14551 Daniel (14 March 2001)
14552 - Björn Stenberg provided similar fixes as Jörn did and some additional patches
14553   for non-SSL compiles.
14554
14555 - I increased the interface number for libcurl as I've removed the low level
14556   functions from the interface. I also took this opportunity to rename the
14557   Curl_strequal function to curl_strequal and Curl_strnequal to
14558   curl_strnequal, as they're public libcurl functions (even if they're still
14559   undocumented).
14560
14561   This will make older programs not capable of using the new libcurl with
14562   just a drop-in replacement.
14563
14564 - Jörn Hartroth updated stuff for win32 compiles:
14565   o config-win32.h was fixed for socklen_t
14566   o lib/ssluse.c had a bad #endif placement
14567   o lib/file.c was made to compile on win32 again
14568   o lib/Makefile.m32 was updated with the new files
14569   o lib/libcurl.def matches the current interface state
14570
14571 Daniel (13 March 2001)
14572 - It only took an hour or so before Jörn Hartroth found a problem in the
14573   chunked transfer-encoding. Given his fine example-site, I could easily spot
14574   the problem and when I re-read the spec (the part I have pasted in the top
14575   of the http_chunks.h file), I realized I had made my state-machine slightly
14576   wrong and didn't expect/handle the trailing CRLF that comes after the data
14577   in each chunk (and those extra two bytes sure feel wasted).
14578
14579   Had to modify test case 34 to match this as well.
14580
14581 Version 7.7-beta2
14582
14583 Daniel (13 March 2001)
14584 - Added the policy stuff to the curl_easy_setopt man page for the two supported
14585   policies.
14586
14587 - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
14588   CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
14589   supported, and the "least recently used" is used as default if no policy
14590   is chosen.
14591
14592 Daniel (12 March 2001)
14593 - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
14594   SSL random engine. The random seeding support was also brought to the curl
14595   client with the new options --random-file <file> and --egd-file <file>. I
14596   need some people to really test this to know they work as supposed. Remember
14597   that libcurl now informs (if verbose is on) if the random seed is considered
14598   weak (HTTPS connections).
14599
14600 - Made the chunked transfer-encoding engine detected bad formatted data length
14601   and return error if so (we can't possibly extract sensible data if this is
14602   the case). Added a test case that detects this. Number 36. Now there are 60
14603   test cases.
14604
14605 - Added 5 new libcurl options to curl/curl.h that can be used to control the
14606   persistent connection support in libcurl. They're also documented (fairly
14607   thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
14608   implemented, although not really tested at this point... Anyway, the new
14609   implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
14610   CURLOPT_FORBID_REUSE. The ones still left to write code for are:
14611   CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
14612
14613 - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
14614   connection support by re-using the same curl handle for every specified file
14615   transfer and after some more test case tweaking we have 100% test case OK.
14616   I made some test cases return HTTP/1.0 now to make sure that works as well.
14617
14618 - Had to add 'Connection: close' to the headers of a bunch of test cases so
14619   that curl behaves "old-style" since the test http server doesn't do multiple
14620   connections... Now I get 100% test case OK.
14621
14622 - The curl.haxx.se site, the main curl mailing list and my personal email are
14623   all dead today due to power blackout in the area where the main servers are
14624   located. Horrible.
14625
14626 - I've made persistance work over a squid HTTP proxy. I find it disturbing
14627   that it uses headers that aren't present in any HTTP standard though
14628   (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
14629   the standard actually defines. I need to get this code excercised on a lot
14630   of different HTTP proxies before I feel safe.
14631
14632   Now I'm facing the problem with my test suite servers (both FTP and HTTP)
14633   not supporting persistent connections and libcurl is doing them now. I have
14634   to fix the test servers to get all the test cases do OK.
14635
14636 Daniel (8 March 2001)
14637 - Guenole Bescon reported that libcurl did output errors to stderr even if
14638   MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
14639   there's an error and no ERRORBUFFER is set. This is now corrected.
14640
14641 Version 7.7-beta1
14642
14643 Daniel (8 March 2001)
14644 - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
14645   added two source files and I've run some test downloads that look fine.
14646
14647 - HTTP HEAD works too, even on 1.1 servers.
14648
14649 Daniel (5 March 2001)
14650 - The current 57 test cases now pass OK. It would suggest that libcurl works
14651   using the old-style with one connection per handle. The test suite doesn't
14652   handle multiple connections yet so there are no test cases for this.
14653
14654 - I patched the telnet.c heavily to not use any global variables anymore. It
14655   should make it a lot nicer library-wise.
14656
14657 - The file:// support was modified slightly to use the internal connect-first-
14658   then-do approach.
14659
14660 Daniel (4 March 2001)
14661 - More bugs erased.
14662
14663 Version 7.7-alpha2
14664
14665 Daniel (4 March 2001)
14666 - Now, there's even a basic check that a re-used connection is still alive
14667   before it is assumed so. A few first tests have proven that libcurl will
14668   then re-connect instead of re-use the dead connection!
14669
14670 Daniel (2 March 2001)
14671 - Now they work intermixed as well. Major coolness!
14672
14673 - More fiddling around, my 'tiny' client I have for testing purposes now has
14674   proved to download both FTP and HTTP with persistent connections. They do
14675   not work intermixed yet though.
14676
14677 Daniel (1 March 2001)
14678 - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
14679   curl_slist_append() should take a const char * as second argument. It does
14680   now.
14681
14682 Daniel (22 February 2001)
14683 - The persistent connections start to look good for HTTP. On a subsequent
14684   request, it seems that libcurl now can pick an already existing connection
14685   if a suitable one exists, or it opens a new one.
14686
14687 - Douglas R. Horner mailed me corrections to the curl_formparse() man page
14688   that I applied.
14689
14690 Daniel (20 February 2001)
14691 - Added the docs/examples/win32sockets.c file for our windows friends.
14692
14693 - Linus Nielsen Feltzing provided brand new TELNET functionality and
14694   improvements:
14695
14696   * Negotiation is now passive. Curl does not negotiate until the peer does.
14697   * Possibility to set negotiation options on the command line, currently only
14698     XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
14699   * Now sends the USER environment variable if the -u switch is used.
14700   * Use -t to set telnet options (Linus even updated the man page, awesome!)
14701
14702 - Haven't done this big changes to curl for a while. Moved around a lot of
14703   struct fields and stuff to make multiple connections get connection specific
14704   data in separate structs so that they can co-exist in a nice way. See the
14705   mailing lists for discussions around how this is gonna be implemented. Docs
14706   and more will follow.
14707
14708   Studied the HTTP RFC to find out better how persistent connections should
14709   work. Seems cool enough.
14710
14711 Daniel (19 February 2001)
14712 - Bob Schader brought me two files that help set up a MS VC++ libcurl project
14713   easier. He also provided me with an up-to-date libcurl.def file.
14714
14715 - I moved a bunch of prototypes from the public <curl/curl.h> file to the
14716   library private urldata.h. This is because of the upcoming changes. The
14717   low level interface is no longer being planned to become reality.
14718
14719 Daniel (15 February 2001)
14720 - CURLOPT_POST is not required anymore. Just setting the POST string with
14721   CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
14722   libcurl already works this way, i.e they require only the parameter to
14723   switch on a feature so I think this works well with the rest. Setting a NULL
14724   string switches off the POST again.
14725
14726 - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
14727   Reese helped me define a way how to incorporate persistent connections into
14728   libcurl in a very smooth way. If done right, no change may have to be made
14729   to older programs and they will just start using persistent connections when
14730   applicable!
14731
14732 Daniel (13 February 2001)
14733 - Changed the word 'timeouted' to 'timed out' in two different error messages.
14734   Suggested by Larry Fahnoe.
14735
14736 Version 7.6.1
14737
14738 Daniel (9 February 2001)
14739 - Frank Reid and Cain Hopwood provided information and research around a HTTPS
14740   PUT/upload problem we seem to have. No solution found yet.
14741
14742 Daniel (8 February 2001)
14743 - An interesting discussion is how to specify an empty password without having
14744   curl ask for it interactively? The current implmentation takes an empty
14745   password as a request for a password prompt. However, I still want to
14746   support a blank user field. Thus, today if you enter "-u :" (without user
14747   and password) curl will prompt for the password. Tricky. How would you
14748   specify you want the prompt otherwise?
14749
14750 - Made the netrc parse result possible to use for other protocols than FTP and
14751   HTTP (such as the upcoming TELNET fixes).
14752
14753 - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
14754
14755 - Added a HTTP file upload code example in the docs/examples/ section on
14756   request.
14757
14758 - Adjusted the FTP response fix slightly.
14759
14760 Version 7.6.1-pre3
14761
14762 Daniel (7 February 2001)
14763 - S. Moonesamy found a flaw in the response reading function for FTP that
14764   could make libcurl not get out of the loop properly when it should, if
14765   libcurl got -1 returned when reading the socket.
14766
14767 - I found a similar mistake in http.c when using a proxy and reading the
14768   results from the proxy connection.
14769
14770 Daniel (6 February 2001)
14771 - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
14772   for the debug build to work.
14773
14774 - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
14775   brought up yesterday.
14776
14777 Daniel (5 February 2001)
14778 - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
14779   a bunch of different areas within libcurl.
14780
14781 - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
14782   the 'static' keyword on a number of libcurl functions. I might need to add a
14783   patch that redefines static when libcurl is compiled with that compiler.
14784   How do I know when VC++ compiles, anyone?
14785
14786 Daniel (4 February 2001)
14787 - curl_getinfo() was extended with two new options:
14788   CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
14789   return the full assumed content length of the transfer in the given
14790   direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
14791   size of a HTTP download. Added descriptions to the man page as well. This
14792   was done after discussions with Bob Schader.
14793
14794 Daniel (3 February 2001)
14795 - Ingo Ralf Blum provided another fix that makes curl build under the more
14796   recent cygwin installations. It seems they've changed the preset defines to
14797   not include WIN32 anymore.
14798
14799 Version 7.6.1-pre2
14800
14801 Daniel (31 January 2001)
14802 - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
14803   be able to return -1. The telnet support crashed due to this and there was a
14804   possibility to weird behavior all over. Linus Nielsen Feltzing helped me
14805   find this.
14806
14807 - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
14808   I also made the configure script feature --enable-debug which sets a couple
14809   of compiler options when used. It assumes gcc.
14810
14811 Daniel (30 January 2001)
14812 - I finally took a stab at the long-term FIXME item I've had on myself, and
14813   now libcurl will properly work when doing a HTTP range-request that follows
14814   a Location:. Previously that would make libcurl fail saying that the server
14815   doesn't seem to support range requests.
14816
14817 Daniel (29 January 2001)
14818 - I added a test case for the HTTP PUT resume thing (test case 33).
14819
14820 Version 7.6.1-pre1
14821
14822 Daniel (29 January 2001)
14823 - Yet another Content-Range change. Ok now? Bob Schader checks from his end
14824   and it works for him.
14825
14826 Daniel (27 January 2001)
14827 - So the HTTP PUT resume fix wasn't good. There should appearantly be a
14828   Content-Range header when resuming a PUT.
14829
14830 - I noticed I broke the download-check that verifies that a resumed HTTP
14831   download is actually resumed. It got broke because my new 'httpreq' field
14832   in the main curl struct. I should get slapped. I added a test case for
14833   this now, so I won't be able to ruin this again without noticing.
14834
14835 - Added a test case for content-length verifying when downloading HTTP.
14836
14837 - Made the progress meter title say if the transfer is being transfered. It
14838   makes the output slightly better for resumes.
14839
14840 - When dealing with Location: and HTTP return codes, libcurl will not attempt
14841   to follow the spirit of RFC2616 better. It means that when POSTing to a
14842   URL that is being following to a second place, the standard will judge on
14843   what to do. All HTTP codes except 303 and 305 will cause curl to make a
14844   second POST operation. 303 will make a GET and 305 is not yet supported.
14845
14846   I also wrote two test cases for this POST/GET/Location stuff.
14847
14848 Version 7.6
14849
14850 Daniel (26 January 2001)
14851 - Lots of mails back and forth with Bob Schader finally made me add a small
14852   piece of code in the HTTP engine so that HTTP upload resume works. You can
14853   now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
14854   the ending part of the file starting at given offet to the specified URL.
14855
14856 Version 7.6-pre4
14857
14858 Daniel (25 January 2001)
14859 - I took hold of Rick Jones' question why we don't use recv() and send() for
14860   reading/writing to the sockets and I've now modified the sread() and
14861   swrite() macros to use them instead. If nothing else, they could be tested
14862   in the next beta-round coming right up.
14863
14864 - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
14865   his research results in how to fix this. It turns out we have to invoke the
14866   function several times in some cases. The same goes for the SSL_write().
14867
14868   I made some rather drastic changes all over libcurl to make all writes and
14869   reads get done on one single place so that this repeated-attempts thing
14870   would only have to be implemented at one point.
14871
14872 - Rick Jones spotted that the 'total time' counter really didn't measure the
14873   total time very accurate on subsecond levels.
14874
14875 - Johan Nilsson pointed out the need to more clearly specify that the timeout
14876   value you set for a download is for the *entire* download. There's currently
14877   no option available that sets a timeout for the connection phase only.
14878
14879 Daniel (24 January 2001)
14880 - Ingo Ralf Blum submitted a series of patches required to get curl to compile
14881   properly with cygwin.
14882
14883 - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
14884   that corrected a potential memory leak.
14885
14886 - Added comments in a few files in a sudden attempt to make the sources more
14887   easy to read and understand!
14888
14889 Daniel (23 January 2001)
14890 - Added simple IPv6 detection in the configure script and made the version
14891   string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
14892   set if curl is compiled with IPv6 support enabled.
14893
14894 - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
14895   IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
14896
14897 - Made the URL globbing in the client possible to fail silently if there's an
14898   error in the globbing. It makes it almost intuitive, so when you don't
14899   follow the syntax rules, globbing is simply switched off and the raw string
14900   is used instead.
14901
14902   I still think we'll get problems with IPv6-style IP-addresses when we *want*
14903   globbing on parts of the URL as the initial part of the URL will for sure
14904   seriously confuse the globber.
14905
14906 Daniel (22 January 2001)
14907 - Björn Stenberg supplied a progress meter patch that makes it look better even
14908   during slow starts. Previously it made some silly assumptions...
14909
14910 - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
14911   the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
14912
14913 Daniel (19 January 2001)
14914 - Made the Location: parsers deal with any-length URLs. Thus I removed the last
14915   code that restricts the length of URLs that curl supports.
14916
14917 - Added a --globoff test case (#28) and it quickly identified a memory problem
14918   in src/main.c that I took care of.
14919
14920 Version 7.6-pre3
14921
14922 Daniel (17 January 2001)
14923 - Made the two former files lib/download.c and lib/highlevel.c become the new
14924   lib/transfer.c which makes more sense. I also did the rename from Transfer()
14925   to Curl_Transfer() in the other source files that use the transfer function
14926   in the spirit of using Curl_ prefix for library-scoped global symbols.
14927
14928 Daniel (11 January 2001)
14929 - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
14930   letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
14931   mention these letters to be escaped. This was posted as a feature request by
14932   Jorge Gutierrez and as a bug by Terry.
14933
14934 - Short options to curl that requires parameters can now be specified without
14935   having the option and its parameter space separated. -ofile works as good as
14936   -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
14937   options only, verbose --long-style options still must be separated with
14938   space from their parameters.
14939
14940 Daniel (8 January 2001)
14941 - Francis Dagenais reported that the SCO compiler still fails when compiling
14942   curl due to that getpass_r() prototype. I've now put it around #ifndef
14943   HAVE_GETPASS_R in an attempt to please the SCO systems.
14944
14945 - Made some minor corrections to get the client to cleanup properly and I made
14946   the separator work again when getting multiple globbed URLs to stdout.
14947
14948 - Worked with Loic Dachary to get the make dist and make distcheck work
14949   correctly. The 'maketgz' script is now using the automake generated 'make
14950   dist' when creating release archives. Loic successfully made 'make rpms'
14951   automatically build RPMs!
14952
14953 Loic Dachary (6 January 2001)
14954 - Automated generation of rpm packages, no need to be root.
14955
14956 - make distcheck generates a proper distribution (EXTRA_DIST
14957   in all Makefile.am modified to match FILES).
14958
14959 Daniel (5 January 2001)
14960 - Huge client-side hack: now multiple URLs are supported. Any number of URLs
14961   can be specified on the command line, and they'll all be downloaded. There
14962   must be a corresponding -o or -O for each URL or the data will be written to
14963   stdout. This needs more testing, time to release a 7.6-pre package.
14964
14965 - The krb4 support was broken in the release. Fixed now.
14966
14967 - Huge internal symbol rename operation. All non-static but still lib-internal
14968   symbols should now be prefixed with 'Curl_' to prevent collisions with other
14969   libs. All public symbols should be prefixed with 'curl_' and the rest should
14970   be static and thus invisible to the outside world. I updated the INTERNALS
14971   document to say this as well.
14972
14973 Version 7.5.2
14974
14975 Daniel (4 January 2001)
14976 - As Kevin P Roth suggested, I've added text to the man page for every command
14977   line option and what happens when you specify that option more than
14978   once. That hasn't been exactly crystal clear before.
14979
14980 - Made the configure script possible to run from outside the source-tree. For
14981   odd reasons I can't build curl properly outside though. It has to do with
14982   curl's dependencies on libcurl...
14983
14984 - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
14985   The older piece is named CHANGES.0 and is added to the CVS repository in
14986   case anyone would need it.
14987
14988 - I added another file 'CVS-INFO' to the CVS. It contains information about
14989   files in the CVS that aren't included in release archives and how to build
14990   curl when you get the sources off CVS.
14991
14992 - Updated CONTRIBUTE and FAQ due to the new license.
14993
14994 Daniel (3 January 2001)
14995 - Renamed README.libcurl to LIBCURL
14996
14997 - Changed headers in all sources files to the new dual license concept of
14998   curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
14999   accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
15000   release archive.
15001 Daniel (30 December 2000)
15002 - Made all FTP commands get sent with the trailing CRLF in one single write()
15003   as splitting them up seems to confuse at least some firewalls (FW-1 being
15004   one major).
15005
15006 Daniel (19 December 2000)
15007 - Added file desrciptor and FILE handle leak detection to the memdebug system
15008   and thus I found and removed a file descriptor leakage in the ftp parts
15009   that happened when you did PORTed downloads.
15010
15011 - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
15012
15013 Daniel (12 December 2000)
15014 - Multiple URL downloads with -O was still bugging. Not anymore I think or
15015   hope, or at least I've tried... :-O
15016
15017 - Francois Petitjean fixed another -O problem
15018
15019 Version 7.5.1
15020
15021 Daniel (11 December 2000)
15022 - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
15023   P Roth found out, at least one CVS client behaved wrongly when it found
15024   different newline conventions within the same file.
15025
15026 - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
15027   the SSL stuff.
15028
15029 Daniel (6 December 2000)
15030 - Massimo Squillace correctly described how libcurl could use session ids when
15031   doing SSL connections.
15032
15033 - James Griffiths found out that curl would crash if the file you specify with
15034   -o is shorter than the URL! This took some hours to fully hunt down, but it
15035   is fixed now.
15036
15037 Daniel (5 December 2000)
15038 - Jaepil Kim sent us makefiles that build curl using the free windows borland
15039   compiler. The root makefile now accepts 'make borland' to build curl with
15040   that compiler.
15041
15042 - Stefan Radman pointed out that the test makefiles didn't use the PERL
15043   variable that the configure scripts figure out. Actually, you still need
15044   perl in the path for the test suite to run ok.
15045
15046 - Rich Gray found numerous portability problems:
15047   * The SCO compiler got an error on the getpass_r() prototype in getpass.h
15048     since the curl one differed from the SCO one
15049   * The HPUX compiler got an error because of how curl did the sigaction
15050     stuff and used a define HPUX doesn't have (or need).
15051   * A few more problems remain to be researched.
15052
15053 - Paul Harrington experienced a core dump using https. Not much details yet.
15054
15055 Daniel (4 December 2000)
15056 - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
15057
15058 Version 7.5
15059
15060 Daniel (1 December 2000)
15061 - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
15062   build fine with the Microsoft compiler on windows too.
15063
15064 - Fixed the libcurl versioning so that we don't ruin old programs when
15065   releasing new shared library interfaces.
15066
15067 Daniel (30 November 2000)
15068 - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
15069   actually contains.
15070
15071 Daniel (29 November 2000)
15072 - I removed a bunch of '#if 0' sections from the code. They only make things
15073   harder to follow. After all, we do have all older versions in the CVS.
15074
15075 Version 7.5-pre5
15076
15077 Daniel (28 November 2000)
15078 - I filled in more error codes in the man page error code list that had been
15079   lagging.
15080
15081 - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
15082   libcurl option. When used, it'll prevent location following more than the
15083   set number of times. It is useful to break out of endless redirect-loops.
15084
15085 Daniel (27 November 2000)
15086 - Added two test cases for file://.
15087
15088 Daniel (22 November 2000)
15089 - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
15090   modified time of the remote document. This is a special option since it
15091   involves an extra set of commands on FTP servers. (Using the MDTM command
15092   which is not in the RFC959)
15093
15094   curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
15095   after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
15096   the time wasn't possible to get.
15097
15098   --head/-I used on a FTP server will now present a 'Last-Modified:' header
15099   if curl could get the time of the specified file.
15100
15101 - Added the option '--cacert [file]' to curl, which allows a specified PEM
15102   file to be used to verify the peer's certificate when doing HTTPS
15103   connections. This has been requested, rather recently by Hulka Bohuslav but
15104   others have asked for it before as well.
15105
15106 Daniel (21 November 2000)
15107 - Numerous fixes the test suite has brought into the daylight:
15108
15109    * curl_unescape() could return a too long string
15110    * on ftp transfer failures, there could be memory leaks
15111    * ftp CWD could use bad directory names
15112    * memdebug now uses the mprintf() routines for better portability
15113    * free(NULL) removed when doing resumed transfers
15114
15115 - Added a bunch of test cases for FTP.
15116
15117 - General cleanups to make less warnings with gcc -Wall -pedantic.
15118
15119 - I made the tests/ftpserver.pl work with the most commonly used ftp
15120   operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
15121   all I have to do is integrate the ftp server doings in the runtests.pl
15122   script so that ftp tests can be run the same way http tests already run.
15123
15124 Daniel (20 November 2000)
15125 - Made libcurl capable of dealing with any-length URLs. The former limit of
15126   4096 bytes was a bit annoying when people wanted to use curl to really make
15127   life tough on a web server. Now, the command line limit is the most annoying
15128   but that can be circumvented by using a config file.
15129
15130   NOTE: there is still a 4096-byte limit on URLs extracted from Location:
15131   headers.
15132
15133 - Corrected the spelling of 'resolve' in two error messages.
15134
15135 - Alexander Kourakos posted a bug report and a patch that corrected it! It
15136   turned out that lynx and wget support lowercase environment variable names
15137   where curl only looked for the uppercase versions. Now curl will use the
15138   lowercase versions if they exist, but if they don't, it'll use the uppercase
15139   versions.
15140
15141 Daniel (17 November 2000)
15142 - curl_formfree() was added. How come no one missed that one before? I ran the
15143   test suite with the malloc debug enabled and got lots of "nice" warnings on
15144   memory leaks. The most serious one was this. There were also leaks in the
15145   cookie handling, and a few errors when curl failed to connect and similar
15146   things. More tests cases were added to cover up and to verify that these
15147   problems have been removed.
15148
15149 - Mucho updated config file parser (I'm dead tired of all the bug reports and
15150   weird behaviour I get on the former one). It works slightly differently now,
15151   although I doubt many people will notice the differences. The main
15152   difference being that if you use options that require parameters, they must
15153   both be specified on the same line. With this new parser, you can also
15154   specify long options without '--' and you may separate options and
15155   parameters with : or =. It makes a config file line could look like:
15156
15157         user-agent = "foobar and something"
15158
15159   Parameters within quotes may contain spaces. Without quotes, they're
15160   expected to be a single non-space word.
15161
15162   Had to patch the command line argument parser a little to make this work.
15163
15164 - Added --url as an option to allow the URL to be specified this way. It makes
15165   way nicer config files. The previous way of specifying URLs in the config
15166   file doesn't work anymore.
15167
15168 Daniel (15 November 2000)
15169 - Using certain characters in usernames or passwords for HTTP authentication
15170   failed. This was due to the mprintf() that had a silly check for letters,
15171   and if they weren't isprint() they weren't outputed "as-is". This caused
15172   passwords and usernames using '§' (for example) to fail.
15173
15174 Version 7.4.2
15175
15176 Daniel (15 November 2000)
15177 - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
15178
15179 Daniel (14 November 2000)
15180 - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
15181   "Extensions to FTP" that contains a defined way how the ftp command SIZE
15182   could be assumed to work.
15183
15184 - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
15185   file that isn't prsent on the server. The server might then return a 550 and
15186   curl will fail. Should it instead as Laurent Papier suggests, start
15187   uploading from the beginning as a normal upload?
15188
15189 Daniel (13 November 2000)
15190 - Fixed a crash with the followlocation counter.
15191
15192 - While writing test cases for the test suite, I discovered an old limitation
15193   that prevented -o and -T to be used at the same time. I removed this
15194   immediately as this has no relevance in the current libcurl.
15195
15196 - Chris Faherty fixed a free-twice problem in lib/file.c
15197
15198 - I fixed the perl http server problem in the test suite.
15199
15200 Version 7.4.2 pre4
15201
15202 Daniel (10 November 2000)
15203 - I've (finally) started working on the curl test suite. It is in the new
15204   tests/ directory. It requires sh and perl. There's a TCP server in perl and
15205   most of the other stuff running a pretty simple shell script.
15206
15207   I've only made four test cases so far, but it proves the system can work.
15208
15209 - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
15210   for sizes on FTP servers. Some servers seem to return different sizes
15211   depending on whether ASCII or BINARY is used!
15212
15213 - Laurent Papier detected that if you appended a FTP upload and everything was
15214   already uploaded, curl would hang.
15215
15216 - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
15217   getpass_r() function it seems some systems actually have.
15218
15219 - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
15220   it.  If the cookie was set for the full host name (domain=full.host.com),
15221   the cookie was never sent back because of a faulty length comparison between
15222   the set domain length and the current host name.
15223
15224 Daniel (9 November 2000)
15225 - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
15226   it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
15227   but libssl isn't. I haven't verified this fix yet though, as I have no
15228   system that requires those libs to build.
15229
15230 Version 7.4.2 pre3
15231
15232 Daniel (7 November 2000)
15233 - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
15234   slightly modified license of the getpass.c file as the prototype was changed.
15235
15236 Daniel (6 November 2000)
15237 - Added possibility to set a password callback to use instead of the built-in.
15238   They're controled with curl_easy_setopt() of course, the tags are
15239   CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
15240
15241 - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
15242   times when location: headers were followed.
15243
15244 - Emmanuel Tychon discovered that curl didn't really like user names only in
15245   the URL. I corrected this and I also fixed the since long living problem
15246   with URL encoded user names and passwords in the URLs. They should work now.
15247
15248 Daniel (2 November 2000)
15249 - When I added --interface, the new error code that was added with it was
15250   inserted in the wrong place and thus all error codes from 35 and upwards got
15251   increased one step. This is now corrected, we're back at the previous
15252   numbers. All new exit codes should be added at the end.
15253
15254 Daniel (1 November 2000)
15255 - Added a check for signal() in the configure script so that if sigaction()
15256   isn't present, we can use signal() instead.
15257
15258 - I'm having a license discussion going on privately. The issue is yet again
15259   GPL-licensed programs that have problems with MPL. I am leaning towards
15260   making a kind of dual-license that will solve this once and for all...
15261
15262 Daniel (31 October 2000)
15263 - Added the packages/ directory. I intend to let this contain some docs and
15264   templates on how to generate custom-format packages for various platforms.
15265   I've now removed the RPM related curl.spec files from the archive root.
15266
15267 Daniel (30 October 2000)
15268 - T. Bharath brought a set of patches that bring new functionality to
15269   curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
15270   certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
15271   and then use the CURLOPT_CAINFO to set the certificate to verify the remote
15272   peer against. After an such an operation with a verification request, the
15273   *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
15274   whether the verification succeeded or not.
15275
15276 Daniel (27 October 2000)
15277 - Georg Horn brought us a splendid patch that solves the long-standing
15278   annoying problem with timeouts that made curl exit with silly exit codes
15279   (which as been commented out lately). This solution is sigaction() based and
15280   of course then only works for unixes (and only those unixes that actually
15281   have the sigaction() function).
15282
15283 Daniel (26 October 2000)
15284 - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
15285   that made the password get echoed when prompted for interactively. The
15286   getpass() function (now known as my_getpass()) was also fixed to not use any
15287   static buffers. This also means we cannot use the "standard" getpass()
15288   function even for those systems that have it, since it isn't thread-safe.
15289
15290 - Kevin Roth found out that if you'd write a config file with '-v url', the
15291   url would not be used as "default URL" as documented, although if you wrote
15292   it 'url -v' it worked! This has been corrected now.
15293
15294 - Kevin Roth's idea of using multiple -d options on the same command line was
15295   just brilliant, and I couldn't really think of any reason why we shouldn't
15296   support it! The append function always append '&' and then the new -d
15297   chunk. This enables constructs like the following:
15298
15299         curl -d name=daniel -d age=unknown foobarsite.com
15300
15301 Daniel (24 October 2000)
15302 - I fixed the lib/memdebug.c source so that it compiles on Linux and other
15303   systems. It will be useful one day when someone else but me wants to run the
15304   memory debugging system.
15305
15306 Daniel (23 October 2000)
15307 - I modified the maketgz and configure scripts, so that the configure script
15308   will fetch the version number from the include/curl/curl.h header files, and
15309   then the maketgz doesn't have to rebuild the configure script when I build
15310   release-archives.
15311
15312 - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
15313   enough to not allow @-letters in passwords when they were specified with the
15314   -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
15315   suggests that curl probably should url-decode the password piece of an URL
15316   so that you could pass an encoded @-letter there...
15317
15318 Daniel (20 October 2000)
15319 - Yet another http server barfed on curl's request that include the port
15320   number in the Host: header always. I now only include the port number if it
15321   isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
15322   run one of those nasty servers.
15323
15324 - The PHP4 module for curl had problems with referer that seems to have been
15325   corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
15326
15327 Daniel (17 October 2000)
15328 - Vladimir Oblomov reported that the -Y and -y options didn't work. They
15329   didn't work for me either. This once again proves we should have that test
15330   suite...
15331
15332 - I finally changed the error message libcurl returns if you try a https://
15333   URL when the library wasn't build with SSL enabled. It will now return this
15334   error:
15335         "libcurl was built with SSL disabled, https: not supported!"
15336
15337   I really hope it will make it a bit clearer to users where the actual
15338   problem lies.
15339
15340 Version 7.4.1
15341
15342 Daniel (16 October 2000)
15343 - I forgot to remove some of the malloc debug defines from the makefiles in
15344   the release archive (of course).
15345
15346 Version 7.4
15347
15348 Daniel (16 October 2000)
15349 - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
15350
15351 Daniel (12 October 2000)
15352 - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
15353   by an evil ftp server to crash curl. I took the opportunity of replacing a
15354   few other sprintf()s into snprintf()s as well.
15355
15356 Daniel (11 October 2000)
15357 - Found some more memory leaks. This new simple memory debugger has turned out
15358   really useful!
15359
15360 Version 7.4 pre6
15361
15362 Daniel (9 October 2000)
15363 - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
15364   file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
15365   public interface and was wrongly inserted in that header file.
15366
15367 - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
15368   didn't harm anyone since the memory is free()ed on exit anyway.
15369
15370 - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
15371   libcurl-printf() functions. This gives us snprintf() et al on all
15372   platforms. I converted the allocated useragent string to one that uses a
15373   local buffer.
15374
15375 - I've set an #if 0 section around the Content-Transfer-Encoding header
15376   generated in lib/formdata.c. This will hopefully make curl do more
15377   PHP-friendly multi-part posts.
15378
15379 Version 7.4 pre5
15380
15381 Daniel (9 October 2000)
15382 - Nico Baggus found out that curl's ability to force a ASCII download when
15383   using FTP was no longer working! I corrected this. This problem was probably
15384   introduced when I redesigned libcurl for version 7.
15385
15386 - Georg Horn provided a source example that proved a memory leak in libcurl.
15387   I added simple memory debugging facilities and now we can make libcurl log
15388   all memory fiddling functions. An additional perl script is used to analyze
15389   the output logfile and to match malloc()s with free()s etc. The memory leak
15390   Georg found turned out to be the main cookie struct that cookie_cleanup()
15391   didn't free! The perl script is named memanalyze.pl and it is available in
15392   the CVS respository, not in the release archive.
15393
15394 Daniel (8 October 2000)
15395 - Georg Horn found a GetHost() problem. It turned out it never assigned the
15396   pointer in the third argument properly! This could make a crash, or at best
15397   a memory leak!
15398
15399 Version 7.4 pre4
15400
15401 Daniel (6 October 2000)
15402 - Is the -F post following the RFC 1867 spec? We had this dicussion on the
15403   mailing list since it appears curl can't post -F form posts to a PHP
15404   receiver... I've been in touch with the PHP developers about this.
15405
15406 - Domenico Andreoli found out that the long option '--proxy' wasn't working
15407   anymore! The option parser got confused when I added the --proxytunnel for
15408   7.3. This was indeed a very old flaw that hasn't turned up until now...
15409
15410 - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
15411   stuff on win32. He also pointed out that lib source files were compiled with
15412   -I../src which isn't only wrong but plain stupid!
15413
15414 - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
15415   a local variable badly, that could lead to crashes.
15416
15417 Version 7.4 pre3
15418
15419 Daniel (4 October 2000)
15420 - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
15421   as is the -w section in curl.1. I added two options to enable the user to
15422   get information about the received headers' size and the size of the HTTP
15423   request. T. Bharath requested them.
15424
15425 Daniel (3 October 2000)
15426 - Corrected a sever free() before use in the new add_buffer_send()! ;-)
15427
15428 Version 7.4 pre2
15429
15430 Daniel (3 October 2000)
15431 - Jason S. Priebe sent me patches that changed the way curl issues HTTP
15432   requests. The entire request is now issued in one single shot. It didn't do
15433   this previously, and it has turned out that since the common browsers do it
15434   this way, some sites have turned out to work with browsers but not with
15435   curl! Although this is not a client-side problem, we want to be able to
15436   fully emulate browsers, and thus we have now adjusted the networking layer
15437   to slightly more appear as a browser. I adjusted Jason's patch, the faults
15438   are probably mine.
15439
15440 Daniel (2 October 2000)
15441 - Anyone who ever uploaded data with curl on a slow link has noticed that the
15442   progess meter is updated very infrequently. That is due to the large buffer
15443   size curl is using. It reads 50Kb and sends it, updates the progress meter
15444   and loops. 50Kb is very much on a slow link, although it is pretty neat to
15445   use on a fast one.
15446
15447   I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
15448   start with. If curl's average upload speed is faster than buffer size bytes
15449   per second, curl will increase the used buffer size up to max 50Kb. It
15450   should make the progress meter work better.
15451
15452 Version 7.4 pre1
15453
15454 Daniel (29 September 2000)
15455 - Ripped out the -w stuff from the library and put in the curl tool. It gets
15456   all the relevant info from the library using the new curl_easy_getinfo()
15457   function.
15458
15459 - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
15460   removed a compiler warning from hostip.c that OpenBSD people get.
15461
15462 Daniel (28 September 2000)
15463 - Of course (I should probably get punished somehow) I didn't properly correct
15464   the #include lines for the base64 stuff in the kerberos sources in the just
15465   released 7.3 package. They still include the *_krb.h files! Now, the error
15466   is sooo very easy to spot and fix so I won't bother with a quick bug fix
15467   release. I'll post a patch whenever one is needed instead. It'll be
15468   available in the CVS in a few minutes anyway.
15469
15470 Version 7.3
15471
15472 Daniel (28 September 2000)
15473 - Removed the base64_krb.[ch] files. They've now replaced the former
15474   base64.[ch] files.
15475
15476 Daniel (26 September 2000)
15477 - Updated some docs.
15478
15479 - I changed the OpenSSL fix to work with older versions as well. The posted
15480   patch was only working with 0.9.6 and no older ones.
15481
15482 Version 7.3-pre8
15483
15484 Daniel (25 September 2000)
15485 - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
15486   showed us what needed to get patched in order to make it build properly
15487   again.
15488
15489 - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
15490   approach to the solution Dirk himself suggested. The bug made a cookie
15491   header that didn't end with a trailing semicolon to not get parsed.
15492
15493 - I've marked -c and -t deprecated now. If you use any of them, curl will tell
15494   you to use "-C -" or "-T -" instead. I don't think occupying two letters for
15495   nearly identical functions is good use. Also, -T - kind of follows the curl
15496   tradition of using - for stdin where a file name is expected.
15497
15498 Daniel (23 September 2000)
15499 - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
15500   work!
15501
15502 Daniel (21 September 2000)
15503 - The kerberos code is not quite thread-safe yet. There are a few more globals
15504   that need to be take care of. Let's get the upload working first!
15505
15506 Daniel (20 September 2000)
15507 - Richard Prescott solved another name lookup buffer size problem. I took this
15508   opportunity to rewrite the GetHost() function. With these large buffer
15509   sizes, I think keeping them as local arrays quickly turn ugly. I now use
15510   malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
15511   large buffer in case of demand (errno == ERANGE) in case a solution like
15512   that would become necessary. I still want to avoid that kind of nastiness.
15513
15514 - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
15515   as smooth as it could.
15516
15517 - Added a docs/examples directory with two tiny example sources that show how
15518   to use libcurl. I hope users will supply me with more useful examples
15519   further on.
15520
15521 - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
15522   config struct in the src/main.c file since certain compilers have that word
15523   "reservered".  I figure that is some kind of C++ decease.
15524
15525 - Updated the curl.1 man page with --interface and --krb4.
15526
15527 - Modified the base64Encode() function to work like the kerberos one, so that
15528   I could remove the use of that. There is no need for *two* base64 encoding
15529   functions! ;-)
15530
15531 Version 7.3pre5
15532
15533 Daniel (19 September 2000)
15534 - The kerberos4-layer source code that is much "influenced" by the original
15535   krb4 source code, through yafc into curl, was using quite a lot of global
15536   variables. libcurl can't work properly with globals like that why I had to
15537   clean up almost every function in the new security.c to make them use
15538   connection specific variables instead of the globals. I just hope I didn't
15539   destroy anything now... :-) configure updated, version string now reflects
15540   krb4 built-in. It almost works now. Only uploads are still being naughty.
15541
15542 Version 7.3pre3
15543
15544 Daniel (18 September 2000)
15545 - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
15546   curl. Martin is the primary author of the ftp client named yafc and he did
15547   not hesitate to help us implement this when I asked him. Many and sincere
15548   thanks to a splendid effort. It didn't even take many hours!
15549
15550 - Stephen Kick supplied a big patch that introduces the --interface flag to
15551   the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
15552   outgoing interface to use for your request. This may not work on all
15553   platforms. This needs testing.
15554
15555 - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
15556   name didn't resolve properly. This was due to the GetHost() function not
15557   returning an error even though it failed on some platforms!
15558
15559 Daniel (15 September 2000)
15560 - Updated all sorts of documents in regards to the new proxytunnel support.
15561
15562 Version 7.3pre2
15563
15564 Daniel (15 September 2000)
15565 - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
15566   Adjusted it. Added better info message when setting up the tunnel and the
15567   pasv message when doing the second connect.
15568
15569 Version 7.3pre1
15570
15571 Daniel (15 September 2000)
15572 - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
15573   second connection on ftp needed that.
15574
15575 - TheArtOfHTTPScripting was corrected all over. I both type and spell really
15576   bad at times!
15577
15578 Daniel (14 September 2000)
15579 - -p/--proxytunnel was added to 'curl'. It uses the new
15580   CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
15581   through the specified http proxy. At the moment, this should work with ftp.
15582
15583 Daniel (13 September 2000)
15584 - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
15585   and mailed the patch to the mailing list.
15586
15587 Daniel (7 September 2000)
15588 - I changed the #define T() in curl.h since it turned out it wasn't really
15589   a good symbol to use (when you compiled PHP with curl as a module, that
15590   define collided with some IMAP define or something). This was posted to the
15591   PHP bug tracker.
15592
15593 - I added extern "C" stuff in two header files to better allow libcurl usage
15594   in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
15595   this.
15596
15597 Version 7.2.1
15598
15599 Daniel (31 August 2000)
15600 - Albert Chin-A-Young fixed the configure script *again* and now it seems to
15601   detect Linux name resolving properly! (heard that before?)
15602
15603 - Troels Walsted Hansen pointed out that downloading a file containing the
15604   letter '+' from an ftp server didn't work. It did work from HTTP though and
15605   the reason was my lame URL decoder.
15606
15607 - I happened to notice that -I didn't at all work on ftp anymore. I corrected
15608   that.
15609
15610 Version 7.2
15611
15612 Daniel (30 August 2000)
15613 - Understanding AIX is a hard task. I believe I'll never figure out why they
15614   solve things so differently from the other unixes. Now, I'm left with the
15615   AIX 4.3 run-time warnings about duplicate symbols that according to this
15616   article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
15617   libtool flaw. I tried the mentioned patch, although that stops the linking
15618   completely.
15619
15620   So, if I select to ignore the ld warnings there are compiler warnings that
15621   fill the screen pretty bad when curl compiles. It turns out that if I want
15622   to '#include <arpa/inet.h>', I can get tid of the warnings by include the
15623   following three include files before that one:
15624
15625         #include <net/if_dl.h>
15626         #include <sys/mbuf.h>
15627         #include <netinet/if_ether.h>
15628
15629   Now, is it really sane to add those include files before arpa/inet.h in all
15630   the source files that include it?
15631
15632   Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
15633   login to try everything on.
15634
15635 Daniel (24 August 2000)
15636 - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
15637   was not up to date but lacked several object files.
15638
15639 - More work on the naming.
15640
15641 - Albert Chin-A-Young provided a configure-check for large file support, as
15642   some systems seem to need that for them to work. Had to change the position
15643   for the config.h include file in every .c file in the libcurl dir...
15644
15645 - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
15646   option instead of the messy way I've left described below. It seems to
15647   work. The libcurl fix remained the same as yesterday.
15648
15649 Daniel (23 August 2000)
15650 - Back on the -d stripping newlines thing. The 'plain post' thing was added
15651   when I had no thought of that one could actually post binary data with
15652   it. Now, I have to add this functionality in a graceful manner and I think
15653   I've managed to come up with a way: '-d @file;binary' will thus post the
15654   file binary, exactly as its contents are. It is implemented with a new
15655   *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
15656   libcurl can't strlen() the data in these cases.
15657
15658 - Albert Chin-A-Young made some very serious efforts and all the name
15659   resolving problems seem to have been sorted out now on all the platforms
15660   that previously showed them. I'll make another release now anyday because of
15661   this.
15662
15663 - The FAQ was much enhanced when it comes to the licensing issues thanks to
15664   Bjorn Reese.
15665
15666 Daniel (21 August 2000)
15667 - Rick Welykochy pointed out a problem when you use -d to post and you want to
15668   keep the newlines, as curl strips them off as a bonus before posting...
15669   This needs to be addressed.
15670
15671 Version 7.1.1
15672
15673 Daniel (21 August 2000)
15674 - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
15675   me configure-code that turned out to be very similar to my existing tests
15676   which only make me more sure I'm on the right path. I changed the order of
15677   the tests slightly, as it seems that some compilers don't yell error if a
15678   function is used with too many parameters. Thus, the first tested function
15679   will seem ok... Let's hope more compilers think of too-few parameters as bad
15680   manners, as we're now trying the functions in that order; fewer first. I
15681   should also add that Lars Hecking mailed me and volunteered to run tests on
15682   a few odd systems. Coalan is keeping his work over at
15683   http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
15684   future as well.
15685
15686 Daniel (18 August 2000)
15687 - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
15688   think this is the reason for the continued trouble though.
15689
15690 Daniel (17 August 2000)
15691 - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
15692   should affect some AIX, Digital Unix and HPUX 10 systems.
15693
15694 Daniel (15 August 2000)
15695 - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
15696   as AIX 4.3. Now why did problems occur before?
15697
15698 - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
15699   used combined with multiple URL retrievales. All but the first display got
15700   screwed up!
15701
15702 Daniel (11 August 2000)
15703 - Jason Priebe and an anonymous friend found some host names the Linux version
15704   of curl could not resolve. It turned out the buffer used to retrieve that
15705   information was too small. Fixed. One could argue about the usefulness of
15706   not having the slightest trace of a man page for gethostbyname_r() on my
15707   Linux Redhat installation...
15708
15709 Daniel (10 August 2000)
15710 - Balaji S Rao was first in line to note the missing possibility to replace
15711   the Content-Type: and Content-Length: headers when doing -d posts. I added
15712   the possibility just now. It seems some people wants to do standard posts
15713   using custom Content-Types.
15714
15715 Daniel (8 August 2000)
15716 - Mike Dowell correctly discovered that curl did not approve of URLs with no
15717   user name but password. As in 'http://:foo@haxx.se'. I corrected this.
15718
15719 Version 7.1
15720
15721 Daniel (7 August 2000)
15722 - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
15723
15724 - I added my new document in the docs directory. It is aimed to become a sort
15725   of tutorial on how to do HTTP scripting with curl.
15726
15727 Daniel (4 August 2000)
15728 - Working with Rich Gray on compiling curl for lots of different platforms.
15729   My fix for AIX 3.2 was not good enough and was slightly changed, I had to
15730   move an include file before another, as is now described in the source.
15731
15732   AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
15733   functions that the configure script didn't check for and thus the compile
15734   broke with an error. I have now changed the gethostbyname_r() check in the
15735   configure file to support all three versions of both these functions. My
15736   implementation that uses the AIX-style is though not yet verified and I may
15737   get problems to fix it if it turns out to bug since I don't have access to
15738   any system using that.
15739
15740   For problems like that, I made the configure script allow --disable-thread
15741   to completely switch off the check for threadsafe versions of a few
15742   functions and thus go with the "good old versions" that tend to work
15743   although will break thread-safeness for libcurl. Most people won't use
15744   libcurl for other things than curl though, and curl doesn't need a
15745   thread-safe lib.
15746
15747 - Working on my big tutorial about HTTP scripting with curl.
15748
15749 Daniel (1 August 2000)
15750 - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
15751   that was just a left-over from passed times. The strequal() is now a true
15752   function supplied by libcurl for a portable case insensitive string
15753   comparison. I added the prototypes in include/curl.h and removed the
15754   now obsolete #define.
15755
15756 - Igor Khristophorov made a fix to allow resumed download from Sun's
15757   JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
15758   headers.
15759
15760 - The makefiles forced a static library build, which is bad since we now use
15761   libtool and thus have excellent shared library support! Albert Chin-A-Young
15762   found out.
15763
15764 Version 7.0.11beta
15765
15766 Daniel (1 August 2000)
15767 - Albert Chin-A-Young pointed out that 'make install' did not properly create
15768   the header include directory, why it failed to install the header files as
15769   it should. Automake isn't really equipped to deal with subdirectories
15770   without Makefiles in any nice way. I had to run ahead and add Makefiles in
15771   both include and include/curl before I managed to create a top-level
15772   makefile that succeeds in install everything properly!
15773
15774 - Ok, no more "features" added now. Let's just verify that there's no major
15775   flaws added now.
15776
15777 Daniel (31 July 2000)
15778 - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
15779   of those internally generated headers. They didn't settle with the blank
15780   ones you could tell curl to use. I rewrote the header-replace stuff a
15781   little. Now, if you replace an internal header with your own and that new
15782   one is a blank header you will only remove the internal one and not get any
15783   blank. I couldn't figure out any case when you want that blank header.
15784
15785 Daniel (29 July 2000)
15786 - It struck me that the lib used localtime() which is not thread-safe, so now
15787   I use localtime_r() in the systems that has it.
15788
15789 - I went through this entire document and removed all email addresses and left
15790   names only. I've really made an effort to always note who brought be bug
15791   reports or fixes, but more and more people ask me to remove the email
15792   addresses since they become victims for spams this way. Gordon Beaton got me
15793   working on this.
15794
15795 Daniel (27 July 2000)
15796 - Jörn Hartroth found out that when you specified a HTTP proxy in an
15797   environment variable and used -L, curl failed in the second fetch. I
15798   corrected this problem and posted a patch to the list. No need for an extra
15799   beta release just for this.
15800
15801 Version 7.0.10beta
15802
15803 Daniel (27 July 2000)
15804 - So, libtool replaced two of my files with symbolic links and I forgot to add
15805   the two new libtool files to the release archive (and they were added as
15806   symlinks as well!) This of course lead to that the configure script failed
15807   on 7.0.9...
15808
15809 Version 7.0.9beta
15810
15811 Daniel (25 July 2000)
15812 - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
15813   libtoolified, just as we've wanted for a while now. He also made the
15814   recently added man pages get installed properly on 'make install' and some
15815   other nice cleanups.
15816
15817 - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
15818   page using a password, and that page then sends a Location: to another
15819   server that curl follows, curl will send the user name and password to that
15820   server as well.
15821
15822   Now, I'll never be able to make curl do Location: following all that perfect
15823   and you're all sooner or later required to write a script to do several
15824   fetches when you're doing advanced stuff, but now I've modified curl to at
15825   least *only* send the user name and password to the original server. Which
15826   means that if get a page from server A with a password, that forwards curl
15827   to server B, curl won't use the password there. If server B then forwards
15828   curl back to server A again, the password will be used again.
15829
15830   This is not a perfect implementation, as in a browser case it would only use
15831   the password if the left-prefix of the first path is the same. I just think
15832   that this fix prevents a somewhat lurky "security hole".
15833
15834   As a side-note in this subject: HTTP passwords are sent in cleartext and
15835   will never be considered to be safe or secure. Use HTTPS for that.
15836
15837 - As discussed on the mailing list, I converted the FTP response reading
15838   function into using select() which then allows timeouts (even under win32!)
15839   if the command-reply session gets too slow or dies completely. I made a
15840   default timeout on 3600 seconds unless anything else is specified, since I
15841   don't think anyone wants to wait more than that for a single character to
15842   get received...
15843
15844 - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
15845   the rfc1867 form posts. He introduced 'name=<file' which brings a means to
15846   suuply very large text chunks read from the given file name. It differs from
15847   'name=@file' in the way that this latter thing is marked in the uploaded
15848   contents as a file upload, while the first is just text (as in a input or
15849   textarea field). Torsten also corrected a bug that would happen if you used
15850   %s or similar in a -F file name.
15851
15852 - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
15853   files to/from FTP using type ASCII curl should not expect the transfer to be
15854   the exact size reported by the server as the file size. Since ASCII may very
15855   well mean that the content is translated while transfered, the final size
15856   may very well differ. Therefor, curl now ignores the file size when doing
15857   ASCII transfers in FTP.
15858
15859 Daniel (24 July 2000)
15860 - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
15861   port number to be set separately from the proxy host name.
15862
15863 - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
15864
15865 - The FTP transfer code now accepts a 250-code as well as the previously
15866   accepted 226, after a successful file transfer. Mohan <mnair at
15867   evergreen-funds.com> pointed this out.
15868
15869 - The check for *both* nsl and socket was never added in the v7 configure.in
15870   when I moved the main branch. I re-added that check to configure.in. This was
15871   discovered by Rich Gray.
15872
15873 - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
15874   curl_disconnect() which of course meant libcurl ate memory.
15875
15876 - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
15877   properly include the port number if non-default ports were used. This should
15878   now have been fixed.
15879
15880 - HTTP connect errors now return errors earlier. This was most notably causing
15881   problems when the HTTPS certificate had problems and later caused a crash.
15882   Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
15883   and suggesting a fix...
15884
15885 Daniel (21 June 2000)
15886 - After a "bug report" I received where the user was using both -F and -I in a
15887   HTTP request (it severly confused the library I should add), I added some
15888   checks to src/main.c that prevents setting more than one HTTP request
15889   command, no matter what the user wants! ;-)
15890
15891 Version 7.0.8beta
15892
15893 Daniel (20 June 2000)
15894 - I did a major replace in many files to use the new curl domain haxx.se
15895   instead of the previous one.
15896
15897 - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
15898   makes a POST after it has followed a location. When the initial POST has
15899   been done, it'll turned into a GET for the further requests. This is only
15900   interesting when using -L/--location *and* doing a POST at the same time.
15901
15902   While messing with this, I added another weird feature I call 'auto
15903   referer'. If you append ';auto' to the right of a given referer string (or
15904   only use that string as referer), libcurl will automatically set the
15905   previoud URL as refered when it follows a Location: and gets a succeeding
15906   document.
15907
15908 - My hero Rich Gray found the very obscure FTP bug that happened to him only
15909   when passing through a particular firewall and using the PORT command. It
15910   turned out that PORT was the only command in the lib/ftp.c source that
15911   didn't send a proper \r\n sequence but instead used the faulty \n which as
15912   it seemed is supported by most major ftp servers... :-O
15913
15914 Version 7.0.7beta
15915
15916 Daniel (16 June 2000)
15917 - I had avoided this long enough now, so I moved the alternative progress bar
15918   stuff from the lib and added it to the client code. This is now using the
15919   recently added progress callback and it seems to work pretty much like
15920   before. Since it is only one progress bar and you and download and upload at
15921   the same time, this bar shows the combined progress of both directions. This
15922   code was just ported from the old place to this, Lars is still our saviour!
15923   ;-) This also made the documentation more accurate since I never removed
15924   this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
15925   from the library since the lib has only one internal progress meter and it
15926   will never get another. It is although likely that the internal one also
15927   will be moved to the client code in the future (when I have other means of
15928   getting the writeout data and move that too to the client).
15929
15930 - I took the opportunity to verify that standard progress meter works and I
15931   found out it didn't get inited properly. Grrr. I corrected that as well.
15932
15933 Daniel (15 June 2000)
15934 - I thought I'd better verify that the -F option still works in v7 and of
15935   course it didn't... :-/ Anyway, I had the problems I could discover
15936   corrected. About one month of beta testing and not a single person has used
15937   this feature with v7?
15938
15939 - Björn correctly pointed out that the --progress-bar still doesn't work in
15940   v7. Hm.
15941
15942 Daniel (14 June 2000)
15943 - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
15944   should. I corrected this.
15945
15946 Version 7.0.6beta
15947
15948 Daniel (14 June 2000)
15949 - Björn Stenberg pointed out several problems (related to win32 compiling):
15950   lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
15951   src/main.c had several minor problems
15952   lib/makefile.m32 had getpass.[co] twice
15953   src/config-win32.h lacked the HAVE_FCNTL_H define
15954   both config-win32.h files now only set the HAVE_UNISTD_H define if the
15955   define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
15956   to set it.
15957
15958 Version 7.0.5beta
15959
15960 Daniel (14 June 2000)
15961 - Applied Luong Dinh Dung's comments about a few win32 compile problems.
15962
15963 - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
15964   binary. It won't do it if the -B / --use-ascii option is used. That option
15965   is now an extended version of the previous -B /--ftp--ascii. The flag was
15966   already in use be the ldap as well so the new name fits pretty good. The
15967   libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
15968   obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
15969   compiler around.
15970
15971 Daniel (13 June 2000)
15972 - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
15973   since it free()ed the main curl struct *twice*. This is now corrected.
15974
15975 Daniel (9 June 2000)
15976 - Updated the RESOURCES file, added a README.win32 file.
15977
15978 Daniel (8 June 2000)
15979 - So I finally added the progress callback to the *setopt() options and it
15980   should work now. I don't have the energy to write any test program for it
15981   right now.
15982 - Made the callback function typedefs public in curl/curl.h for comfort. Just
15983   in case anyone wanna fiddle with such pointers.
15984 - Updated the curl_easy_setopt() man page accordingly.
15985
15986 Version 7.0.4beta
15987
15988 Daniel (2 June 2000)
15989 - I noticed that when doing Location: following, we lost custom headers in all
15990   but the first request.
15991 - Removed the 'HttpPost' struct and moved the header stuff to the more generic
15992   curl_slist.
15993 - Added some better slist-cleanups in src/main.c
15994
15995 Version 7.0.3beta
15996
15997 Daniel (31 May 2000)
15998 - So I discovered that I released the 7.0.2beta without it being able to
15999   compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
16000   feature a different amount of arguments on different systems so I had to add
16001   a configure check for this and adjust the code slightly.
16002
16003 Version 7.0.2beta
16004
16005 Daniel (29 May 2000)
16006 - Corrected the bits.* assignments when using CURLOPT options that only
16007   toggles one of those bits.
16008
16009 - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
16010   usage of the gethostbyname_r() and similar functions in case they're around,
16011   since that make libcurl much better threadsafe in many systems (such as
16012   solaris). I added the checks for these functions to the configure script.
16013
16014   I can't explain why, but the inet_ntoa_r() function did not appear in my
16015   Solaris include files, I had to add my own include file for this for now.
16016
16017 Daniel (22 May 2000)
16018 - Jörn Hartroth brought me fixes to make the win32 version compile properly as
16019   well as a rename of the 'interface' field in the urldata struct, as it seems
16020   to be reserved in some gcc versions!
16021
16022 - Rich Gray struck back with yet some portability reports. Data General DG/UX
16023   needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
16024   More fixes are expected as a result of Richies very helpful work.
16025
16026 Version 7.0.1beta
16027
16028 Daniel (21 May 2000)
16029 - Updated lots of #defines, enums and variable type names in the library. No
16030   more weird URG or URLTAG prefixes. All types and names should be curl-
16031   prefixed to avoid name space clashes. The FLAGS-parameter to the former
16032   curl_urlget() has been converted into a bunch of flags to use in separate
16033   setopt calls. I'm still focusing on the easy-interface, as the curl tool is
16034   now using that.
16035
16036 - Bjorn Reese has provided me with an asynchronous name resolver that I plan
16037   to use in upcoming versions of curl to be able to gracefully timeout name
16038   lookups.
16039
16040 Version 7.0beta
16041
16042 Daniel (18 May 2000)
16043 - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
16044   source codes to be dependent on the lib version. This define is now set to
16045   a dexadecimal number, with 8 bits each for major number, minor number and
16046   patch number. In other words, version 1.2.3 would make it 0x010203. It also
16047   makes a larger number a newer version.
16048
16049 Daniel (17 May 2000)
16050 - Martin Kammerhofer correctly pointed out several flaws in the FTP range
16051   option. I corrected them.
16052 - Removed the win32 winsock init crap from the lib to the src/main.c file
16053   in the application instead. They can't be in the lib, especially not for
16054   multithreaded purposes.
16055
16056 Daniel (16 May 2000)
16057 - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
16058   There is still more work to do, but the first step is now taken.
16059   <curl/easy.h> is the include file to use.
16060
16061 Daniel (14 May 2000)
16062 - FTP URLs are now treated slightly different, more according to RFC 1738.
16063 - FTP sessions are now performed differently, with CWD commands to change
16064   directory instead of RETR/STOR/LIST with the full path. Discussions with
16065   Rich Gray made me notice these problems.
16066 - Janne Johansson discovered and corrected a buffer overflow in the
16067   src/usrglob.c file.
16068 - I had to add a lib/strequal.c file for doing case insensitive string
16069   compares on all platforms.
16070
16071 Daniel (8 May 2000):
16072 - Been working lots on the new lib.
16073 - Together with Rich Gray, I've tried to adjust the configure script to work
16074   better on the NCR MP-RAS Unix.
16075
16076 Daniel (2 May 2000):
16077 - Albert Chin-A-Young pointed out that I had a few too many instructions in
16078   configure.in that didn't do any good.
16079
16080 Daniel (24 April 2000):
16081 - Added a new paragraph to the FAQ about what to do when configure can't
16082   find OpenSSL even though it is installed. Supplied by Bob Allison
16083
16084 Daniel (12 April 2000):
16085 - Started messing around big-time to convert the old library interface to a
16086   better one...
16087
16088 Daniel (8 April 2000):
16089 - Made the progress bar look better for file sizes between 9999 kilobytes
16090   and 100 megabytes. They're now displayed XX.XM.
16091 - I also noticed that ftp fetches through HTTP proxies didn't add the user
16092   agent string. It does now.
16093 - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
16094   on a Linux machine. It still a) requires me to be root to do it, b) leaves
16095   the rpm packages laying at some odd place on my disk c) doesn't work to
16096   build the ssl version of curl since I didn't install openssl from an rpm
16097   package so now the rpm crap thinks I don't have openssl and refuses to build
16098   a package that depends on ssl... Did I mention I don't get along with RPM?
16099 - Once again I received a bug report about autoconf not setting -L prior to -l
16100   on the command line when checking for libs. In this case it made the native
16101   cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
16102   reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
16103   is a pity there's no newer release around...
16104
16105 Daniel (4 April 2000):
16106 - Marco G. Salvagno supplied me with two fixes that
16107   appearantly makes the OS/2 port work better with multiple URLs.
16108
16109 Daniel (2 April 2000):
16110 - Another Location: fix. This time, when curl connected to a port and then
16111   followed a location with an absolute URL to another port, it misbehaved.
16112
16113 Daniel (27 March 2000):
16114 - H. Daphne Luong pointed out that curl was wrongly
16115   messing up the proxy string when fetching a document through a http proxy,
16116   which screwed up multiple fetches such as in location: followings.
16117
16118 Daniel (23 March 2000):
16119 - Marco G. Salvagno corrected my badly applied patch he
16120   actually already told me about!
16121
16122 - H. Daphne Luong brought me a fix that now makes curl
16123   ignore select() errors in the download if errno is EINTR, which turns out to
16124   happen every now and then when using libcurl multi-threaded...
16125
16126 Daniel (22 March 2000):
16127 - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
16128   was accidentally #defined in config-win32.h, which it shouldn't have been.
16129   The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
16130   makefile for MS VC++.
16131
16132 Daniel (21 March 2000):
16133 - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
16134   one of the AM_* macros searches for a BSD compatible install already. Janne
16135   Johansson made me aware of this.
16136
16137 Version 6.5.2
16138
16139 Daniel (21 March 2000):
16140 - Paul Harrington quickly pointed out to me that 6.5.1
16141   crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
16142   the -D adjustments in src/main.c.
16143
16144 Version 6.5.1
16145
16146 Daniel (20 March 2000):
16147 - An anonymous post on sourceforge correctly pointed out a possible buffer
16148   overflow in the curl_unescape() function for URL conversions. The main
16149   problem with this bug is that the ftp download uses that function and this
16150   single- byte overflow could lead to very odd bugs (as one reported by Janne
16151   Johansson).
16152
16153 Daniel (19 March 2000):
16154 - Marco G. Salvagno supplied me with a series of patches
16155   that now allows curl to get compiled on OS/2. It even includes a section in
16156   the INSTALL file. Very nice job!
16157
16158 Daniel (17 March 2000):
16159 - Wham Bang supplied a patch for the lib/Makefile.vc6
16160   file. We still need some fixes for the config-win32.h since it appears that
16161   VC++ and mingw32 have different opinions about (at least) unistd.h's
16162   existence.
16163
16164 Daniel (15 March 2000):
16165 - I modified the -D/--dump-header workings so that it doesn't write anything
16166   to the file until it needs to. This way, you can actually use -b and -D
16167   on the same file if you want repeated invokes to store and read the cookies
16168   in that one single file.
16169
16170 - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
16171   Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
16172   stuff from the sources (they're covered by the config-win32.h now).
16173
16174 - Pascal Gaudette fixed a missing ldap.c problem in the
16175   Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
16176
16177 Daniel (14 March 2000):
16178 - Paul Harrington pointed out that the 'http_code' variable in the -w output
16179   was never written. I fixed it now.
16180
16181 - Janne Johansson reported the complaints that OpenBSD does
16182   when getdate.c #includes malloc.h. It claims stdlib.h should be included
16183   instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
16184   the configure.in for malloc.h and stdlib.h.
16185
16186 Version 6.5
16187
16188 Daniel (13 March 2000):
16189 - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
16190   single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
16191   the standards say, but I added a white space between the name/value pairs to
16192   perhaps make them work better.
16193
16194 - Added the perl check back in the configure.in again since the mkhelp.pl
16195   script needs it!
16196
16197 - Made some beautifications in the curl man page.
16198
16199 Daniel (3 March 2000):
16200 - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
16201   HAVE_STRDUP.
16202
16203 Daniel (3 March 2000):
16204 - Uploaded the 6.5pre2 package.
16205
16206 Daniel (2 March 2000):
16207 - Removed the perl-programs from the distribution, they never made many people
16208   happy and I'll still keep them available on the web.
16209
16210 - Added the -w and -N stuff to the man page. Documented the new progress meter
16211   display in README.curl.
16212
16213 - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
16214   Möller from the openssl development team helped bringing me the details for
16215   fixing an OpenSSL usage flaw. It became apparent when they released openssl
16216   0.9.5 since that barfed on curl's bad behavior (not seeding a random number
16217   thing).
16218
16219 - Yet another option: -N/--no-buffer disables buffering in the output stream.
16220   Probably most useful for very slow transfers when you really want to get
16221   every byte curl receives within some preferred time. Andrew <tmr at gci.net>
16222   suggested this.
16223
16224 - Damien Adant mailed me his fixes for making curl compile on Ultrix.
16225
16226 Daniel (24 February 2000):
16227 - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
16228
16229   I should also make a note here, if nothing else to myself, that when using
16230   the %-syntax for variables in DOS command prompts, you must use two %-
16231   letters for each one since that is an escape letter there! Maybe I should
16232   use another letter instead!
16233
16234 - Added more variables to -w:
16235
16236   'http_code'
16237   'time_namelookup'
16238   'time_connect'
16239   'time_pretransfer'
16240   'url_effective'
16241
16242 - Made -w@filename read the syntax from a file and -w@- reads the syntax from
16243   stdin in the good old "standard" curl way.
16244
16245 Daniel (22 February 2000):
16246 - Released a 6.5pre1 version to get some test and user feedback.
16247
16248 Daniel (21 February 2000):
16249
16250 - I added the -w/--write-out flag and some variables to go with it. -w is a
16251   single string, whatever you enter there will be written out when curl has
16252   completed a successful request. There are some variable substitutions and
16253   they are specified as '%{variable}' (without the quotes). Variables that
16254   exist as of this moment are:
16255
16256         total_time     - total transfer time in seconds (with 2 decimals)
16257         size_download  - total downloaded amount of bytes
16258         size_upload    - total uploaded amount of bytes
16259         speed_download - the average speed of the entire download
16260         speed_upload   - the average speed of the entire upload
16261
16262   I will of course add more variables, but I need input on these and others.
16263
16264 - It struck me that the -# progress bar will be hard to just apply on the new
16265   progress bar concept. I need some feedback on this before that'll get re-
16266   introduced! :-/
16267
16268 Daniel (16 February 2000):
16269 - Jörn Hartroth brought me some fixes for the progress meter and I continued
16270   working on it. It seems to work for http download, http post, ftp download
16271   and ftp upload. It should be a pretty good test it works generally good.
16272
16273 - Still need to add the -# progress bar into the new style progress interface.
16274
16275 - Gonna have a go at my new output option parameter next.
16276
16277 Daniel (15 February 2000):
16278 - The progress meter stuff is slowly taking place. There's more left before it
16279   is working ok and everything is tested, but we're reaching there. Slowly!
16280
16281 Daniel (11 February 2000):
16282 - Paul Marquis fixed the config file parsing of curl to
16283   deal with any-length lines, removing the previous limit of 4K.
16284
16285 - Eetu Ojanen's suggestion of supporting the @-style for -b
16286   is implemented. Now -b@<filename> works as well as the old style. -b@- also
16287   similarly reads the cookies from stdin.
16288
16289 - Reminder: -D should not write to the file until it needs to, in the same way
16290   -o does. That would enable curl to use -b and -D on the same file...
16291
16292 - Ellis Pritchard made getdate.y work for MacOS X.
16293
16294 - Paul Harrington helped me out finding the crash in the
16295   cookie parser. He also pointed out curl's habit of sending empty cookies to
16296   the server.
16297
16298 Daniel (8 February 2000):
16299  - Ron Zapp corrected a problem in src/urlglob.c that
16300    prevented curl from getting compiled on sunos 4. The problem had to do
16301    with the difference in sprintf() return code types.
16302
16303  - Transfer() should now be able to download and upload simultaneously. Let's
16304    do some progress meter fixes later this week.
16305
16306 Daniel (31 January 2000):
16307  - Paul Harrington found another core dump in the cookie
16308    parser. Curl doesn't properly recognize the 'version' keyword and I think
16309    that is what caused this. I need to refresh some specs on cookies and see
16310    what else curl lacks to improve this a bit more once and for all.
16311
16312    RFC 2109 clearly specifies how cookies should be dealt with when they are
16313    compliant with that spec. I don't think many servers are though...
16314
16315  - Mark W. Eichin found that while curl is uploading a form
16316    to a web site, it doesn't read incoming data why it'll hang after a while
16317    since the socket "pipe" becomes full.
16318
16319    It took me two hours to rewrite Download() and Upload() into the new
16320    single function Transfer(). It even seems to work! More testing is required
16321    of course... I should get the header-sending together in a kind of queue
16322    and let them get "uploaded" in Transfer() as well.
16323
16324  - Zhibiao Wu pointed out a curl bug in the location: area,
16325    although I did not get a reproducible way to do this why I have to wait
16326    with fixing anything.
16327
16328  - Bob Schader suggested I should implement resume
16329    support for the HTTP PUT operation, and as I think it is a valid suggestion
16330    I'll work on it.
16331
16332 Daniel (25 January 2000):
16333  - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
16334    corrected.
16335
16336  - Jens Schleusener pointed out a problem to compile
16337    curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
16338    by Jörn's recent #include modifications!
16339
16340 Daniel (19 January 2000):
16341  - Oskar Liljeblad pointed out and corrected a problem
16342    in the Location: following system that made curl following a location: to a
16343    different protocol to fail.
16344
16345    At January 31st I re-considered this fix and the surrounding source code. I
16346    could not really see that the patch did any difference, why I removed it
16347    again for further research and debugging. (It disabled location: following
16348    on server not running on default ports.)
16349
16350  - Jörn Hartroth brought a fix that once again
16351    made it possible to select progress bar.
16352
16353  - Jörn also fixed a few include problems.
16354
16355 Version 6.4
16356
16357 Daniel (17 January 2000):
16358  - Based on suggestions from Björn Stenberg, I made the
16359    progress deal better with larger files and added a "Time" field which shows
16360    the time spent on the download so far.
16361  - I'm now using the CVS repository on sourceforge.net, which also allows web
16362    browsing. See http://curl.haxx.nu.
16363
16364 Daniel (10 January 2000):
16365  - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
16366  - Added "postquote" support to the ftp section that enables post-ftp-transfer
16367    quote commands.
16368  - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
16369    that command will be issued AFTER a successful ftp transfer. This can of
16370    course be used to delete or rename a file after it has been uploaded or
16371    downloaded. Use your imagination! ;-)
16372  - Since I do the main development on solaris 2.6 now, I had to download and
16373    install GNU groff to generate the hugehelp.c file. The solaris nroff cores
16374    on the man page! So, in order to make the solaris configure script find a
16375    better result I made gnroff get checked prior to the regular nroff.
16376  - Added all the curl exit codes to the man page.
16377  - Jim Gallagher properly tracked down a bug in autoconf
16378    2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
16379    flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
16380    and therefore you can't make the configure script find the openssl libs!
16381
16382 Daniel (28 December 1999):
16383  - Tim Verhoeven correctly identified that curl
16384    doesn't support URL formatted file names when getting ftp. Now, there's a
16385    problem with getting very weird file names off FTP servers. RFC 959 defines
16386    that the file name syntax to use should be the same as in the native OS of
16387    the server. Since we don't know the peer server system we currently just
16388    translate the URL syntax into plain letters. It is still better and with
16389    the solaris 2.6-supplied ftp server it works with spaces in the file names.
16390
16391 Daniel (27 December 1999):
16392  - When curl parsed cookies straight off a remote site, it corrupted the input
16393    data, which, if the downloaded headers were stored made very odd characters
16394    in the saved data. Correctly identified and reported by Paul Harrington.
16395
16396 Daniel (13 December 1999):
16397  - General cleanups in the library interface. There had been some bad kludges
16398    added during times of stress and I did my best to clean them off. It was
16399    both regarding the lib API as well as include file confusions.
16400
16401 Daniel (3 December 1999):
16402  - A small --stderr bug was reported by Eetu Ojanen...
16403
16404  - who also brought the suggestion of extending the -X flag to ftp list as
16405    well. So, now it is and the long option is now --request instead. It is
16406    only for ftp list for now (and the former http stuff too of course).
16407
16408 Lars J. Aas (24 November 1999):
16409  - Patched curl to compile and build under BeOS. Doesn't work yet though!
16410
16411  - Corrected the Makefile.am files to allow putting object files in
16412    different directories than the sources.
16413
16414 Version 6.3.1
16415
16416 Daniel (23 November 1999):
16417  - I've had this major disk crash. My good old trust-worthy source disk died
16418    along with the machine that hosted it. Thank goodness most of all the
16419    things I've done are either backed up elsewhere or stored in this CVS
16420    server!
16421
16422  - Michael S. Steuer pointed out a bug in the -F handling
16423    that made curl hang if you posted an empty variable such as '-F name='. It
16424    was one of those old bugs that never have worked properly...
16425
16426  - Jason Baietto pointed out a general flaw in the HTTP
16427    download. Curl didn't complain if it was prematurely aborted before the
16428    entire download was completed. It does now.
16429
16430 Daniel (19 November 1999):
16431  - Chris Maltby very accurately criticized the lack of
16432    return code checks on the fwrite() calls. I did a thorough check for all
16433    occurrences and corrected this.
16434
16435 Daniel (17 November 1999):
16436  - Paul Harrington pointed out that the -m/--max-time option
16437    doesn't work for the slow system calls like gethostbyname()... I don't have
16438    any good fix yet, just a slightly less bad one that makes curl exit hard
16439    when the timeout is reached.
16440
16441  - Bjorn Reese helped me point out a possible problem that might be the reason
16442    why Thomas Hurst experience problems in his Amiga version.
16443
16444  Daniel (12 November 1999):
16445  - I found a crash in the new cookie file parser. It crashed when you gave
16446    a plain http header file as input...
16447
16448 Version 6.3
16449
16450  Daniel (10 November 1999):
16451  - I kind of found out that the HTTP time-conditional GETs (-z) aren't always
16452    respected by the web server and the document is therefore sent in whole
16453    again, even though it doesn't match the requested condition. After reading
16454    section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
16455    my own check as well. If curl thinks the condition isn't met, the transfer
16456    is aborted prematurely (after all the headers have been received).
16457
16458  - After comments from Robert Linden I also rewrote some parts of the man page
16459    to better describe how the -F works.
16460
16461  - Michael Anti put up a new curl download mirror in
16462    China:  http://www.pshowing.com/curl/
16463
16464  - I added the list of download mirrors to the README file
16465
16466  - I did add more explanations to the man page
16467
16468  Daniel (8 November 1999):
16469  - I made the -b/--cookie option capable of reading netscape formatted cookie
16470    files as well as normal http-header files. It should be able to
16471    transparently figure out what kind of file it got as input.
16472
16473  Daniel (29 October 1999):
16474  - Another one of Sebastiaan van Erk's ideas (that has been requested before
16475    but I seem to have forgotten who it was), is to add support for ranges in
16476    FTP downloads. As usual, one request is just a request, when they're two
16477    it is a demand. I've added simple support for X-Y style fetches. X has to
16478    be the lower number, though you may omit one of the numbers. Use the -r/
16479    --range switch (previously HTTP-only).
16480
16481  - Sebastiaan van Erk suggested that curl should be
16482    able to show the file size of a specified file. I think this is a splendid
16483    idea and the -I flag is now working for FTP. It displays the file size in
16484    this manner:
16485         Content-Length: XXXX
16486    As it resembles normal headers, and leaves us the opportunity to add more
16487    info in that display if we can come up with more in the future! It also
16488    makes sense since if you access ftp through a HTTP proxy, you'd get the
16489    file size the same way.
16490
16491    I changed the order of the QUOTE command executions. They're now executed
16492    just after the login and before any other command. I made this to enable
16493    quote commands to run before the -I stuff is done too.
16494
16495  - I found out that -D/--dump-header and -V/--version weren't documented in
16496    the man page.
16497
16498  - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
16499    some text about this in the man page for the range option. The thread in
16500    the mailing list that started this was initiated by Michael Anti.
16501
16502  - I get reports about nroff crashes on solaris 2.6+ when displaying the curl
16503    man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
16504    reported and brought the suggestion.
16505
16506  - In a dialogue with Johannes G. Kristinsson we came
16507    up with the idea to let -H/--header specified headers replace the
16508    internally generated headers, if you happened to select to add a header
16509    that curl normally uses by itself. The advantage with this is not entirely
16510    obvious, but in Johannes' case it means that he can use another Host: than
16511    the one curl would set.
16512
16513  Daniel (27 October 1999):
16514  - Jongki Suwandi brought a nice patch for (yet another) crash when following
16515    a location:. This time you had to follow a https:// server's redirect to
16516    get the core.
16517
16518 Version 6.2
16519
16520  Daniel (21 October 1999):
16521  - I think I managed to remove the suspicious (nil) that has been seen just
16522    before the "Host:" in HTTP requests when -v was used.
16523  - I found out that if you followed a location: when using a proxy, without
16524    having specified http:// in the URL, the protocol part was added once again
16525    when moving to the next URL! (The protocol part has to be added to the
16526    URL when going through a proxy since it has no protocol-guessing system
16527    such as curl has.)
16528  - Benjamin Ritcey reported a core dump under solaris 2.6
16529    with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
16530    that occurred after the download was done and completed.
16531  - Benjamin found ftp downloads to show the first line of the download meter
16532    to get written twice, and I removed that problem. It was introduced with
16533    the multiple URL support.
16534  - Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
16535    honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
16536    case-insensitive..."  HTTP header parsing assumed a certain casing. Dan
16537    also provided me with a patch that corrected this, which I took the liberty
16538    of editing slightly.
16539  - Dan Zitter also provided a nice patch for config.guess to better recognize
16540    the Mac OS X
16541  - Dan also corrected a minor problem in the lib/Makefile that caused linking
16542    to fail on OS X.
16543
16544  Daniel (19 October 1999):
16545  - Len Marinaccio came up with some problems with curl.  Since Windows has a
16546    crippled shell, it can't redirect stderr and that causes trouble. I added
16547    --stderr today which allows the user to redirect the stderr stream to a
16548    file or stdout.
16549
16550  Daniel (18 October 1999):
16551  - The configure script now understands the '--without-ssl' flag, which now
16552    totally disable SSL/https support. Previously it wasn't possible to force
16553    the configure script to leave SSL alone. The previous functionality has
16554    been retained. Troy Engel helped test this new one.
16555
16556 Version 6.1 (October 17 1999)
16557
16558  Daniel (17 October 1999):
16559  - I ifdef'ed or commented all the zlib stuff in the sources and configure
16560    script. It turned out we needed to mock more with zlib than I initially
16561    thought, to make it capable of downloading compressed HTTP documents and
16562    uncompress them on the fly. I didn't mean the zlib parts of curl to become
16563    more than minor so this means I halt the zlib expedition for now and wait
16564    until someone either writes the code or zlib gets updated and better
16565    adjusted for this kind of usage.  I won't get into details here, but a
16566    short a summary is suitable:
16567    - zlib can't automatically detect whether to use zlib or gzip
16568      decompression methods.
16569    - zlib is very neat for reading gzipped files from a file descriptor,
16570      although not as nice for reading buffer-based data such as we would
16571      want it.
16572    - there are still some problems with the win32 version when reading from
16573      a file descriptor if that is a socket
16574
16575  Daniel (14 October 1999):
16576  - Moved the (external) include files for libcurl into a subdirectory named
16577    curl and adjusted all #include lines to use <curl/XXXX> to maintain a
16578    better name space and control of the headers. This has been requested.
16579
16580  Daniel (12 October 1999):
16581  - I modified the 'maketgz' script to perform a 'make' too before a release
16582    archive is put together in an attempt to make the time stamps better and
16583    hopefully avoid the double configure-running that use to occur.
16584
16585  Daniel (11 October 1999):
16586  - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as
16587    some other missing zlib #ifdef and more text on the multiple URL docs in
16588    the man page.
16589
16590 Version 6.1beta
16591
16592  Daniel (6 October 1999):
16593  - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
16594    just made: the -d switch is now capable of reading post data from a named
16595    file or stdin.  Use it similarly to the -F. To read the post data from a
16596    given file:
16597
16598         curl -d @path/to/filename www.postsite.com
16599
16600    or let curl read it out from stdin:
16601
16602         curl -d @- www.postit.com
16603
16604  Jörn Hartroth (3 October 1999):
16605  - Brought some more patches for multiple URL functionality. The MIME
16606    separation ideas are almost scrapped now, and a custom separator is being
16607    used instead. This is still compile-time "flagged".
16608
16609  Daniel
16610  - Updated curl.1 with multiple URL info.
16611
16612  Daniel (30 September 1999):
16613  - Felix von Leitner brought openssl-check fixes for configure.in to work
16614    out-of-the-box when the openssl files are installed in the system default
16615    dirs.
16616
16617  Daniel (28 September 1999)
16618  - Added libz functionality. This should enable decompressing gzip, compress
16619    or deflate encoding HTTP documents. It also makes curl send an accept that
16620    it accepts that kind of encoding. Compressed contents usually shortens
16621    download time. I *need* someone to tell me a site that uses compressed HTTP
16622    documents so that I can test this out properly.
16623
16624  - As a result of the adding of zlib awareness, I changed the version string
16625    a little. I plan to add openldap version reporting in there too.
16626
16627  Daniel (17 September 1999)
16628  - Made the -F option allow stdin when specifying files. By using '-' instead
16629    of file name, the data will be read from stdin.
16630
16631 Version 6.0 (September 14 1999)
16632
16633  Daniel (13 September 1999)
16634  - Added -X/--http-request <request> to enable any HTTP command to be sent.
16635    Do not that your server has to support the exact string you enter. This
16636    should possibly a string like DELETE or TRACE.
16637
16638  - Applied Douglas' mingw32-fixes for the makefiles.
16639
16640  Daniel (10 September 1999)
16641  - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
16642    servers return code properly after the --quote commands were issued. It
16643    took anything non 200 as an error, when all 2XX codes should be accepted as
16644    OK.
16645
16646  - Sending cookies to the same site in multiple lines like curl used to do
16647    turned out to be bad and breaking the cookie specs. Curl now sends all
16648    cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
16649    doubt that many servers do use that syntax (yet).
16650
16651  Daniel (8 September 1999)
16652  - Jörn helped me make sure it still compiles nicely with mingw32 under win32.
16653
16654  Daniel (7 September 1999)
16655  - FTP upload through proxy is now turned into a HTTP PUT. Requested by
16656    Stefan Kanthak.
16657
16658  - Added the ldap files to the .m32 makefile.
16659
16660  Daniel (3 September 1999)
16661  - Made cookie matching work while using HTTP proxy.
16662
16663  Bjorn Reese (31 August 1999)
16664  - Passed his ldap:// patch. Note that this requires the openldap shared
16665    library to be installed and that LD_LIBRARY_PATH points to the
16666    directory where the lib will be found when curl is run with a
16667    ldap:// URL.
16668
16669  Jörn Hartroth (31 August 1999)
16670  - Made the Mingw32 makefiles into single files.
16671  - Made file:// work for Win32. The same code is now used for unix as well for
16672    performance reasons.
16673
16674  Douglas E. Wegscheid (30 August 1999)
16675  - Patched the Mingw32 makefiles for SSL builds.
16676
16677  Matthew Clarke (30 August 1999)
16678  - Made a cool patch for configure.in to allow --with-ssl to specify the
16679    root dir of the openssl installation, as in
16680
16681         ./configure --with-ssl=/usr/ssl_here
16682
16683  - Corrected the 'reconf' script to work better with some shells.
16684
16685  Jörn Hartroth (26 August 1999)
16686  - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
16687    compiles.
16688
16689 Version 5.11
16690
16691  Daniel (25 August 1999)
16692  - John Weismiller pointed out a bug in the header-line
16693    realloc() system in download.c.
16694
16695  - I added lib/file.[ch] to offer a first, simple, file:// support. It
16696    probably won't do much good on win32 system at this point, but I see it
16697    as a start.
16698
16699  - Made the release archives get a Makefile in the root dir, which can be
16700    used to start the compiling/building process easier. I haven't really
16701    changed any INSTALL text yet, I wanted to get some feed-back on this
16702    first.
16703
16704  Daniel (17 August 1999)
16705  - Another Location: bug. Curl didn't do proper relative locations if the
16706    original URL had cgi-parameters that contained a slash. Nusu's page
16707    again.
16708
16709  - Corrected the NO_PROXY usage. It is a list of substrings that if one of
16710    them matches the tail of the host name it should connect to, curl should
16711    not use a proxy to connect there. Pointed out to me by Douglas
16712    E. Wegscheid.  I also changed the README text a little regarding this.
16713
16714  Daniel (16 August 1999)
16715  - Fixed a memory bug with http-servers that sent Location: to a Location:
16716    page. Nusu's page showed this too.
16717
16718  - Made cookies work a lot better. Setting the same cookie name several times
16719    used to add more cookies instead of replacing the former one which it
16720    should've. Nusu <nus at intergorj.ro> brought me an URL that made this
16721    painfully visible...
16722
16723  Troy (15 August 1999)
16724  - Brought new .spec files as well as a patch for configure.in that lets the
16725    configure script find the openssl files better, even when the include
16726    files are in /usr/include/openssl
16727
16728 Version 5.10
16729
16730  Daniel (13 August 1999)
16731  - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
16732    OpenSSL. Now why couldn't they simply add a *new* function instead of
16733    modifying the parameters of an already existing function? This way, we get
16734    a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
16735    to come up with a #if construction that deals with this...
16736
16737  - Made curl output the SSL version number get displayed properly with 0.9.4.
16738
16739  Troy (12 August 1999)
16740  - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
16741    a bit rearranged.
16742
16743  Daniel (12 August 1999)
16744  - I had to copy a good <arpa/telnet.h> include file into the curl source
16745    tree to enable the silly win32 systems to compile. The distribution rights
16746    allows us to do that as long as the file remains unmodified.
16747
16748  - I corrected a few minor things that made the compiler complain when
16749    -Wall -pedantic was used.
16750
16751  - I'm moving the official curl web page to http://curl.haxx.nu. I think it
16752    will make it easier to remember as it is a lot shorter and less cryptic.
16753    The old one still works and shows the same info.
16754
16755  Daniel (11 August 1999)
16756  - Albert Chin-A-Young mailed me another correction for NROFF in the
16757    configure.in that is supposed to be better for IRIX users.
16758
16759  Daniel (10 August 1999)
16760  - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
16761    some fiddling with the getdate.c stuff that he had problems with under
16762    HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
16763    yacc or bison is found by the configure script. Since this is slightly new,
16764    we need to test the output getdate.c with win32 systems to make sure it
16765    still compiles there.
16766
16767  Daniel (5 August 1999)
16768  - I've just setup a new mailing list with the intention to keep discussions
16769    around libcurl development in it. I mainly expect it to be for thoughts and
16770    brainstorming around a "next generation" library, rather than nitpicking
16771    about the current implementation or details in the current libcurl.
16772
16773    To join our happy bunch of future-looking geeks, enter 'subscribe
16774    <address>' in the body of a mail and send it to
16775    libcurl-request@listserv.fts.frontec.se.  Curl bug reports, the usual curl
16776    talk and everything else should still be kept in this mailing list. I've
16777    started to archive this mailing list and have put the libcurl web page at
16778    www.fts.frontec.se/~dast/libcurl/.
16779
16780  - Stefan Kanthak contacted me regarding a few problems in the configure
16781    script which he discovered when trying to make curl compile and build under
16782    Siemens SINIX-Z V5.42B2004!
16783
16784  - Marcus Klein very accurately informed me that src/version.h was not present
16785    in the CVS repository. Oh, how silly...
16786
16787  - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
16788    support. If you run curl like 'curl telnet://host' you'll get all output on
16789    the screen and curl will read input from stdin. You'll be able to login and
16790    run commands etc, but since the output is buffered, expect to get a little
16791    weird output.
16792
16793    This is still in its infancy and it might get changed. We need your
16794    feed-back and input in how this is best done.
16795
16796    WIN32 NOTE: I bet we'll get problems when trying to compile the current
16797    lib/telnet.c on win32, but I think we can sort them out in time.
16798
16799  - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
16800    defined for getdate.c to compile properly on HP-UX 11.0. I updated the
16801    configure script to check for alloca.h which should make it.
16802
16803  Daniel (4 August 1999)
16804  - I finally got to understand Marcus Klein's ftp download resume problem,
16805    which turns out to be due to different outputs from different ftp
16806    servers. It makes ftp download resuming a little trickier, but I've made
16807    some modifications I really believe will work for most ftp servers and I do
16808    hope you report if you have problems with this!
16809
16810  - Added text about file transfer resuming to README.curl.
16811
16812  Daniel (2 August 1999)
16813  - Applied a progress-bar patch from Lars J. Aas. It offers
16814    a new styled progress bar enabled with -#/--progress-bar.
16815
16816  T. Yamada <tai at imasy.or.jp> (30 July 1999)
16817  - It breaks with segfault when 1) curl is using .netrc to obtain
16818    username/password (option '-n'), and 2) is automatically redirected to
16819    another location (option '-L').
16820
16821    There is a small bug in lib/url.c (block starting from line 641), which
16822    tries to take out username/password from user- supplied command-line
16823    argument ('-u' option). This block is never executed on first attempt since
16824    CONF_USERPWD bit isn't set at first, but curl later turns it on when it
16825    checks for CONF_NETRC bit. So when curl tries to redo everything due to
16826    redirection, it segfaults trying to access *data->userpwd.
16827
16828 Version 5.9.1
16829
16830  Daniel (30 July 1999)
16831  - Steve Walch pointed out that there is a memory leak in the formdata
16832    functions. I added a FormFree() function that is now used and supposed to
16833    correct this flaw.
16834
16835  - Mark Wotton reported:
16836    'curl -L https://www.cwa.com.au/' core dumps.  I managed to cure this by
16837    correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
16838    0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
16839    don't know whether it is curl or SSLeay that is to blame for that.
16840
16841  - Marcus Klein:
16842    Reported an FTP upload resume bug that I really can't repeat nor understand.
16843    I leave it here so that it won't be forgotten.
16844
16845  Daniel (29 July 1999)
16846  - Costya Shulyupin suggested support for longer URLs when following Location:
16847    and I could only agree and fix it!
16848
16849  - Leigh Purdie found a problem in the upload/POST department. It turned out
16850    that http.c accidentaly cleared the pointer instead of the byte counter
16851    when supposed to.
16852
16853  - Costya Shulyupin pointed out a problem with port numbers and Location:. If
16854    you had a server at a non-standard port that redirected to an URL using a
16855    standard port number, curl still used that first port number.
16856
16857  - Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
16858    and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
16859    the 302-code that the follow location header outputs it will never show any
16860    html on location: pages. I have now made it look for >=400 codes if
16861    CONF_FOLLOWLOCATION is set.
16862
16863  - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
16864    Beckmann).
16865
16866  - Joshua Swink and Rick Welykochy were the first to point out to me that the
16867    latest OpenSSL package now have moved the standard include path. It is now
16868    in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
16869    option for the configure script to use that as the primary path, and I
16870    leave the former path too to work with older packages of OpenSSL too.
16871
16872  Daniel (9 June 1999)
16873  - I finally understood the IRIX problem and now it seem to compile on it!
16874    I am gonna remove those #define strcasecmp() things once and for all now.
16875
16876  Daniel (4 June 1999)
16877  - I adjusted the FTP reply 227 parser to make the PASV command work better
16878    with more ftp servers. Appearantly the Roxen Challanger server replied
16879    something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
16880    and Mark Butler brought a solution for it.
16881
16882  Daniel (26 May 1999)
16883  - Rearranged. README is new, the old one is now README.curl and I added a
16884    README.libcurl with text I got from Ralph Beckmann.
16885
16886  - I also updated the INSTALL text.
16887
16888  Daniel (25 May 1999)
16889  - David Jonathan Lowsky correctly pointed out that curl didn't properly deal
16890    with form posting where the variable shouldn't have any content, as in curl
16891    -F "form=" www.site.com. It was now fixed.
16892
16893 Version 5.9 (May 22 1999)
16894
16895  Daniel (22 May 1999)
16896  - I've got a bug report from Aaron Scarisbrick in which he states he has some
16897    problems with -L under FreeBSD 3.0. I have previously got another bug
16898    report from Stefan Grether which points at an error with similar sympthoms
16899    when using win32. I made the allocation of the new url string a bit faster
16900    and different, don't know if it actually improves anything though...
16901
16902  Daniel (20 May 1999)
16903  - Made the cookie parser deal with CRLF newlines too.
16904
16905  Daniel (19 May 1999)
16906  - Download() didn't properly deal with failing return codes from the sread()
16907    function. Adam Coyne found the problem in the win32 version, and Troy Engel
16908    helped me out isolating it.
16909
16910  Daniel (16 May 1999)
16911  - Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
16912    work anymore! :-/ I fixed it now.
16913
16914  - After a suggestion by Joshua Swink I added -S / --show-error to force curl
16915    to display the error message in case of an error, even if -s/--silent was
16916    used.
16917
16918  Daniel (10 May 1999)
16919  - I moved the stuff concerning HTTP, DICT and TELNET it their own source
16920    files now. It is a beginning on my clean-up of the sources to make them
16921    layer all those protocols better to enable more to be added easier in the
16922    future!
16923
16924  - Leon Breedt sent me some files I've not put into the main curl
16925    archive. They're for creating the Debian package thingie. He also sent me a
16926    debian package that I've made available for download at the web page
16927
16928  Daniel (9 May 1999)
16929  - Made it compile on cygwin too.
16930
16931  Troy Engel (7 May 1999)
16932  - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
16933    again!
16934
16935  Daniel (6 May 1999)
16936  - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
16937    will be easier to discover systems that don't have that function and thus
16938    can't use -z successfully. Made the strftime() get used if WIN32 is defined
16939    too.
16940
16941 Version 5.8
16942
16943  Daniel (5 May 1999)
16944  - I've had it with this autoconf/automake mess. It seems to work allright
16945    for most people who don't have automake installed, but for those who have
16946    there are problems all over.
16947
16948    I've got like five different bug reports on this only the last
16949    week... Claudio Neves and Federico Bianchi and root <duggerj001 at
16950    hawaii.rr.com> are some of them reporting this.
16951
16952    Currently, I have no really good fix since I want to use automake myself to
16953    generate the Makefile.in files. I've found out that the @SHELL@-problems
16954    can often be fixed by manually invoking 'automake' in the archive root
16955    before you run ./configure... I've hacked my maketgz script now to fiddle
16956    a bit with this and my tests seem to work better than before at least!
16957
16958  Daniel (4 May 1999)
16959  - mkhelp.pl has been doing badly lately. I corrected a case problem in
16960    the regexes.
16961
16962  - I've now remade the -o option to not touch the file unless it needs to.
16963    I had to do this to make -z option really fine, since now you can make a
16964    curl fetch and use a local copy's time when downloading to that file, as
16965    in:
16966
16967         curl -z dump -o dump remote.site.com/file.html
16968
16969    This will only get the file if the remote one is newer than the local.
16970    I'm aware that this alters previous behaviour a little. Some scripts out
16971    there may depend on that the file is always touched...
16972
16973  - Corrected a bug in the SSLv2/v3 selection.
16974
16975  - Felix von Leitner requested that curl should be able to send
16976    "If-Modified-Since" headers, which indeed is a fair idea.  I implemented it
16977    right away! Try -z <expression> where expression is a full GNU date
16978    expression or a file name to get the date from!
16979
16980  Stephan Lagerholm (30 Apr 1999)
16981  - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
16982    isn't set and causes the make to fail.
16983
16984  Daniel (26 April 1999)
16985  - Am I silly or what? Irving Wolfe pointed out to me that the curl version
16986    number was not set properly. Hasn't been since 5.6. This was due to a bug
16987    in my maketgz script!
16988
16989  David Eriksson (25 Apr 1999)
16990  - Found a bug in cookies.c that made it crash at times.
16991
16992 Version 5.7.1
16993
16994  Doug Kaufman (23 Apr 1999)
16995  - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
16996    below and the other one a correction in include/stdcheaders.h
16997
16998  - Added a paragraph about compiling with the US-version of openssl to the
16999    INSTALL file.
17000
17001  Daniel
17002  - New mailing list address. Info updated on the web page as well as in the
17003    README file
17004
17005  Greg Onufer (20 Apr 1999)
17006  - hostip.c didn't compile properly on SunOS 5.5.1.
17007    It needs an #include <sys/types.h>
17008
17009 Version 5.7
17010
17011  Daniel (Apr 20 1999)
17012  - Decided to upload a non-beta version right now!
17013
17014  - Made curl support any-length HTTP headers. The destination buffer is now
17015    simply enlarged every time it turns out to be too small!
17016
17017  - Added the FAQ file to the archive. Still a bit smallish, but it is a
17018    start.
17019
17020  Eric Thelin (15 Apr 1999)
17021  - Made -D accept '-' instead of filename to write to stdout.
17022
17023 Version 5.6.3beta
17024
17025  Daniel (Apr 12 1999)
17026
17027  - Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
17028    in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
17029    try to get some decent win32-replacement there. Anyone?
17030
17031  - The old -3/--crlf option is now ONLY --crlf!
17032
17033  - I changed the "SSL fix" to a more lame one, but that doesn't remove as
17034    much functionality. Now I've enabled the lib to select what SSL version it
17035    should try first. Appearantly some older SSL-servers don't like when you
17036    talk v3 with them so you need to be able to force curl to talk v2 from the
17037    start. The fix dated April 6 and posted on the mailing list forced curl to
17038    use v2 at all times using a modern OpenSSL version, but we don't really
17039    want such a crippled solution.
17040
17041  - Marc Boucher sent me a patch that corrected a math error for the
17042    "Curr.Speed" progress meter.
17043
17044  - Eric Thelin sent me a patch that enables '-K -' to read a config file from
17045    stdin.
17046
17047  - I found out we didn't close the file properly before so I added it!
17048
17049  Daniel (Apr 9 1999)
17050  - Yu Xin pointed out a problem with ftp download resume.  It didn't work at
17051    all! ;-O
17052
17053  Daniel (Apr 6 1999)
17054  - Corrected the version string part generated for the SSL version.
17055
17056  - I found a way to make some other SSL page work with openssl 0.9.1+ that
17057    previously didn't (ssleay 0.8.0 works with it though!). Trying to get
17058    some real info from the OpenSSL guys to see how I should do to behave the
17059    best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
17060
17061 Version 5.6.2beta
17062
17063  Daniel (Apr 4 1999)
17064  - Finally have curl more cookie "aware". Now read carefully. This is how
17065    it works.
17066    To make curl read cookies from an already existing file, in plain header-
17067    format (like from the headers of a previous fetch) invoke curl with the
17068    -b flag like:
17069
17070         curl -b file http://site/foo.html
17071
17072    Curl will then use all cookies it finds matching. The old style that sets
17073    a single cookie with -b is still supported and is used if the string
17074    following -b includes a '=' letter, as in "-b name=daniel".
17075
17076    To make curl read the cookies sent in combination with a location: (which
17077    sites often do) point curl to read a non-existing file at first (i.e
17078    to start with no existing cookies), like:
17079
17080         curl -b nowhere http://site/setcookieandrelocate.html
17081
17082  - Added a paragraph in the TODO file about the SSL problems recently
17083    reported. Evidently, some kind of SSL-problem curl may need to address.
17084
17085  - Better "Location:" following.
17086
17087  Douglas E. Wegscheid (Tue, 30 Mar 1999)
17088  - A subsecond display patch.
17089
17090  Daniel (Mar 14 1999)
17091  - I've separated the version number of libcurl and curl now. To make
17092    things a little easier, I decided to start the curl numbering from
17093    5.6 and the former version number known as "curl" is now the one
17094    set for libcurl.
17095
17096  - Removed the 'enable-no-pass' from configure, I doubt anyone wanted
17097    that.
17098
17099  - Made lots of tiny adjustments to compile smoothly with cygwin under
17100    win32. It's a killer for porting this to win32, bye bye VC++! ;-)
17101    Compiles and builds out-of-the-box now. See the new wordings in
17102    INSTALL for details.
17103
17104  - Beginning experiments with downloading multiple document from a http
17105    server while remaining connected.
17106
17107 Version 5.6beta
17108
17109  Daniel (Mar 13 1999)
17110  - Since I've changed so much, I thought I'd just go ahead and implement the
17111    suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
17112    HTTP headers separately in the specified file.
17113
17114  - Added new text to INSTALL on what to do to build this on win32 now.
17115
17116  - Aaargh. I had to take a step back and prefix the shared #include files
17117    in the sources with "../include/" to please VC++...
17118
17119  Daniel (Mar 12 1999)
17120  - Split the url.c source into many tiny sources for better readability
17121    and smaller size.
17122
17123  Daniel (Mar 11 1999)
17124  - Started to change stuff for a move to make libcurl and a more separate
17125    curl application that uses the libcurl. Made the libcurl sources into
17126    the new lib directory while the curl application will remain in src as
17127    before. New makefiles, adjusted configure script and so.
17128
17129    libcurl.a built quickly and easily. I better make a better interface to
17130    the lib functions though.
17131
17132    The new root dir include/ is supposed to contain the public information
17133    about the new libcurl. It is a little ugly so far :-)
17134
17135
17136  Daniel (Mar 1 1999)
17137  - Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
17138    info that RFC 2109 specifies how to use them.  The link is now in the
17139    README and the RFC in the RESOURCES.
17140
17141  Daniel (Feb 23 1999)
17142  - Finally made configure accept --with-ssl to look for SSL libs and includes
17143    in the "standard" place /usr/local/ssl...
17144
17145  Daniel (Feb 22 1999)
17146  - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
17147    the most recent.
17148
17149  Henri Gomez (Fri Feb  5 1999)
17150  - Sent in an updated curl-ssl.spec. I still miss the script that builds an
17151    RPM automatically...
17152
17153 Version 5.5.1
17154
17155  Mark Butler (27 Jan 1999)
17156  - Corrected problems in Download().
17157
17158  Danitel Stenberg (25 Jan 1999)
17159  - Jeremie Petit pointed out a few flaws in the source that prevented it from
17160    compile warning free with the native compiler under Digital Unix v4.0d.
17161
17162 Version 5.5
17163
17164  Daniel Stenberg (15 Jan 1999)
17165  - Added Bjorns small text to the README about the DICT protocol.
17166
17167  Daniel Stenberg (11 Jan 1999)
17168  - <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
17169    ALL_PROXY environment variable". Turned out to be because of the static-
17170    buffer nature of the win32 environment variable calls!
17171
17172  Bjorn Reese (10 Jan 1999)
17173  - I have attached a simple addition for the DICT protocol (RFC 2229).
17174    It performs dictionary lookups. The output still needs to be better
17175    formatted.
17176
17177    To test it try (the exact format, and more examples are described in
17178    the RFC)
17179
17180         dict://dict.org/m:hello
17181         dict://dict.org/m:hello::soundex
17182
17183
17184  Vicente Garcia (10 Jan 1999)
17185  - Corrected the progress meter for files larger than 20MB.
17186
17187  Daniel Stenberg (7 Jan 1999)
17188  - Corrected the -t and -T help texts. They claimed to be FTP only.
17189
17190 Version 5.4
17191
17192  Daniel Stenberg
17193  (7 Jan 1999)
17194  - Irving Wolfe reported that curl -s didn't always supress the progress
17195    reporting. It was the form post that autoamtically always switched it on
17196    again. This is now corrected!
17197
17198  (4 Jan 1999)
17199  - Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
17200    you use -t or -T now on a http or https server, PUT will be used for file
17201    upload.
17202
17203    I removed the former use of -T with HTTP. I doubt anyone ever really used
17204    that.
17205
17206  (4 Jan 1999)
17207  - Erik Jacobsen found a width bug in the mprintf() function.  I corrected it
17208    now.
17209
17210  (4 Jan 1999)
17211  - As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
17212    should now accept path parts that are up to at least 4096 bytes.
17213
17214  - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
17215    I redid that now.
17216
17217 Version 5.3a (win32 only)
17218
17219  Troy Engel
17220  - Corrected a win32 bug in the environment variable part.
17221
17222 Version 5.3
17223
17224  Gilbert Ramirez Jr. (21 Dec 1998)
17225  - I have implemented the "quote" function of FTP clients. It allows you to
17226    send arbitrary commands to the remote FTP server. I chose the -Q/--quote
17227    command-line arguments.
17228
17229    You can have more than one quoted string, and curl will apply them in
17230    order.  This is what I use for my MVS upload:
17231
17232   curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
17233
17234    Curl will send the two quoted "site" commands in the proper order.
17235
17236  - Made it compile smoothly on AIX.
17237
17238  Gilbert Ramirez Jr. (18 Dec 1998)
17239  - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
17240
17241  Troy Engel (17 Dec 1998)
17242  - Brought a correction that fixes the win32 curl bug.
17243
17244  Daniel Stenberg
17245  - A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
17246    flag on certain systems. Actually, all systems should've!
17247
17248  - Added a few defines to make directories/file names get build nicer (with _
17249    instead of . and \ instead of / in win32).
17250
17251  - steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
17252    ftp server response line had a parenthesis on the line before the (size)
17253    info. I hope it works better now!
17254
17255 Version 5.2.1
17256
17257  Steven G. Johnson (Dec 14, 1998)
17258  - Brought a fix that corrected a crash in 5.2 due to bad treatment of the
17259    environment variables.
17260
17261 Version 5.2
17262
17263  Daniel Stenberg (Dec 14, 1998)
17264  - Rewrote the mkhelp script and now, the mkhelp.pl script generates the
17265    hugehelp.c file from the README *and* the man page file curl.1. By using
17266    both files, I no longer need to have double information in both the man
17267    page and the README as well. So, win32-users will only have the hugehelp.c
17268    file for all info, but then, they download the plain binary most times
17269    anyway.
17270
17271  - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
17272    if I don't explicitly typecast the argument to isdigit() or isspace() to
17273    int. So I did to compile warning free with that too.
17274
17275  - Added checks for 'long double' and 'long long' in the configure script. I
17276    need those for the mprintf.c source to compile well on non long long
17277    comforming systems!
17278
17279 Version 5.1 (not publicly released)
17280
17281  Daniel Stenberg (Dec 10, 1998)
17282  - I got a request for a pre-compiled NT Alpha version. Anyone?
17283
17284  - Added Lynx/CERN www lib proxy environment variable support. That means curl
17285    now reads and understands the following environment variables:
17286
17287         HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
17288
17289    They should be set for protocol-specific proxies. General proxy should be
17290    set with
17291
17292         ALL_PROXY
17293
17294    And a comma-separated list of host names that shouldn't go through any
17295    proxy is set in (only an asterisk, '*' matches all hosts).
17296
17297         NO_PROXY
17298
17299    The usage of the -x/--proxy flag overrides the environment variables.
17300
17301  - Proxy can now be specified with a procotol:// prefix.
17302
17303  - Wrote the curl.1 man page.
17304
17305  - Introduced a whole new dynamic buffer system for all sprintf()s. It is
17306    based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
17307    there aren't that many buffer overflow risks left now.
17308
17309  - Ah, I should mention I've compiled and built curl successfully under
17310    solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
17311
17312  Oren Tirosh (Dec 3, 1998)
17313  - Brought two .spec files, to use when creating (Linux) Redhat style RPM
17314    packages. They're named curl.spec and curl-ssl.spec.
17315
17316  Troy Engel
17317  - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
17318
17319 Version 5.0
17320
17321  Daniel Stenberg (Dec 1, 1998)
17322  - Not a single bug report in ages.
17323  - Corrected getpass.c and main.c to compile warning and error free with the
17324    Win32 VC++ crap.
17325
17326 Version 5.0 beta 24
17327
17328  Daniel Stenberg (Nov 20, 1998)
17329
17330  HOW TO BUILD A RELEASE ARCHIVE:
17331
17332  * Pre-requisite software:
17333    What              To build what             Reads data from
17334    ====              =============             ===============
17335    GNU automake      Makefile.in, aclocal.m4   configure.in
17336      GNU make(1)      - " -
17337      GNU gcc(1)       - " -
17338    GNU autoconf      configure                 configure.in
17339    GNU autoheader(2) config.h.in               configure.in, acconfig.h
17340
17341  * Make sure all files that should be part of the archive are put in FILES.
17342
17343  * Run './maketgz' and enter version number of the new to become archive.
17344
17345    maketgz does:
17346
17347    - Enters the newly created version number in url.h.
17348    - (If you don't have automake, this script will warn about that, but unless
17349      you have changed the Makefile.am files, that is nothing to care about.)
17350      If you have it, it'll run it.
17351    - If you have autoconf, the configure.in will be edited to get the newly
17352      created version number and autoconf will be run.
17353    - Creates a new directory named curl-<version>. (Actually, it uses the base
17354      name of the current directory up to the first '-'.)
17355    - Copies all files mentioned in FILES to the new directory. Saving
17356      permissions and directory structure.
17357    - Uses tar to create an archive of it all, named curl-<version>.tar.gz
17358    - gzips the archive
17359    - Removes the new directory and all its contents.
17360
17361  * When done, you have an archive stored in your directory named
17362    curl-<version>.tar.gz.
17363
17364    Done!
17365
17366    (1) They're required to make automake run properly.
17367    (2) It is distributed as a part of the GNU autoconf archive.
17368
17369  Daniel Stenberg (Nov 18, 1998)
17370  - I changed the TAG-system. If you ever used urlget() from this package in
17371    another product, you need to recompile with the new headers. I did this
17372    new stuff to better deal with different compilers and system with different
17373    variable sizes. I think it makes it a little more portable. This proves
17374    to compile warning free with the problematic IRIX compiler!
17375  - Win32 compiled with a silly error. Corrected now.
17376  - Brian Chaplin reported yet another problem in
17377    multiline FTP responses. I've tried to correct it. I mailed him a new
17378    version and I hope he gets back soon with positive feedback!
17379  - Improved the 'maketgz' to create a temporary directory tree which it makes
17380    an archive from instead of the previous renaming of the current one.
17381  - Mailing list opened (see README).
17382  - Made -v more verbose on the PASV section of ftp transfers. Now it tells
17383    host name and IP of the new host (and port number). I also added a section
17384    about PORT vs PASV in the README.
17385
17386 Version 5.0 beta 21
17387
17388  Angus Mackay (Nov 15, 1998)
17389  - Introduced automake stuff.
17390
17391  Daniel Stenberg (Nov 13, 1998)
17392  - Just made a successful GET of a document from an SSL-server using my own
17393    private certificate for authentication! The certificate has to be in PEM
17394    format. You do that the easiest way (although not *that* easy) by
17395    downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
17396    at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
17397    convert any modern Netscape or (even) MSIE certificate to PEM-format.  Use
17398    it with 'curl -E <certificate:password> https://site.com'.  If this isn't a
17399    cool feature, then I don't know what cool features look like! ;-)
17400  - Working slowly on telnet connections. #define TRY_TELNET to try it out.
17401    (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
17402    have problem to define how it should work. The prime purpose for this must
17403    be to get (8bit clean) files via telnet, and it really isn't that easy to
17404    get files this way. Still having problems with \n being converted to \r\n.
17405
17406  Angus Mackay (Nov 12, 1998)
17407  - Corrected another bug in the long parameter name parser.
17408  - Modified getpass.c (NOTE: see the special licensing in the top of that
17409    source file).
17410
17411  Daniel Stenberg (Nov 12, 1998)
17412  - We may have removed the silly warnings from url.c when compiled under IRIX.
17413    Thanks again to Bjorn Reese and Martin Staael.
17414  - Wrote formfind.pl which is a new perl script intended to help you find out
17415    how a FORM submission should be done. This needs a little more work to get
17416    really good.
17417
17418  Daniel Stenberg (Nov 11, 1998)
17419  - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
17420    Appearantly some proxies/sites add such at times (my test proxy did when I
17421    downloaded a gopher page with it)!
17422  - Moved the former -h to -M and made -h show the short help text instead. I
17423    had to enable a forced help text option. Now an even shorter help text will
17424    be presented when an unknown option and similar, is used.
17425  - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
17426    changes don't make other versions go nuts instead.
17427
17428  Daniel Stenberg (Nov 10, 1998)
17429  - Added a weird check in the configure script to check for the silly AIX
17430    warnings about my #define strcasecmp() stuff. I do that define to prevent
17431    me and other contributors to accidentaly use that function name instead
17432    of strequal()...
17433  - I bugfixed Angus's getpass.c very little.
17434  - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
17435    sufficient instead of --location as "loc" is a unique prefix. Also, anything
17436    after a '--' is treated as an URL. So if you do have a host with a weeeird
17437    name you can do 'curl -- -host.com'.
17438  - Another getopt-adjust; curl now accepts flags after the URL on the command
17439    line. 'curl www.foo.com -O' is perfectly valid.
17440  - Corrected the .curlrc parser so that strtok() is no longer used and I
17441    believe it works better. Even URLs can be specified in it now.
17442
17443  Angus Mackay (Nov 9, 1998)
17444  - Replaced getpass.c with a newly written one, not under GPL license
17445  - Changed OS to a #define in config.h instead of compiler flag
17446  - Makefile now uses -DHAVE_CONFIG_H
17447
17448  Daniel Stenberg (Nov 9, 1998)
17449  - Ok, I expanded the tgz-target to update the version string on each occation
17450    I build a release archive!
17451  - I reacted on Angus Mackay's initiative and remade the parameter parser to
17452    be more getopt compliant. Curl now supports "merged" flags as in
17453         curl -lsv ftp.site.com
17454    Do note that I had to move three short-names of the options. Parameters
17455    that needs an additional string such as -x must be stand-alone or the
17456    last in a merged sequence:
17457         curl -lsx my-proxy ftp.site.com
17458    is ok, but using the flags in a different order like '-lxs' would cause
17459    unexpected results (as the 's' option would be skipped).
17460  - I've changed the headers in all files that are subject to the MozPL
17461    license, as they are supposed to look like when conforming.
17462  - Made the configure script make the config.h. The former config.h is now
17463    setup.h.
17464  - The RESOURCES and TODO files have been added to the archive.
17465
17466  Angus Mackay (Nov 5, 1998)
17467  - Fixed getpass.c and various configure stuff
17468
17469  Daniel Stenberg (Nov 3, 1998)
17470  - Use -H/--header for custom HTTP-headers. Lets you pass on your own
17471    specified headers to the remote server. I wouldn't recommend trying to use
17472    a header with a defined usage according to standards. Use this flag once
17473    for every custom header you want to add.
17474  - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
17475  - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
17476    usage in there! Since the introduction of the .curlrc file, it is easier to
17477    write scripts that use curl since proxies and stuff should be in the
17478    .curlrc file anyway.
17479  - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
17480    which means it is gonna be possible to upload files etc through HTTP POST.
17481    Shiraz Kanga asked for the feature and my brother,
17482    Björn Stenberg helped me design the user
17483    interface for this beast.  This feature requires quite some docs,
17484    since it has turned out not only quite capable, but also complicated! :-)
17485  - A note here, since I've received mail about it. SSLeay versions prior to
17486    0.8 will *not* work with curl!
17487  - Wil Langford reported a bug that occurred since curl
17488    did not properly use CRLF when issuing ftp commands. I fixed it.
17489  - Rearranged the order config files are read. .curlrc is now *always* read
17490    first and before the command line flags. -K config files then act as
17491    additional config items.
17492  - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
17493  - You can now disable a proxy by using -x "". Useful if the .curlrc file
17494    specifies a proxy and you wanna fetch something without going through
17495    that.
17496  - I'm thinking of dropping the -p support. Its really not useful since ports
17497    could (and should?) be specified as :<port> appended on the host name
17498    instead, both in URLs and to proxy host names.
17499  - Martin Staael reports curl -L bugs under Windows NT
17500    (test with URL http://come.to/scsde). This bug is not present in this
17501    version anymore.
17502  - Added support for the weird FTP URL type= thing. You can download a file
17503    using ASCII transfer by appending ";type=A" to the right of it. Other
17504    available types are type=D for dir-list (NLST) and type=I for binary
17505    transfer. I can't say I've ever seen anyone use this kind of URL though!
17506    :-)
17507  - Troy Engel pointed out a bug in my getenv("HOME")
17508    usage for win32 systems. I introduce getenv.c to better cope with
17509    this. Mr Engel helps me with the details around that...
17510  - A little note to myself and others, I should make the win32-binary built
17511    with SSL support...
17512  - Ryan Nelson sent me comments about building curl
17513    with SSL under FreeBSD. See the Makefile for details. Using the configure
17514    script, it should work better and automatically now...
17515  - Cleaned up in the port number mess in the source. No longer stores and uses
17516    proxy port number separate from normal port number.
17517  - 'configure' script working. Confirmed compiles on:
17518     Host         SSL  Compiler
17519     SunOS 5.5    no   gcc
17520     SunOS 5.5.1  yes  gcc
17521     SunOS 5.6    no   cc  (with gcc, it has the "gcc include files" problem)
17522     SunOS 4.1.3  no   gcc (without ANSI C headers)
17523     SunOS 4.1.2  no   gcc (native compiler failed)
17524     Linux 2.0.18 no   gcc
17525     Linux 2.0.32 yes  gcc
17526     Linux 2.0.35 no   gcc (with glibc)
17527     IRIX 6.2     no   gcc (cc compiles generate a few warnings)
17528     IRIX 6.4     no   cc  (generated warnings though)
17529     Win32        no   Borland
17530     OSF4.0       no   ?
17531
17532  - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
17533    set.
17534  - When using a proxy, curl now guesses and uses the protocol part in cases
17535    like:
17536         curl -x proxy:80 www.site.com
17537    Proxies normally go nuts unless http:// is prepended to the host name, so
17538    if curl is used like this, it guesses protocol and appends the protocol
17539    string before passing it to the proxy. It already did this when used
17540    without proxy.
17541  - Better port usage with SSL through proxy now. If you specified a different
17542    https-port when accessing through a proxy, it didn't use that number
17543    correctly. I also rewrote the code that parses the stuff read from the
17544    proxy when you wanna connect through it with SSL.
17545  - Bjorn Reese helped me work around one of the compiler
17546    warnings on IRIX native cc compiles.
17547
17548 Version 4.10 (Oct 26, 1998)
17549  Daniel Stenberg
17550  - John A. Bristor suggested a config file switch,
17551    and since I've been having that idea kind of in the background for a long
17552    time I rewrote the parameter parsing function a little and now I introduce
17553    the -K/--config flag. I also made curl *always* (unless -K is used) try to
17554    load the .curlrc file for command line parameters. The syntax for the
17555    config file is the standard command line argument style. Details in 'curl
17556    -h' or the README.
17557  - I removed the -k option. Keep-alive isn't really anything anyone would
17558    want to enable with curl anyway.
17559  - Martin Staael helped me add the 'irix' target. Now
17560    "make irix" should build curl successfully on non-gcc SGI machines.
17561  - Single switches now toggle behaviours. I.e if you use -v -v the second
17562    will switch off the verbose mode the first one enabled. This is so that
17563    you can disable a default setting a .curlrc file enables etc.
17564
17565 Version 4.9 (Oct 7, 1998)
17566  Daniel Stenberg
17567  - Martin Staael suggested curl would support cookies.
17568    I added -b/--cookie to enable free-text cookie data to be passed. There's
17569    also a little blurb about general cookie stuff in the README/help text.
17570  - dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
17571    manually get curl to resume HTTP documents, I made the -c resume flag work
17572    for HTTP too (unless -r is used too, which would be very odd anyway).
17573  - Added checklinks.pl to the archive. It is a still experimental perl script
17574    that checks all links of a web page by using curl.
17575  - Rearranged the archive hierarchy a little. Build the executable in the
17576    src/ dir from now on!
17577  - Version 4.9 and hereafter, is no longer released under the GPL license.
17578    I have now updated the LEGAL file etc and now this is released using the
17579    Mozilla Public License to avoid the plague known as "the GPL virus". You
17580    must make the source available if you decide to change and/or redistribute
17581    curl, but if you decide to use curl within something else you do not need
17582    to offer the world the source to that too.
17583  - Curl did not like HTTP servers that sent no headers at all on a GET
17584    request.  It is a violation of RFC2068 but appearantly some servers do
17585    that anyway.  Thanks to Gordon Beaton for the report!
17586  - -L/--location was added after a suggestion from Martin Staael. This makes
17587    curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
17588    headers. If -i or -I is used with this flag, you will see headers from all
17589    sites the Location: points to. Do note that the first server can point to a
17590    second that points to a third etc. It seems the Location: parameter (said
17591    to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
17592    made curl ATTEMPT to do the best it can to deal with the reality.
17593  - Added getlinks.pl to the archive. getlinks.pl selectively downloads
17594    files that a web page links to.
17595
17596 Version 4.8.4
17597  Daniel Stenberg
17598  - As Julian Romero Nieto reported, curl reported wrong version number.
17599  - As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
17600    other versions for win32) didn't work with binary files since I'm too used
17601    to the Unix style fopen() where binary and text don't differ...
17602  - Ralph Beckmann brought me some changes that lets curl compile error and
17603    warning free with -Wall -pedantic with g++. I also took the opportunity to
17604    clean off some unused variables and similar.
17605  - Ralph Beckmann made me aware of a really odd bug now corrected. When curl
17606    read a set of headers from a HTTP server, divided into more than one read
17607    and the first read showed a full line *exactly* (i.e ending with a
17608    newline), curl did not behave well.
17609
17610 Version 4.8.3
17611  Daniel Stenberg
17612  - I was too quick to release 4.8.2 with too little testing. One of the
17613    changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
17614    upload files. I still think both problems corrected in 4.8.2 remain
17615    corrected.  Reported by Julian Romero Nieto.
17616
17617 Version 4.8.2
17618  Daniel Stenberg
17619  - Bernhard Iselborn reported two FTP protocol errors curl did. They're now
17620    corrected. Both appeared when getting files from a MS FTP server! :-)
17621
17622 Version 4.8.1
17623  Daniel Stenberg
17624  - Added a last update of the progress meter when the transfer is done. The
17625    final output on the screen didn't have to be the final size transfered
17626    which made it sometimes look odd.
17627  - Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
17628    had nothing but header. Appearantly Solaris deals with negative sizes in
17629    fwrite() calls a lot better than Linux does... =B-]
17630
17631 Version 4.8 (Aug 31, 1998)
17632  Daniel Stenberg
17633  - Continue FTP file transfer. -c is the switch. Note that you need to
17634    specify a file name if you wanna resume a download (you can't resume a
17635    download sent to stdout). Resuming upload may be limited by the server
17636    since curl is then using the non-RFC959 command SIZE to get the size of
17637    the target file before upload begins (to figure out which offset to
17638    use). Use -C to specify the offset yourself! -C is handy if you're doing
17639    the output to something else but a plain file or when you just want to get
17640    the end of a file.
17641  - recursiveftpget.pl now features a maximum recursive level argument.
17642
17643 Version 4.7
17644  Daniel Stenberg
17645  - Added support to abort a download if the speed is below a certain amount
17646    (speed-limit) bytes per second for a certain (speed-time) time.
17647  - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
17648    whole ftp directory tree. It is meant as an example of how curl can be
17649    used.  I agree it isn't the wisest thing to do to make a separate new
17650    connection for each file and directory for this.
17651
17652 Version 4.6
17653  Daniel Stenberg
17654  - Added a first attempt to optionally parse the .netrc file for login user
17655    and password. If used with http, it enables user authentication. -n is
17656    the new switch.
17657  - Removed the extra newlines on the default user-agent string.
17658  - Corrected the missing ftp upload error messages when it failed without the
17659    verbose flag set. Gary W. Swearingen found it.
17660  - Now using alarm() to enable second-precision timeout even on the name
17661    resolving/connecting phase. The timeout is although reset after that first
17662    sequence. (This should be corrected.) Gary W. Swearingen reported.
17663  - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
17664  - Added bug report email address in the README.
17665  - Added a "current speed" field to the progress meter. It shows the average
17666    speed the last 5 seconds. The other speed field shows the average speed of
17667    the entire transfer so far.
17668
17669 Version 4.5.1
17670  Linas Vepstas
17671  - SSL through proxy fix
17672  - Added -A to allow User-Agent: changes
17673
17674  Daniel Stenberg
17675  - Made the -A work when SSL-through-proxy.
17676
17677 Version 4.5
17678  Linas Vepstas
17679  - More SSL corrections
17680  - I've added a port to AIX.
17681  - running SSL through a proxy causes a chunk of code to be executred twice.
17682    one of those blocks needs to be deleted.
17683
17684  Daniel Stenberg
17685  - Made -i and -I work again
17686
17687 Version 4.4
17688  Linas Vepstas
17689  - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
17690  - SSL fixes
17691
17692 Version 4.3
17693  Daniel Stenberg
17694  - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
17695    support network interface names in win32. I couldn't figure out how!
17696
17697 Version 4.2
17698  Linas Vepstas / Sampo Kellomaki
17699  - Added SSL / SSLeay support (https://)
17700  - Added the -T usage for HTTP POST.
17701
17702  Daniel Stenberg
17703  - Bugfixed the SSL implementation.
17704  - Made -P a lot better to use other IP addresses. It now accepts a following
17705    parameter that can be either
17706         interface - i.e "eth0" to specify which interface's IP address you
17707                     want to use
17708         IP address - i.e "192.168.10.1" to specify exact IP number
17709         host name - i.e "my.host.domain" to specify machine
17710         "-"       - (any single-letter string) to make it pick the machine's
17711                     default
17712  - The Makefile is now ready to compile for solaris, sunos4 and linux right
17713    out of the box.
17714  - Better generated version string seen with 'curl -V'
17715
17716 Version 4.1
17717  Daniel Stenberg
17718  - The IP number returned by the ftp server as a reply to PASV does no longer
17719    have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
17720  - Binds better to available port when -P is used.
17721  - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
17722    for this is that exactly that site, ftp.funet.fi, does not allow LIST /
17723    while LIST ./ is fine. Any objections?
17724
17725 Version 4 (1998-03-20)
17726  Daniel Stenberg
17727  - I took another huge step and changed both version number and project name!
17728    The reason for the new name is that there are just one too many programs
17729    named urlget already and this program already can a lot more than merely
17730    getting URLs, and the reason for the version number is that I did add the
17731    pretty big change in -P and since I changed name I wanted to start with
17732    something fresh!
17733  - The --style flags are working better now.
17734  - Listing directories with FTP often reported that the file transfer was
17735    incomplete. Wrong assumptions were too common for directories, why no
17736    size will be attempted to get compared on them from now on.
17737  - Implemented the -P flag that let's the ftp control issue a PORT command
17738    instead of the standard PASV.
17739  - -a for appending FTP uploads works.
17740
17741 ***************************************************************************
17742
17743 Version 3.12 (14 March 1998)
17744  Daniel Stenberg
17745  - End-of-header tracking still lacked support for \r\n or just \n at the
17746    end of the last header line.
17747  Sergio Barresi
17748  - Added PROXY authentication.
17749  Rafael Sagula
17750  - Fixed some little bugs.
17751
17752 Version 3.11
17753  Daniel Stenberg
17754  - The header parsing was still not correct since the 3.2 modification...
17755
17756 Version 3.10
17757  Daniel Stenberg
17758  - 3.7 and 3.9 were simultaneously developed and merged into this version.
17759  - FTP upload did not work correctly since 3.2.
17760
17761 Version 3.9
17762  Rafael Sagula
17763  - Added the "-e <url> / --referer <url>" option where we can specify
17764    the referer page. Obviously, this is necessary only to fool the
17765    server, but...
17766
17767 Version 3.7
17768  Daniel Stenberg
17769  - Now checks the last error code sent from the ftp server after a file has
17770    been received or uploaded. Wasn't done previously.
17771  - When 'urlget <host>' is used without a 'protocol://' first in the host part,
17772    it now checks for host names starting with ftp or gopher and if it does,
17773    it uses that protocol by default instead of http.
17774
17775 Version 3.6
17776  Daniel Stenberg
17777  - Silly mistake made the POST bug. This has now also been tested to work with
17778    proxy.
17779
17780 Version 3.5
17781  Daniel Stenberg
17782  - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
17783    functional POST, I applied his changes into this version and made them work.
17784    (It seems POST requires the Content-Type and Content-Length headers.) It is
17785    now usable with the -d switch.
17786
17787 Version 3.3 - 3.4
17788  Passed to avoid confusions
17789
17790 Version 3.2
17791  Daniel Stenberg
17792  - Major rewrite of two crucial parts of this code: upload and download.
17793    They are both now using a select() switch, that allows much better
17794    progress meter and time control.
17795  - alarm() usage removed completely
17796  - FTP get can now list directory contents if the path ends with a slash '/'.
17797    Urlget on a ftp-path that doesn't end with a slash means urlget will
17798    attempt getting it as a file name.
17799  - FTP directory view supports -l for "list-only" which lists the file names
17800    only.
17801  - All operations support -m for max time usage in seconds allowed.
17802  - FTP upload now allows the size of the uploaded file to be provided, and
17803    thus it can better check it actually uploaded the whole file. It also
17804    makes the progress meter for uploads much better!
17805  - Made the parameter parsing fail in cases like 'urlget -r 900' which
17806    previously tried to connect to the host named '900'.
17807
17808 Version 3.1
17809  Kjell Ericson
17810  - Pointed out how to correct the 3 warnings in win32-compiles.
17811
17812  Daniel Stenberg
17813  - Removed all calls to exit().
17814  - Made the short help text get written to stdout instead of stderr.
17815  - Made this file instead of keeping these comments in the source.
17816  - Made two callback hooks, that enable external programs to use urlget()
17817    easier and to grab the output/offer the input easier.
17818  - It is evident that Win32-compiles are painful. I watched the output from
17819    the Borland C++ v5 and it was awful. Just ignore all those warnings.
17820
17821 Version 3.0
17822  Daniel Stenberg
17823  - Added FTP upload capabilities. The name urlget gets a bit silly now
17824    when we can put too... =)
17825  - Restructured the source quite a lot.
17826    Changed the urlget() interface. This way, we will survive changes much
17827    better. New features can come and old can be removed without us needing
17828    to change the interface. I've written a small explanation in urlget.h
17829    that explains it.
17830  - New flags include -t, -T, -O and -h. The -h text is generated by the new
17831    mkhelp script.
17832
17833 Version 2.9
17834  Remco van Hooff
17835  - Added a fix to make it compile smoothly on Amiga using the SAS/C
17836    compiler.
17837
17838  Daniel Stenberg
17839  - Believe it or not, but the STUPID Novell web server seems to require
17840    that the Host: keyword is used, so well I use it and I (re-introduce) the
17841    urlget User-Agent:. I still have to check that this Host: usage works with
17842    proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
17843
17844 Version 2.8
17845  Rafael Sagula
17846  - some little modifications
17847
17848 Version 2.7
17849  Daniel Stenberg
17850  - Removed the -l option and introduced the -f option instead. Now I'll
17851    rewrite the former -l kludge in an external script that'll use urlget to
17852    fetch multipart files like that.
17853  - '-f' is introduced, it means Fail without output in case of HTTP server
17854    errors (return code >=400).
17855  - Added support for -r, ranges. Specify which part of a document you
17856    want, and only that part is returned. Only with HTTP/1.1-servers.
17857  - Split up the source in 3 parts. Now all pure URL functions are in
17858    urlget.c and stuff that deals with the stand-alone program is in main.c.
17859  - I took a few minutes and wrote an embryo of a README file to explain
17860    a few things.
17861
17862 Version 2.6
17863  Daniel Stenberg
17864  - Made the -l (loop) thing use the new CONF_FAILONERROR which makes
17865    urlget() return error code if non-successful. It also won't output anything
17866    then. Now finally removed the HTTP 1.0 and error 404 dependencies.
17867  - Added -I which uses the HEAD request to get the header only from a
17868    http-server.
17869
17870 Version 2.5
17871  Rafael Sagula
17872  - Made the progress meter use HHH:MM:SS instead of only seconds.
17873
17874 Version 2.4
17875  Daniel Stenberg
17876  - Added progress meter. It appears when downloading > BUFFER SIZE and
17877    mute is not selected. I found out that when downloading large files from
17878    really really slow sites, it is desirable to know the status of the
17879    download. Do note that some downloads are done unawaring of the size, which
17880    makes the progress meter less thrilling ;) If the output is sent to a tty,
17881    the progress meter is shut off.
17882  - Increased buffer size used for reading.
17883  - Added length checks in the user+passwd parsing.
17884  - Made it grok user+passwd for HTTP fetches. The trick is to base64
17885    encode the user+passwd and send an extra header line. Read chapter 11.1 in
17886    RFC2068 for details. I added it to be used just like the ftp one.  To get a
17887    http document from a place that requires user and password, use an URL
17888    like:
17889
17890         http://user:passwd@www.site.to.leach/doc.html
17891
17892    I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
17893    USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
17894    not if used with proxy. To do the same as the above one, you can invoke:
17895
17896         urlget -u user:passwd http://www.site.to.leach/doc.html
17897
17898 Version 2.3
17899  Rafael Sagula
17900  - Added "-o" option (output file)
17901  - Added URG_HTTP_NOT_FOUND return code.
17902    (Daniel's note:)
17903    Perhaps we should detect all kinds of errors and instead of writing that
17904    custom string for the particular 404-error, use the error text we actually
17905    get from the server. See further details in RFC2068 (HTTP 1.1
17906    definition). The current way also relies on a HTTP/1.0 reply, which newer
17907    servers might not do.
17908  - Looping mode ("-l" option). It's easier to get various split files.
17909    (Daniel's note:)
17910    Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
17911    make urlget to attempt to fetch all files named file1.html, file2.html etc
17912    until no more files are found. This is only a modification of the
17913    STAND_ALONE part, nothing in the urlget() function was modfified for this.
17914  Daniel Stenberg
17915  - Changed the -h to be -i instead. -h should be preserved to help use.
17916  - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
17917    VC++ WIN32 define and therefore I added a little fix for that.
17918
17919 Version 2.2
17920  Johan Andersson
17921  - The urlget function didn't set the path to url when using proxy.
17922  - Fixed bug with IMC proxy. Now using (almost) complete GET command.
17923
17924  Daniel Stenberg
17925  - Made it compile on Solaris. Had to reorganize the includes a bit.
17926    (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
17927  - Made Johan's keepalive keyword optional with the -k flag (since it
17928    makes a lot of urlgets take a lot longer time).
17929  - Made a '-h' switch in case you want the HTTP-header in the output.
17930
17931 Version 2.1
17932  Daniel Stenberg and Kjell Ericson
17933  - Win32-compilable
17934  - No more global variables
17935  - Mute option (no output at all to stderr)
17936  - Full range of return codes from urlget(), which is now written to be a
17937    function for easy-to-use in [other] programs.
17938  - Define STAND_ALONE to compile the stand alone urlget program
17939  - Now compiles with gcc options -ansi -Wall -pedantic ;)
17940
17941 Version 2.0
17942  - Introducing ftp GET support. The FTP URL type is recognized and used.
17943  - Renamed the project to 'urlget'.
17944  - Supports the user+passwd in the FTP URL (otherwise it tries anonymous
17945    login with a weird email address as password).
17946
17947 Version 1.5
17948  Daniel Stenberg
17949  - The skip_header() crap messed it up big-time. By simply removing that
17950    one we can all of a sudden download anything ;)
17951  - No longer requires a trailing slash on the URLs.
17952  - If the given URL isn't prefixed with 'http://', HTTP is assumed and
17953    given a try!
17954  - 'void main()' is history.
17955
17956 Version 1.4
17957  Daniel Stenberg
17958  - The gopher source used the ppath variable instead of path which could
17959    lead to disaster.
17960
17961 Version 1.3
17962  Daniel Stenberg
17963  - Well, I added a lame text about the time it took to get the data. I also
17964    fought against Johan to prevent his -f option (to specify a file name
17965    that should be written instead of stdout)! =)
17966  - Made it write 'connection refused' for that particular connect()
17967    problem.
17968  - Renumbered the version. Let's not make silly 1.0.X versions, this is
17969    a plain 1.3 instead.
17970
17971 Version 1.2
17972  Johan Andersson
17973  - Discovered and fixed the problem with getting binary files. puts() is
17974    now replaced with fwrite(). (Daniel's note: this also fixed the buffer
17975    overwrite problem I found in the previous version.)
17976
17977  Rafael Sagula
17978  - Let "-p" before "-x".
17979
17980  Daniel Stenberg
17981  - Bugfixed the proxy usage. It should *NOT* use nor strip the port number
17982    from the URL but simply pass that information to the proxy. This also
17983    made the user/password fields possible to use in proxy [ftp-] URLs.
17984    (like in ftp://user:password@ftp.my.site:8021/README)
17985
17986  Johan Andersson
17987  - Implemented HTTP proxy support.
17988  - Receive byte counter added.
17989
17990  Bjorn Reese
17991  - Implemented URLs (and skipped the old syntax).
17992  - Output is written to stdout, so to achieve the above example, do:
17993    httpget http://143.54.10.6/info_logo.gif > test.gif
17994
17995 Version 1.1
17996  Daniel Stenberg
17997  - Adjusted it slightly to accept named hosts on the command line. We
17998    wouldn't wanna use IP numbers for the rest of our lifes, would we?
17999
18000 Version 1.0
18001   Rafael Sagula
18002   - Wrote the initial httpget, which started all this!