Home | History | Annotate | Download | only in curl
      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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://curl.haxx.se/bug/view.cgi?id=2963679)
    344 
    345 - Akos Pasztory filed debian bug report #572276
    346   https://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 https://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   (https://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   https://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   https://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   https://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   https://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   https://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   (https://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   (https://curl.haxx.se/bug/view.cgi?id=2951319)
    505 
    506 - Tom Donovan fixed the CURL_FORMAT_* defines when building with cmake.
    507 
    508   (https://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     https://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 Bjrn 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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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 (https://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   (https://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 (https://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   (https://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   (https://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   (https://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   (https://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. https://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   (https://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   (https://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   (https://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   (https://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   https://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   (https://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 (https://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   https://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   (https://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   (https://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   (https://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 (https://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   (https://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. https://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 (https://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 (https://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 (https://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 (https://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 (https://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 (https://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   (https://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   (https://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   (https://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   (https://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 (https://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 https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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 (https://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   (https://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 (https://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 (https://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 (https://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   (https://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   (https://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   (https://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   (https://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   (https://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="". https://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: https://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" (https://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. https://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   https://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   https://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.  https://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   (https://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   (https://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" (https://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" (https://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" (https://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   (https://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   https://curl.haxx.se/mail/lib-2008-05/0342.html
   3431 
   3432 Daniel Stenberg (26 May 2008)
   3433 - Bug report #1973352 (https://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   (https://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" (https://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   https://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" (https://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
   3538   identical report to what Denis Golovan reported in
   3539   https://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   (https://curl.haxx.se/bug/view.cgi?id=1701360) and this recent problem was
   3548   bug #1944825 (https://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 https://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   (https://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   (https://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 (https://curl.haxx.se/mail/lib-2008-02/0267.html ,
   3724   https://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   https://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   (https://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 => https://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 (https://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   (https://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 - Gnter 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: https://msdn.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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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 - (https://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   (https://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   (https://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   (https://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.  https://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 (https://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 (https://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 (https://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 (https://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 (https://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 (https://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 - Gnter 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 (https://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   (https://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 (https://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 (https://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 (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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 https://curl.haxx.se/mail/lib-2007-06/0161.html and
   4964   https://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 Bruchhuser 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   (https://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   (https://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   (https://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   https://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   (https://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   (https://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   (https://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 (https://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 (https://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 (https://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 Rundstrm 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   (https://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   (https://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   (https://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   (https://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 (a] 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. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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   (https://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 (https://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 (https://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   (https://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 (https://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   https://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   https://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: <https://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 Stben 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   (https://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   (https://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 (https://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 (https://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   (https://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 (https://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   (https://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 Hrnhammar 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 (https://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: https://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. https://curl.haxx.se/bug/view.cgi?id=1356715
   6855 
   6856 - Jan Kunder's debian bug report
   6857   https://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   https://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: https://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! (https://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   (https://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   (https://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 (https://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 (https://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.  https://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   https://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   https://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 https://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 (https://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   https://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   https://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   https://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 Franois' 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. https://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   (https://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   (https://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   (https://curl.haxx.se/bug/view.cgi?id=1216500).  Comment in
   7256   https://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   https://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: https://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. https://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   (https://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   (https://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   https://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. Andrs Garca 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   https://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   https://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 Daz Garca'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   https://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   https://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 - Andrs Garca 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 - Gnter 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   https://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 - Gnter 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 - Gnter 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 - Andrs Garca found out why the windows tests failed on file:// "uploads".
   8672 
   8673 Daniel (2 July 2004)
   8674 - Andrs Garca 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 - Gnter 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 - Gnter 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 - Gnter 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 - Andrs Garca 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 - Andrs Garca 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 - Andrs Garca 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 - Andrs Garca 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. Gnter 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 - Gnter 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 Andrs
   9526   Garca'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 - Andrs Garca 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     https://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 - Andrs Garca'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 - Andrs Garca 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 - Andrs Garca 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 - Andrs Garca 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 (https://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   https://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 Sbastien 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 - Andrs Garca 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 - Jrg 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 - Jrg Mller-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 - Franois 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 - Andrs Garca 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: https://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 - Gtz 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   https://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 Hervs 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 - Andrs Garca 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 - Andrs Garca 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 https://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 - Jrn 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 - Jrn 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 - Andrs Garca 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 - Jrn 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 Gtz 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 https://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   https://sourceforge.net/p/curl/bugs/178/
   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 Andrs Garca 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 - Andrs Garca 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 - Andrs Garca 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 - Andrs Garca 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   [https://sourceforge.net/p/curl/bugs/149/]
   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         https://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 Gtz 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 - Bjrn 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 - Gtz 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 - Andrs Garca 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 - Andrs Garca 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   https://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 - Andrs Garca 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 - Jrn 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 - Andrs Garca'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 - Bjrn 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 Dvila 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 - Jrn 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 - Andrs Garca 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. Jrn 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 - Andrs Garca 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 Andrs Garca 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 - Bjrn Stenberg provided similar fixes as Jrn 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 - Jrn 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 Jrn 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 - Bjrn 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 - Jrn 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 - Bjrn 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 - Bjrn 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 - Jrg 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 - Jrn 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 Jrn 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 - Jrn 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 Khntopp <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 - Bjrn 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 - Bjrn 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 Bjrn 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 - Jrn 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 - Jrn 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 - Jrn Hartroth, Chris <cbayliss at csc.come> and Ulf
   16214   Mller 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 Jrn 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 - Jrn 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 Jrn'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  - Jrn Hartroth brought a fix that once again
   16351    made it possible to select progress bar.
   16352 
   16353  - Jrn also fixed a few include problems.
   16354 
   16355 Version 6.4
   16356 
   16357 Daniel (17 January 2000):
   16358  - Based on suggestions from Bjrn 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.
   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 Jrn'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  Jrn 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  - Jrn 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  Jrn 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  Jrn 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 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 (a] 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    Bjrn 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!
   18003