1                                  _   _ ____  _
2                              ___| | | |  _ \| |
3                             / __| | | | |_) | |
4                            | (__| |_| |  _ <| |___
5                             \___|\___/|_| \_\_____|
6
7                                 Old Changelog
8
9Changes done to curl and libcurl from 1997 to 2010, edited manually. The most
10recent changes are always generated into the CHANGES file straight from git.
11
12Kamil Dudka (17 June 2010)
13- Improve test575 in order to not fail with threaded DNS resolver.
14
15Version 7.21.0 (16 June 2010)
16
17Daniel 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
22Daniel Stenberg (5 June 2010)
23- Frank Meier added CURLINFO_PRIMARY_PORT, CURLINFO_LOCAL_IP and
24  CURLINFO_LOCAL_PORT to curl_easy_getinfo().
25
26Yang 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
34Daniel Stenberg (2 June 2010)
35- Jason McDonald posted bug report #3006786 when he found that the SFTP code
36  didn't timeout properly in several places in the code even if a timeout was
37  set properly.
38
39  Based on his suggested patch, I wrote a different implementation that I
40  think addressed the issue better and also uses the connect timeout for the
41  initial part of the SSH/SFTP done during the "protocol connect" phase.
42
43  (http://curl.haxx.se/bug/view.cgi?id=3006786)
44
45Yang 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
51Daniel 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
71Kamil 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
77Daniel 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
89Daniel Stenberg (21 May 2010)
90- Eric Mertens posted bug #3003705: when we made TFTP use the correct timeout
91  option when sent to the server (fixed May 18th 2010) it became obvious that
92  libcurl used invalid timeout values (300 by default while the RFC allows
93  nothing above 255). While of course it is obvious that as TFTP has worked
94  thus far without being able to set timeout at all, just removing the setting
95  wouldn't make any difference in behavior. I decided to still keep it (but
96  fix the problem) as it now actually allows for easier (future) customization
97  of the timeout.
98
99  (http://curl.haxx.se/bug/view.cgi?id=3003705)
100
101- Douglas Kilpatrick filed bug report #3004787 and pointed out that the TFTP
102  code didn't handle block id wraps correctly. His suggested fix inspired the
103  fix I committed.
104
105  (http://curl.haxx.se/bug/view.cgi?id=3004787)
106
107Daniel Stenberg (20 May 2010)
108- Tanguy Fautre brought a fix to allow curl to build with Microsoft VC10.
109
110Daniel Stenberg (18 May 2010)
111- Eric Mertens posted bug report #3003005 pointing out that the libcurl TFTP
112  code was not sending the timeout option properly to the server, and
113  suggested a fix.
114
115  (http://curl.haxx.se/bug/view.cgi?id=3003005)
116
117Kamil 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
121Daniel Stenberg (14 May 2010)
122- John-Mark Bell filed bug #3000052 that identified a problem (with an
123  associated patch) with the OpenSSL handshake state machine when the multi
124  interface is used:
125
126  Performing an https request using a curl multi handle and using select or
127  epoll to wait for events results in a hang. It appears that the cause is the
128  fix for bug #2958179, which makes ossl_connect_common unconditionally return
129  from the step 2 loop when fetching from a multi handle.
130
131  When ossl_connect_step2 has completed, it updates connssl->connecting_state
132  to ssl_connect_3. ossl_connect_common will then return to the caller, as a
133  multi handle is in use. Eventually, the client code will call
134  curl_multi_fdset to obtain an updated fdset to select or epoll on. For https
135  requests, curl_multi_fdset will cause https_getsock to be called.
136  https_getsock will only return a socket handle if the connecting_state is
137  ssl_connect_2_reading or ssl_connect_2_writing.  Therefore, the client will
138  never obtain a valid fdset, and thus not drive the multi handle, resulting
139  in a hang.
140
141  (http://curl.haxx.se/bug/view.cgi?id=3000052)
142
143- Sebastian V reported bug #3000056 identifying a problem with redirect
144  following. It showed that when curl followed redirects it didn't properly
145  ignore the response body of the 30X response if that response was using
146  compressed Content-Encoding!
147
148  (http://curl.haxx.se/bug/view.cgi?id=3000056)
149
150Daniel 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
166Kamil 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
170Daniel 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
195Daniel 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
199Daniel 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
214Daniel 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
219Daniel 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
227Daniel 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
231Kamil 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
238Daniel 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
242Yang 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
247Daniel 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
251Daniel 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
267Daniel Stenberg (15 Apr 2010)
268- Rainer Canavan filed bug report #2987196 that identified libcurl doing
269  unnecesary reverse name lookups in many cases when built to use IPv4 and
270  getaddrinfo(). The logic for IPv6 is now used for IPv4 too.
271
272  (http://curl.haxx.se/bug/view.cgi?id=2963679)
273
274Version 7.20.1 (14 April 2010)
275
276Daniel 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
281Kamil 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
289Daniel 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
295Daniel 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
304Daniel 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
310Daniel 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
315Daniel 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
337Daniel Stenberg (23 Mar 2010)
338- Kenny To filed the bug report #2963679 with patch to fix a problem he
339  experienced with doing multi interface HTTP POST over a proxy using
340  PROXYTUNNEL. He found a case where it would connect fine but bits.tcpconnect
341  was not set correct so libcurl didn't work properly.
342
343  (http://curl.haxx.se/bug/view.cgi?id=2963679)
344
345- Akos Pasztory filed debian bug report #572276
346  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572276 mentioning a problem
347  with a resource that returns chunked-encoded _and_ with a Content-Length
348  and libcurl failed to properly ignore the latter information.
349
350- Hauke Duden provided an example program that made the multi interface crash.
351  His example simply used the multi interface and did first one FTP transfer
352  and after completion it used a second easy handle and did another FTP
353  transfer on the same FTP server.
354
355  This triggered a bug in the "delayed easy handle kill" system that curl
356  uses: when an FTP connection is left alive it must keep an easy handle
357  around internally - only for the purpose of having an easy handle when it
358  later disconnects it. The code assumed that when the easy handle was removed
359  and an internal reference was made, that version could be killed later on
360  when a new easy handle came using the same connection. This was wrong as
361  Hauke's example showed that the removed handle wasn't killed for real until
362  later. This caused a double close attempt => segfault.
363
364Daniel 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
377Kamil Dudka (22 Mar 2010)
378- Douglas Steinwand contributed a patch fixing insufficient initialization in
379  Curl_clone_ssl_config()
380
381Daniel Stenberg (21 Mar 2010)
382- Ben Greear improved TFTP: the error code returning and the treatment
383  of TSIZE == 0 when uploading.
384
385- We've switched from CVS to git. See http://curl.haxx.se/source.html
386
387Kamil Dudka (19 Mar 2010)
388- Improved Curl_read() to not ignore the error returned from Curl_ssl_recv().
389
390Daniel Stenberg (15 Mar 2010)
391- Constantine Sapuntzakis brought a patch:
392
393  The problem mentioned on Dec 10 2009
394  (http://curl.haxx.se/bug/view.cgi?id=2905220) was only partially fixed.
395  Partially because an easy handle can be associated with many connections in
396  the cache (e.g. if there is a redirect during the lifetime of the easy
397  handle).  The previous patch only cleaned up the first one. The new fix now
398  removes the easy handle from all connections, not just the first one.
399
400Daniel 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
404Daniel Stenberg (5 Mar 2010)
405- Daniel Johnson provided fixes for building curl with the clang compiler.
406
407Yang 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
412Daniel Stenberg (2 Mar 2010)
413- [Daniel Johnson] I've been trying to build libcurl with clang on Darwin and
414  ran into some issues with the GSSAPI tests in configure.ac. The tests first
415  try to determine the include dirs and libs and set CPPFLAGS and LIBS
416  accordingly. It then checks for the headers and finally sets LIBS a second
417  time, causing the libs to be included twice. The first setting of LIBS seems
418  redundant and should be left out, since the first part is otherwise just
419  about finding headers.
420
421  My second issue is that 'krb5-config --libs gssapi' on Darwin is less than
422  useless and returns junk that, while it happens to work with gcc, causes
423  clang to choke. For example, --libs returns $CFLAGS along with the libs,
424  which is really retarded. Simply setting 'LIBS="$LIBS -lgssapi_krb5
425  -lresolv"' on Darwin is sufficient.
426
427- Based on patch provided by Jacob Moshenko, the transfer logic now properly
428  makes sure that when using sub-second timeouts, there's no final bad 1000ms
429  wait. Previously, a sub-second timeout would often make the elapsed time end
430  up the time rounded up to the nearest second (e.g. 1s for 200ms timeout)
431
432- Andrei Benea filed bug report #2956698 and pointed out that the
433  CURLOPT_CERTINFO feature leaked memory due to a missing OpenSSL function
434  call. He provided the patch to fix it too.
435
436  http://curl.haxx.se/bug/view.cgi?id=2956698
437
438- Markus Duft pointed out in bug #2961796 that even though Interix has a
439  poll() function it doesn't quite work the way we want it so we must disable
440  it, and he also provided a patch for it.
441
442  http://curl.haxx.se/bug/view.cgi?id=2961796
443
444- Made the pingpong timeout code properly deal with the response timeout AND
445  the global timeout if set. Also, as was reported in the bug report #2956437
446  by Ryan Chan, the time stamp to use as basis for the per command timeout was
447  not set properly in the DONE phase for FTP (and not for SMTP) so I fixed
448  that just now. This was a regression compared to 7.19.7 due to the
449  conversion of FTP code over to the generic pingpong concepts.
450
451  http://curl.haxx.se/bug/view.cgi?id=2956437
452
453Daniel Stenberg (1 Mar 2010)
454- Ben Greear provided an update for TFTP that fixes upload.
455
456- Wesley Miaw reported bug #2958179 which identified a case of looping during
457  OpenSSL based SSL handshaking even though the multi interface was used and
458  there was no good reason for it.
459
460  http://curl.haxx.se/bug/view.cgi?id=2958179
461
462Daniel Stenberg (26 Feb 2010)
463- Pat Ray in bug #2958474 pointed out an off-by-one case when receiving a
464  chunked-encoding trailer.
465
466  http://curl.haxx.se/bug/view.cgi?id=2958474
467
468Daniel Fandrich (25 Feb 2010)
469- Fixed a couple of out of memory leaks and a segfault in the SMTP & IMAP code.
470
471Yang Tse (25 Feb 2010)
472- I fixed bug report #2958074 indicating
473  (http://curl.haxx.se/bug/view.cgi?id=2958074) that curl on Windows with
474  option --trace-time did not use local time when timestamping trace lines.
475  This could also happen on other systems depending on time souurce.
476
477Patrick 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
484Daniel 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
497Yang 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
501Daniel Stenberg (13 Feb 2010)
502- Martin Hager reported and fixed a problem with a missing quote in libcurl.m4
503
504  (http://curl.haxx.se/bug/view.cgi?id=2951319)
505
506- Tom Donovan fixed the CURL_FORMAT_* defines when building with cmake.
507
508  (http://curl.haxx.se/bug/view.cgi?id=2951269)
509
510Daniel 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
519Yang 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
523Version 7.20.0 (9 February 2010)
524
525Daniel Stenberg (9 Feb 2010)
526- When downloading compressed content over HTTP and the app asked libcurl to
527  automatically uncompress it with the CURLOPT_ENCODING option, libcurl could
528  wrongly provide the callback with more data than the maximum documented
529  amount. An application could thus get tricked into badness if the maximum
530  limit was trusted to be enforced by libcurl itself (as it is documented).
531
532  This is further detailed and explained in the libcurl security advisory
533  20100209 at
534
535    http://curl.haxx.se/docs/adv_20100209.html
536
537Daniel 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
541Yang 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
546Daniel 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
603Yang 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
618Daniel 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
623Bj�rn Stenberg (23 Jan 2010)
624- Added a new flag: -J/--remote-header-name. This option tells the
625  -O/--remote-name option to use the server-specified Content-Disposition
626  filename instead of extracting a filename from the URL.
627
628Daniel 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
633Daniel 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
646Daniel 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
653Kamil 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
659Daniel 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
666Daniel 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
676Daniel Stenberg (9 Jan 2010)
677- Johan van Selst found and fixed a OpenSSL session ref count leak:
678
679  ossl_connect_step3() increments an SSL session handle reference counter on
680  each call. When sessions are re-used this reference counter may be
681  incremented many times, but it will be decremented only once when done (by
682  Curl_ossl_session_free()); and the internal OpenSSL data will not be freed
683  if this reference count remains positive. When a session is re-used the
684  reference counter should be corrected by explicitly calling
685  SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid
686  introducing a memory leak.
687
688  (http://curl.haxx.se/bug/view.cgi?id=2926284)
689
690Daniel 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
694Claes 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
698Kamil Dudka (3 Jan 2010)
699- Julien Chaffraix eliminated a duplicated initialization in singlesocket().
700
701Daniel 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
708Daniel 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
722Yang Tse (30 Dec 2009)
723- Steven M. Schweda improved VMS build system, and Craig A. Berry helped
724  with the patch and testing.
725
726Daniel Stenberg (26 Dec 2009)
727- Renato Botelho and Peter Pentchev brought a patch that makes the libcurl
728  headers work correctly even on FreeBSD systems before v8.
729
730  (http://curl.haxx.se/bug/view.cgi?id=2916915)
731
732Daniel 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
750Daniel Stenberg (15 Dec 2009)
751- Jon Nelson found a regression that turned out to be a flaw in how libcurl
752  detects and uses proxies based on the environment variables. If the proxy
753  was given as an explicit option it worked, but due to the setup order
754  mistake proxies would not be used fine for a few protocols when picked up
755  from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added
756  test case 1106 that verifies this functionality.
757
758  (http://curl.haxx.se/bug/view.cgi?id=2913886)
759
760Daniel 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
770Daniel Stenberg (10 Dec 2009)
771- Siegfried Gyuricsko found out that the curl manual said --retry would retry
772  on FTP errors in the transient 5xx range. Transient FTP errors are in the
773  4xx range. The code itself only tried on 5xx errors that occured _at login_.
774  Now the retry code retries on all FTP transfer failures that ended with a
775  4xx response.
776
777  (http://curl.haxx.se/bug/view.cgi?id=2911279)
778
779- Constantine Sapuntzakis figured out a case which would lead to libcurl
780  accessing alredy freed memory and thus crash when using HTTPS (with
781  OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
782  of cleaning things up. I fixed it.
783
784  (http://curl.haxx.se/bug/view.cgi?id=2905220)
785
786Daniel 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
791Daniel 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
797Yang 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
801Daniel 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
809Daniel 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
815Daniel 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
822Yang 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
826Yang 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
834Daniel 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
844Yang 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
848Daniel Stenberg (17 Nov 2009)
849- Constantine Sapuntzakis provided another fix for the DNS cache that could
850  end up with entries that wouldn't time-out:
851
852  1. Set up a first web server that redirects (307) to a http://server:port
853     that's down
854  2. Have curl connect to the first web server using curl multi
855
856  After the curl_easy_cleanup call, there will be curl dns entries hanging
857  around with in_use != 0.
858
859  (http://curl.haxx.se/bug/view.cgi?id=2891591)
860
861- Marc Kleine-Budde fixed: curl saved the LDFLAGS set during configure into
862  its pkg-config file.  So -Wl stuff ended up in the .pc file, which is really
863  bad, and breaks if there are multiple -Wl in our LDFLAGS (which are in
864  PTXdist). bug #2893592 (http://curl.haxx.se/bug/view.cgi?id=2893592)
865
866Kamil 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
871Yang 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
876Claes 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
880Daniel 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
892Yang 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
898Kamil 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
911Yang 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
915Yang 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
920Daniel Stenberg (11 Nov 2009)
921- Constantine Sapuntzakis posted bug #2891595
922  (http://curl.haxx.se/bug/view.cgi?id=2891595) which identified how an entry
923  in the DNS cache would linger too long if the request that added it was in
924  use that long. He also provided the patch that now makes libcurl capable of
925  still doing a request while the DNS hash entry may get timed out.
926
927- Christian Schmitz noticed that the progress meter/callback was not properly
928  used during the FTP connection phase (after the actual TCP connect), while
929  it of course should be. I also made the speed check get called correctly so
930  that really slow servers will trigger that properly too.
931
932Kamil Dudka (5 Nov 2009)
933- Dropped misleading timeouts in libcurl-NSS and made sure the SSL socket works
934  in non-blocking mode.
935
936Yang 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
941Daniel 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
948Version 7.19.7 (4 November 2009)
949
950Daniel 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
955Daniel 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
960Daniel 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
972Daniel 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
979Daniel Stenberg (21 Oct 2009)
980- Attempt to use pkg-config for finding out libssh2 installation details
981  during configure.
982
983- A patch in bug report #2883177 (http://curl.haxx.se/bug/view.cgi?id=2883177)
984  by Johan van Selst introduced the --crlfile option to curl, which makes curl
985  tell libcurl about a file with CRL (certificate revocation list) data to
986  read.
987
988Daniel Stenberg (18 Oct 2009)
989- Ray Dassen provided a patch in Debian's bug tracker (bug number #551461)
990  that now makes curl_getdate(3) actually handles RFC 822 formatted dates that
991  use the "single letter military timezones".
992  http://www.rfc-ref.org/RFC-TEXTS/822/chapter5.html has the details.
993
994- Fixed memory leak in the SCP/SFTP code as it never freed the knownhosts
995  data!
996
997- John Dennis filed bug report #2873666
998  (http://curl.haxx.se/bug/view.cgi?id=2873666) which identified a problem
999  which made libcurl loop infinitely when given incorrect credentials when
1000  using HTTP GSS negotiate authentication. He also provided a small and simple
1001  patch for it.
1002
1003- Kevin Baughman found a double close() problem with libcurl-NSS, as when
1004  libcurl called NSS to close the SSL "session" it also closed the actual
1005  socket.
1006
1007Yang Tse (17 Oct 2009)
1008- Bug report #2866724 indicated
1009  (http://curl.haxx.se/bug/view.cgi?id=2866724) that curl on Windows failed
1010  when writing files whose file names originally contained characters which
1011  are not valid for file names on Windows. Dan Fandrich provided an initial
1012  patch and another revised one to fix this issue.
1013
1014Daniel Stenberg (1 Oct 2009)
1015- Tom Mueller correctly reported in bug report #2870221
1016  (http://curl.haxx.se/bug/view.cgi?id=2870221) that libcurl returned an
1017  incorrect return code from the internal trynextip() function which caused
1018  him grief. This is a regression that was introduced in 7.19.1 and I find it
1019  strange it hasn't hit us harder, but I won't persue into figuring out
1020  exactly why.
1021
1022- Constantine Sapuntzakis: The current implementation will always set
1023  SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger.  The
1024  patch doesn't do a setsockopt if SO_SNDBUF is already greater than
1025  CURL_WRITE_SIZE. This should help folks who have set up their computer with
1026  large send buffers.
1027
1028Daniel 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
1038Daniel 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
1044Kamil 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
1050Daniel Stenberg (25 Sep 2009)
1051- Chris Mumford filed bug report #2861587
1052  (http://curl.haxx.se/bug/view.cgi?id=2861587) identifying that libcurl used
1053  the OpenSSL function X509_load_crl_file() wrongly and failed if it would
1054  load a CRL file with more than one certificate within. This is now fixed.
1055
1056Daniel 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
1062Daniel 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
1069Yang 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
1081Guenter 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
1085Daniel 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
1091Daniel Stenberg (2 Sep 2009)
1092- Daniel Johnson found a flaw in the code converting sftp-errors to libcurl
1093  errors.
1094
1095Daniel 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
1110Daniel 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
1117Kamil 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
1122Patrick 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
1129Daniel Stenberg (24 Aug 2009)
1130- Marc de Bruin pointed out that configure --with-gnutls=PATH didn't work
1131  properly and provided a fix. http://curl.haxx.se/bug/view.cgi?id=2843008
1132
1133- Eric Wong introduced support for the new option -T. (dot) that makes curl
1134  read stdin in a non-blocking fashion. This also brings back -T- (minus) to
1135  the previous blocking behavior since it could break stuff for people at
1136  times.
1137
1138Michal 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
1143Daniel 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
1155Kamil 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
1160Daniel 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
1168Version 7.19.6 (12 August 2009)
1169
1170Daniel 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
1176Daniel Stenberg (11 Aug 2009)
1177- Peter Sylvester made the HTTPS test server use specific certificates for
1178  each test, so that the test suite can now be used to actually test the
1179  verification of cert names etc. This made an error show up in the OpenSSL-
1180  specific code where it would attempt to match the CN field even if a
1181  subjectAltName exists that doesn't match. This is now fixed and verified
1182  in test 311.
1183
1184- Benbuck Nason posted the bug report #2835196
1185  (http://curl.haxx.se/bug/view.cgi?id=2835196), fixing a few compiler
1186  warnings when mixing ints and bools.
1187
1188Daniel Fandrich (10 Aug 2009)
1189- Fixed a memory leak in the FTP code and an off-by-one heap buffer overflow.
1190
1191Daniel 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
1195Daniel 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
1203Daniel Stenberg (1 Aug 2009)
1204- Scott Cantor posted the bug report #2829955
1205  (http://curl.haxx.se/bug/view.cgi?id=2829955) mentioning the recent SSL cert
1206  verification flaw found and exploited by Moxie Marlinspike. The presentation
1207  he did at Black Hat is available here:
1208  https://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html#Marlinspike
1209
1210  Apparently at least one CA allowed a subjectAltName or CN that contain a
1211  zero byte, and thus clients that assumed they would never have zero bytes
1212  were exploited to OK a certificate that didn't actually match the site. Like
1213  if the name in the cert was "example.com\0theatualsite.com", libcurl would
1214  happily verify that cert for example.com.
1215
1216  libcurl now better uses the length of the extracted name, not using the zero
1217  termination for getting the string length.
1218
1219  This fixing only made and needed in OpenSSL interfacing code.
1220
1221- Tanguy Fautre pointed out that OpenSSL's function RAND_screen() (present
1222  only in some OpenSSL installs - like on Windows) isn't thread-safe and we
1223  agreed that moving it to the global_init() function is a decent way to deal
1224  with this situation.
1225
1226- Alexander Beedie provided the patch for a noproxy problem: If I have set
1227  CURLOPT_NOPROXY to "*", or to a host that should not use a proxy, I actually
1228  could still end up using a proxy if a proxy environment variable was set.
1229
1230Daniel 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
1238Daniel Stenberg (26 Jul 2009)
1239- Johan van Selst posted bug report #2825989
1240  (http://curl.haxx.se/bug/view.cgi?id=2825989) pointing out that
1241  OpenSSL-powered libcurl didn't support the SHA-2 digest algorithm, and
1242  provided the solution too: to use OpenSSL_add_all_algorithms() in addition
1243  to the older SSLeay_* alternative. OpenSSL_add_all_algorithms was added in
1244  OpenSSL 0.9.5
1245
1246Daniel 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
1252Michal 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
1257Kamil 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
1267Daniel 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
1271Michal 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
1275Guenter 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
1279Daniel 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
1284Daniel Stenberg (8 Jul 2009)
1285- Constantine Sapuntzakis posted bug report #2813123
1286  (http://curl.haxx.se/bug/view.cgi?id=2813123) and an a patch that fixes the
1287  problem:
1288
1289  Url A is accessed using auth. Url A redirects to Url B (on a different
1290  server0. Url B reuses a persistent connection. Url B has auth, even though
1291  it's on a different server.
1292
1293  Note: if Url B does not reuse a persistent connection, auth is not sent.
1294
1295  reason:
1296
1297  data->state.first_host is not initialized becuase Curl_http_connect is not
1298  called when a connection is reused.
1299
1300  Solution:
1301
1302  move initialization of data->state.first_host to Curl_http. No code before
1303  Curl_http uses data->state.first_host anyway.
1304
1305Guenter 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
1309Daniel 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
1319Daniel Fandrich (16 June 2009)
1320- Added a few more compiler warning options for gcc.
1321
1322Daniel 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
1327Michal 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
1331Daniel 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
1346Patrick Monnerat (15 Jun 2009)
1347- Replaced use of standard C library rand()/srand() by our own pseudo-random
1348  number generator.
1349
1350Yang Tse (11 Jun 2009)
1351- I adapted testcurl script to allow building test harness programs when
1352  cross-compiling for a *-*-mingw* host.
1353
1354Daniel 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
1358Yang 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
1373Yang 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
1378Daniel Stenberg (8 Jun 2009)
1379- Claes Jakobsson provided a patch for libcurl-NSS that fixed a bad refcount
1380  issue with client certs that caused issues like segfaults.
1381  http://curl.haxx.se/mail/lib-2009-05/0316.html
1382
1383- Triggered by bug report #2798852 and the patch in there, I fixed configure
1384  to detect gnutls build options with pkg-config only and not libgnutls-config
1385  anymore since GnuTLS has stopped distributing that tool. If an explicit path
1386  is given to configure, we will instead guess on how to link and use that
1387  lib. I did not use the patch from the bug report.
1388
1389Yang 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
1396Daniel Stenberg (8 Jun 2009)
1397- Eric Wong fixed --no-buffer to actually switch off output buffering. Been
1398  broken since 7.19.0
1399
1400Bill Hoffman (6 Jun 2009)
1401- Added some cmake docs and fixed socklen_t in the build.
1402
1403Yang 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
1416Daniel Stenberg (4 June 2009)
1417- Setting the Content-Length: header from your app when you do a POST or PUT
1418  is almost always a VERY BAD IDEA. Yet there are still apps out there doing
1419  this, and now recently it triggered a bug/side-effect in libcurl as when
1420  libcurl sends a POST or PUT with NTLM, it sends an empty post first when it
1421  knows it will just get a 401/407 back. If the app then replaced the
1422  Content-Length header, it caused the server to wait for input that libcurl
1423  wouldn't send. Aaron Oneal reported this problem in bug report #2799008
1424  (http://curl.haxx.se/bug/view.cgi?id=2799008) and helped us verify the fix.
1425
1426Yang 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
1431Daniel 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
1438Daniel Stenberg (1 June 2009)
1439- Claes Jakobsson fixed the configure script to better find and use NSS
1440  without pkg-config.
1441
1442Yang 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
1449Daniel 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
1463Daniel Stenberg (25 May 2009)
1464- bug report #2796358 (http://curl.haxx.se/bug/view.cgi?id=2796358) pointed
1465  out that the cookie parser would leak memory when it parses cookies that are
1466  received with domain, path etc set multiple times in the same header. While
1467  such a cookie is questionable, they occur in the wild and libcurl no longer
1468  leaks memory for them. I added such a header to test case 8.
1469
1470Daniel Fandrich (22 May 2009)
1471- Removed some obsolete digest code that caused a valgrind error in test 551.
1472
1473Daniel 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
1478Daniel 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
1484Version 7.19.5 (18 May 2009)
1485
1486Daniel 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
1491Daniel Stenberg (11 May 2009)
1492- Balint Szilakszi reported a memory leak when libcurl did gzip decompression
1493  of streams that had some parts (legitimately) missing. We now provide and use
1494  a proper cleanup function for the content encoding submodule.
1495  http://curl.haxx.se/mail/lib-2009-05/0092.html
1496
1497- Kamil Dudka provided a fix for libcurl-NSS reported by Michael Cronenworth
1498  at https://bugzilla.redhat.com/show_bug.cgi?id=453612#c12
1499
1500  If an incorrect password is given while loading a private key, libcurl ends
1501  up in an infinite loop consuming memory. The bug is critical.
1502
1503- I fixed the problem with doing NTLM, POST and then following a 302 redirect,
1504  as reported by Ebenezer Ikonne (on curl-users) and Laurent Rabret (on
1505  curl-library). The transfer was mistakenly marked to get more data to send
1506  but since it didn't actually have that, it just hung there...
1507
1508Daniel 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
1512Yang 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
1518Yang 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
1524Daniel Stenberg (8 May 2009)
1525- Constantine Sapuntzakis fixed bug report #2784055
1526  (http://curl.haxx.se/bug/view.cgi?id=2784055) identifying a problem to
1527  connect to SOCKS proxies when using the multi interface. It turned out to
1528  almost not work at all previously. We need to wait for the TCP connect to
1529  be properly verified before doing the SOCKS magic.
1530
1531  There's still a flaw in the FTP code for this.
1532
1533Daniel 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
1537Yang Tse (7 May 2009)
1538- Fixed an issue affecting FTP transfers, introduced with the transfer.c
1539  patch committed May 4.
1540
1541Daniel Stenberg (7 May 2009)
1542- Man page *roff problems fixed thanks to input from Colin Watson. Problems
1543  reported in the Debian package.
1544
1545- Vijay G filed bug report #2723236
1546  (http://curl.haxx.se/bug/view.cgi?id=2723236) identifying a problem with
1547  libcurl's TFTP code and its lack of dealing with the OACK packet.
1548
1549Yang 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
1553Daniel 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
1558Daniel Stenberg (4 May 2009)
1559- Michael Smith posted bug report #2786255
1560  (http://curl.haxx.se/bug/view.cgi?id=2786255) with a patch, identifying how
1561  libcurl did not deal with SSL session ids properly if the server rejected a
1562  re-use of one. Starting now, it will forget the rejected one and remember
1563  the new. This change was for OpenSSL only, it is likely that other SSL lib
1564  code needs similar fixes.
1565
1566Yang 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
1578Daniel 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
1582Yang Tse (2 May 2009)
1583- Use a build-time configured curl_socklen_t data type instead of socklen_t.
1584
1585Yang 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
1590Daniel 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
1599Daniel Stenberg (29 Apr 2009)
1600- Based on bug report #2723219 (http://curl.haxx.se/bug/view.cgi?id=2723219)
1601  I've now made TFTP "connections" not being kept for re-use within libcurl.
1602  TFTP is UDP-based so the benefit was really low (if even existing) to begin
1603  with so instead of tracking down to fix this problem we instead removed the
1604  re-use. I also enabled test case 1099 that I wrote a few days ago to verify
1605  that this change fixes the reported problem.
1606
1607Daniel Stenberg (28 Apr 2009)
1608- Constantine Sapuntzakis filed bug report #2783090
1609  (http://curl.haxx.se/bug/view.cgi?id=2783090) pointing out that on windows
1610  we need to grow the SO_SNDBUF buffer somewhat to get really good upload
1611  speeds. http://support.microsoft.com/kb/823764 has the details. Friends
1612  confirmed that simply adding 32 to CURL_MAX_WRITE_SIZE is enough.
1613
1614- Bug report #2709004 (http://curl.haxx.se/bug/view.cgi?id=2709004) by Tim
1615  Chen pointed out how curl couldn't upload with resume when reading from a
1616  pipe.
1617
1618  This ended up with the introduction of a new return code for the
1619  CURLOPT_SEEKFUNCTION callback that basically says that the seek failed but
1620  that libcurl may try to resolve the situation anyway. In our case this means
1621  libcurl will attempt to instead read that much data from the stream instead
1622  of seeking and that way curl can now upload with resume when data is read
1623  from a stream!
1624
1625Daniel Stenberg (26 Apr 2009)
1626- Bug report #2779733 (http://curl.haxx.se/bug/view.cgi?id=2779733) by Sven
1627  Wegener pointed out that CURLINFO_APPCONNECT_TIME didn't work with the multi
1628  interface and provided a patch that fixed the problem!
1629
1630Daniel Stenberg (24 Apr 2009)
1631- Kamil Dudka fixed another NSS-related leak when client certs were used.
1632
1633- Bug report #2779245 (http://curl.haxx.se/bug/view.cgi?id=2779245) by Rainer
1634  Koenig pointed out that the man page didn't tell that the *_proxy
1635  environment variables can be specified lower case or UPPER CASE and the
1636  lower case takes precedence,
1637
1638Daniel Fandrich (21 Apr 2009)
1639- Added new libcurl source files to Amiga, RiscOS and VC6 build files.
1640
1641Yang 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
1648Daniel Stenberg (20 Apr 2009)
1649- Leanic Lefever reported a crash and did some detailed research on why and
1650  how it occurs (http://curl.haxx.se/mail/lib-2009-04/0289.html). The
1651  conclusion was that if an error is detected and Curl_done() is called for
1652  the connection, ftp_done() could at times return another error code that
1653  then would take precedence and that new code confused existing logic that
1654  works for the first error code (CURLE_SEND_ERROR) only.
1655
1656- Gisle Vanem noticed that --libtool would produce bogus strings at times for
1657  OBJECTPOINT options. Now we've introduced a new function - my_setopt_str -
1658  within the app for setting plain string options to avoid the risk of this
1659  mistake happening.
1660
1661Daniel 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
1672Daniel Stenberg (13 Apr 2009)
1673- bug report #2727981 (http://curl.haxx.se/bug/view.cgi?id=2727981) by Martin
1674  Storsj� pointed out how setting CURLOPT_NOBODY to 0 could be downright
1675  confusing as it set the method to either GET or HEAD. The example he showed
1676  looked like:
1677
1678   curl_easy_setopt(curl, CURLOPT_PUT, 1);
1679   curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
1680
1681  The new way doesn't alter the method until the request is about to start. If
1682  CURLOPT_NOBODY is then 1 the HTTP request will be HEAD. If CURLOPT_NOBODY is
1683  0 and the request happens to have been set to HEAD, it will then instead be
1684  set to GET. I believe this will be less surprising to users, and hopefully
1685  not hit any existing users badly.
1686
1687- Toshio Kuratomi reported a memory leak problem with libcurl+NSS that turned
1688  out to be leaking cacerts. Kamil Dudka helped me complete the fix. The issue
1689  is found in Redhat's bug tracker:
1690  https://bugzilla.redhat.com/show_bug.cgi?id=453612
1691
1692  There are still memory leaks present, but they seem to have other reasons.
1693
1694Daniel Fandrich (11 Apr 2009)
1695- Added new libcurl source files to Symbian OS build files.
1696- Improved Symbian support for SSL.
1697
1698Yang 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
1703Yang 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
1711Daniel 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
1718Yang 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
1728Daniel 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
1732Daniel Fandrich (31 Mar 2009)
1733- Properly return an error code in curl_easy_recv (reported by Jim Freeman).
1734
1735Daniel 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
1740Daniel 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
1744Yang 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
1750Daniel Stenberg (11 Mar 2009)
1751- Kamil Dudka made the curl tool properly call curl_global_init() before any
1752  other libcurl function.
1753
1754Yang Tse (11 Mar 2009)
1755- Added missing TELNET timeout support for Windows builds. This issue was
1756  reported by Pierre Brico.
1757
1758Daniel 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
1780Daniel Stenberg (8 Mar 2009)
1781- Andre Guibert de Bruet found and fixed a code segment in ssluse.c where the
1782  allocation of the memory BIO was not being properly checked.
1783
1784- Andre Guibert de Bruet fixed the gnutls-using code: There are a few places
1785  in the gnutls code where we were checking for negative values for errors,
1786  when the man pages state that GNUTLS_E_SUCCESS is returned on success and
1787  other values indicate error conditions.
1788
1789- Bill Egert pointed out (http://curl.haxx.se/bug/view.cgi?id=2671602) that
1790  curl didn't use sprintf() in a way that is documented to work in POSIX but
1791  since we use our own printf() code (from libcurl) that shouldn't be a
1792  problem. Nonetheless I modified the code to not rely on such particular
1793  features and to not cause further raised eyebrowse with no good reason.
1794
1795Daniel 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
1800Yang Tse (5 Mar 2009)
1801- Fixed NTLM authentication memory leak on SSPI enabled Windows builds. This
1802  issue was noticed by Chris Deidun.
1803
1804Daniel Fandrich (4 Mar 2009)
1805- Fixed a problem with m4 quoting in the OpenSSL configure check reported
1806  by Daniel Johnson.
1807
1808Daniel 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
1819Version 7.19.4 (3 March 2009)
1820
1821Daniel Stenberg (3 Mar 2009)
1822- David Kierznowski notified us about a security flaw
1823  (http://curl.haxx.se/docs/adv_20090303.html also known as CVE-2009-0037) in
1824  which previous libcurl versions (by design) can be tricked to access an
1825  arbitrary local/different file instead of a remote one when
1826  CURLOPT_FOLLOWLOCATION is enabled. This flaw is now fixed in this release
1827  together this the addition of two new setopt options for controlling this
1828  new behavior:
1829
1830  o CURLOPT_REDIR_PROTOCOLS controls what protocols libcurl is allowed to
1831  follow to when CURLOPT_FOLLOWLOCATION is enabled. By default, this option
1832  excludes the FILE and SCP protocols and thus you nee to explicitly allow
1833  them in your app if you really want that behavior.
1834
1835  o CURLOPT_PROTOCOLS controls what protocol(s) libcurl is allowed to fetch
1836  using the primary URL option. This is useful if you want to allow a user or
1837  other outsiders control what URL to pass to libcurl and yet not allow all
1838  protocols libcurl may have been built to support.
1839
1840Daniel 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
1845Daniel 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
1853Daniel 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
1858Daniel 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
1864Yang 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
1868Daniel 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
1872Yang Tse (20 Feb 2009)
1873- Do not halt compilation when using VS2008 to build a Windows 2000 target.
1874
1875Daniel 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
1885Daniel 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
1896Patrick 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
1900Daniel 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
1920Daniel 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
1924Daniel Fandrich (12 Feb 2009)
1925- Added support for Digest and NTLM authentication using GnuTLS.
1926
1927Daniel Stenberg (11 Feb 2009)
1928- CURLINFO_CONDITION_UNMET was added to allow an application to get to know if
1929  the condition in the previous request was unmet. This is typically a time
1930  condition set with CURLOPT_TIMECONDITION and was previously not possible to
1931  reliably figure out. From bug report #2565128
1932  (http://curl.haxx.se/bug/view.cgi?id=2565128) filed by Jocelyn Jaubert.
1933
1934Daniel 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
1942Daniel 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
1947Daniel 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
1962Daniel 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
1969Daniel Stenberg (30 Jan 2009)
1970- Scott Cantor filed bug report #2550061
1971  (http://curl.haxx.se/bug/view.cgi?id=2550061) mentioning that I failed to
1972  properly make sure that the VC9 makefiles got included in the latest
1973  release. I've now fixed the release script and verified it so next release
1974  will hopefully include them properly!
1975
1976Daniel Fandrich (30 Jan 2009)
1977- Fixed --disable-proxy for FTP and SOCKS. Thanks to Daniel Egger for
1978  reporting.
1979
1980Yang 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
1987Daniel 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
1994Daniel Stenberg (26 Jan 2009)
1995- Chad Monroe provided the new CURLOPT_TFTP_BLKSIZE option that allows an app
1996  to set desired block size to use for TFTP transfers instead of the default
1997  512 bytes.
1998
1999- The "-no_ticket" option was introduced in Openssl0.9.8j. It's a flag to
2000  disable "rfc4507bis session ticket support".  rfc4507bis was later turned
2001  into the proper RFC5077 it seems: http://tools.ietf.org/html/rfc5077
2002
2003  The enabled extension concerns the session management. I wonder how often
2004  libcurl stops a connection and then resumes a TLS session. also, sending the
2005  session data is some overhead. .I suggest that you just use your proposed
2006  patch (which explicitly disables TICKET).
2007
2008  If someone writes an application with libcurl and openssl who wants to
2009  enable the feature, one can do this in the SSL callback.
2010
2011  Sharad Gupta brought this to my attention. Peter Sylvester helped me decide
2012  on the proper action.
2013
2014- Alexey Borzov filed bug report #2535504
2015  (http://curl.haxx.se/bug/view.cgi?id=2535504) pointing out that realms with
2016  quoted quotation marks in HTTP Digest headers didn't work. I've now added
2017  test case 1095 that verifies my fix.
2018
2019- Craig A West brought CURLOPT_NOPROXY and the corresponding --noproxy option.
2020  They basically offer the same thing the NO_PROXY environment variable only
2021  offered previously: list a set of host names that shall not use the proxy
2022  even if one is specified.
2023
2024Daniel 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
2037Daniel 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
2041Version 7.19.3 (19 January 2009)
2042
2043Daniel 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
2047Daniel Stenberg (15 Jan 2009)
2048- Tim Ansell fixed a compiler warning in lib/cookie.c
2049
2050Daniel 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
2089Daniel 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
2097Daniel Stenberg (12 Jan 2009)
2098- Based on bug report #2498665 (http://curl.haxx.se/bug/view.cgi?id=2498665)
2099  by Daniel Black, I've now added magic to the configure script that makes it
2100  use pkg-config to detect gnutls details as well if the existing method
2101  (using libgnutls-config) fails. While doing this, I cleaned up and unified
2102  the pkg-config usage when detecting openssl and nss as well.
2103
2104Daniel 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
2109Daniel 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
2125Daniel 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
2131Daniel 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
2146Daniel Stenberg (1 Jan 2009)
2147- 'reconf' is removed since we rather have users use 'buildconf'
2148
2149Daniel Stenberg (31 Dec 2008)
2150- Bas Mevissen reported http://curl.haxx.se/bug/view.cgi?id=2479030 pointing
2151  out that 'reconf' didn't properly point out the m4 subdirectory when running
2152  aclocal.
2153
2154Daniel Stenberg (29 Dec 2008)
2155 - Phil Lisiecki filed bug report #2413067
2156  (http://curl.haxx.se/bug/view.cgi?id=2413067) that identified a problem that
2157  would cause libcurl to mark a DNS cache entry "in use" eternally if the
2158  subsequence TCP connect failed. It would thus never get pruned and refreshed
2159  as it should've been.
2160
2161  Phil provided his own patch to this problem that while it seemed to work
2162  wasn't complete and thus I wrote my own fix to the problem.
2163
2164Daniel 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
2170Daniel 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
2177Daniel 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
2184Daniel 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
2198Daniel 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
2207Gisle 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
2213Daniel 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
2217Daniel Stenberg (12 Dec 2008)
2218- More work with Igor Novoseltsev to first fix the remaining stuff for
2219  removing easy handles from multi handles when the easy handle is/was within
2220  a HTTP pipeline. His bug report #2351653
2221  (http://curl.haxx.se/bug/view.cgi?id=2351653) was also related and was
2222  eventually fixed by a patch by Igor himself.
2223
2224Yang 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
2228Daniel Stenberg (12 Dec 2008)
2229- Mark Karpeles filed bug report #2416182 titled "crash in ConnectionExists
2230  when using duphandle+curl_mutli"
2231  (http://curl.haxx.se/bug/view.cgi?id=2416182) which showed that
2232  curl_easy_duphandle() wrongly also copied the pointer to the connection
2233  cache, which was plain wrong and caused a segfault if the handle would be
2234  used in a different multi handle than the handle it was duplicated from.
2235
2236Daniel 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
2241Daniel 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
2257Daniel 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
2263Daniel 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
2270Daniel Stenberg (8 Dec 2008)
2271- Fred Machado posted about a weird FTP problem on the curl-users list and when
2272  researching it, it turned out he got a 550 response back from a SIZE command
2273  and then I fell over the text in RFC3659 that says:
2274
2275   The presence of the 550 error response to a SIZE command MUST NOT be taken
2276   by the client as an indication that the file cannot be transferred in the
2277   current MODE and TYPE.
2278
2279  In other words: the change I did on September 30th 2008 and that has been
2280  included in the last two releases were a regression and a bad idea. We MUST
2281  NOT take a 550 response from SIZE as a hint that the file doesn't exist.
2282
2283- Christian Krause filed bug #2221237
2284  (http://curl.haxx.se/bug/view.cgi?id=2221237) that identified an infinite
2285  loop during GSS authentication given some specific conditions. With his
2286  patience and great feedback I managed to narrow down the problem and
2287  eventually fix it although I can't test any of this myself!
2288
2289Daniel Fandrich (3 Dec 2008)
2290- Fixed the getifaddrs version of Curl_if2ip to work on systems without IPv6
2291  support (e.g. Minix)
2292
2293Daniel Stenberg (3 Dec 2008)
2294- Igor Novoseltsev filed bug #2351645
2295  (http://curl.haxx.se/bug/view.cgi?id=2351645) that identified a problem with
2296  the multi interface that occured if you removed an easy handle while in
2297  progress and the handle was used in a HTTP pipeline.
2298
2299- Pawel Kierski pointed out a mistake in the cookie code that could lead to a
2300  bad fclose() after a fatal error had occured.
2301  (http://curl.haxx.se/bug/view.cgi?id=2382219)
2302
2303Daniel 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
2312Daniel 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
2321Daniel Fandrich (20 Nov 2008)
2322- Automatically detect OpenBSD's CA cert bundle.
2323
2324Daniel Stenberg (19 Nov 2008)
2325- I removed the default use of "Pragma: no-cache" from libcurl when a proxy is
2326  used. It has been used since forever but it was never a good idea to use
2327  unless explicitly asked for.
2328
2329- Josef Wolf's extension that allows a $TESTDIR/gdbinit$testnum file that when
2330  you use runtests.pl -g, will be sourced by gdb to allow additional fancy or
2331  whatever you see fit
2332
2333- Christian Krause reported and fixed a memory leak that would occur with HTTP
2334  GSS/kerberos authentication (http://curl.haxx.se/bug/view.cgi?id=2284386)
2335
2336- Andreas Wurf and Markus Koetter helped me analyze a problem that Andreas got
2337  when uploading files to a single FTP server using multiple easy handle
2338  handles with the multi interface. Occasionally a handle would stall in
2339  mysterious ways.
2340
2341  The problem turned out to be a side-effect of the ConnectionExists()
2342  function's eagerness to re-use a handle for HTTP pipelining so it would
2343  select it even if already being in use, due to an inadequate check for its
2344  chances of being used for pipelnining.
2345
2346Daniel Fandrich (17 Nov 2008)
2347- Added more compiler warning options for gcc 4.3
2348
2349Yang 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
2356Daniel 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
2372Daniel 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
2379Yang 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
2383Yang 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
2387Version 7.19.2 (13 November 2008)
2388
2389Michal Marek (13 Nov 2008)
2390- Fixed a potential data loss in Curl_client_write() when the transfer is
2391  paused.
2392
2393Daniel Stenberg (11 Nov 2008)
2394- Rainer Canavan filed bug #2255627
2395  (http://curl.haxx.se/bug/view.cgi?id=2255627) which pointed out that a
2396  program using libcurl's multi interface to download a HTTPS page with a
2397  libcurl built powered by OpenSSL, would easily get silly and instead hand
2398  over SSL details as data instead of the actual HTTP headers and body. This
2399  happened because libcurl would consider the connection handshake done too
2400  early. This problem was introduced at September 22nd 2008 with my fix of the
2401  bug #2107377
2402
2403  The correct fix is now instead done within the GnuTLS-handling code, as both
2404  the OpenSSL and the NSS code already deal with this situation in similar
2405  fashion. I added test case 560 in an attempt to verify this fix, but
2406  unfortunately it didn't trigger it even before this fix!
2407
2408Yang Tse (11 Nov 2008)
2409- Related with bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535)
2410  Daniel Fandrich noticed that curl_addrinfo was also missing in the build
2411  process of other four non-configure platforms. Added now.
2412
2413Daniel 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
2418Yang Tse (6 Nov 2008)
2419- Merged existing IPv4 and IPv6 Curl_ip2addr functions into a single one
2420  which now also takes a protocol address family argument.
2421
2422- Bug #2230535 (http://curl.haxx.se/bug/view.cgi?id=2230535) pointed out a
2423  problem with MSVC 6 makefile that caused a build failure. It was noted that
2424  the curl_addrinfo.obj reference was missing. I took the opportunity to sort
2425  the list in which this was missing. Issue submitted by John Wilkinson.
2426
2427Version 7.19.1 (5 November 2008)
2428
2429Daniel Stenberg (4 Nov 2008)
2430- CURLINFO_FILETIME now works for file:// transfers as well
2431
2432Daniel Stenberg (3 Nov 2008)
2433- Bug #2218480 (http://curl.haxx.se/bug/view.cgi?id=2218480) pointed out a
2434  problem with my CURLINFO_PRIMARY_IP fix from October 7th that caused a NULL
2435  pointer read. I also took the opportunity to clean up this logic (storing of
2436  the connection's IP address) somewhat as we had it stored in two different
2437  places and ways previously and they are now unified.
2438
2439Yang Tse (3 Nov 2008)
2440- Fix undersized IPv6 address internal buffer. IPv6 address strings longer
2441  than 35 characters would be truncated.
2442
2443Daniel 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
2463Yang 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
2470Yang 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
2479Daniel 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
2483Daniel 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
2491Daniel Fandrich (24 Oct 2008)
2492- Added experimental support for zlib and OpenSSL on Symbian OS.
2493
2494Daniel Fandrich (21 Oct 2008)
2495- Fixed some problems with SFTP range support to fix test cases 634 through
2496  637.
2497
2498Daniel Fandrich (17 Oct 2008)
2499- Fixed a compile error reported by Albert Chin on AIX and IRIX when using
2500  GTLS.
2501
2502Daniel 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
2508Daniel Stenberg (15 Oct 2008)
2509- Pascal Terjan filed bug #2154627
2510  (http://curl.haxx.se/bug/view.cgi?id=2154627) which pointed out that libcurl
2511  uses strcasecmp() in multiple places where it causes failures when the
2512  Turkish locale is used. This is because 'i' and 'I' isn't the same letter so
2513  strcasecmp() on those letters are different in Turkish than in English (or
2514  just about all other languages). I thus introduced a totally new internal
2515  function in libcurl (called Curl_raw_equal) for doing case insentive
2516  comparisons for english-(ascii?) style strings that thus will make "file"
2517  and "FILE" match even if the Turkish locale is selected.
2518
2519Daniel 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
2525Daniel Stenberg (15 Oct 2008)
2526- John Wilkinson filed bug #2155496
2527  (http://curl.haxx.se/bug/view.cgi?id=2155496) pointing out an error case
2528  without a proper human-readable error message. When a read callback returns
2529  a too large value (like when trying to return a negative number) it would
2530  trigger and the generic error message then makes the proplem slightly
2531  different to track down. I've added an error message for this now.
2532
2533Daniel 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
2539Daniel 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
2546Daniel Stenberg (8 Oct 2008)
2547- John Wilkinson filed bug #2152270
2548  (http://curl.haxx.se/bug/view.cgi?id=2152270) which identified and fixed a
2549  CURLINFO_REDIRECT_URL memory leak and an additional wrong-doing:
2550
2551  Any subsequent transfer with a redirect leaks memory, eventually crashing
2552  the process potentially.
2553
2554  Any subsequent transfer WITHOUT a redirect causes the most recent redirect
2555  that DID occur on some previous transfer to still be reported.
2556
2557- Igor Novoseltsev filed bug #2111613
2558  (http://curl.haxx.se/bug/view.cgi?id=2111613) that eventually identified a
2559  flaw in how the multi_socket interface in some cases missed to call the
2560  timeout callback when easy interfaces are removed and added within the same
2561  millisecond.
2562
2563- Igor Novoseltsev brought a patch that introduced two new options to
2564  curl_easy_setopt: CURLOPT_USERNAME and CURLOPT_PASSWORD that sort of
2565  deprecates the good old CURLOPT_USERPWD since they allow applications to set
2566  the user name and password independently and perhaps more importantly allow
2567  both to contain colon(s) which CURLOPT_USERPWD doesn't fully support.
2568
2569Daniel 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
2580Daniel 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
2587Yang 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
2591Yang 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
2598Daniel Fandrich (1 Oct 2008)
2599- "make clean" now cleans out the docs and tests directories, too.
2600
2601Daniel 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
2609Daniel 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
2614Daniel 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
2618Daniel Stenberg (29 Sep 2008)
2619- Ian Lynagh provided a patch that now makes CURLOPT_RANGE work fine for SFTP
2620  downloads!
2621
2622- Maxim Ivanov filed bug report #2107803
2623  (http://curl.haxx.se/bug/view.cgi?id=2107803) "no CURLINFO_REDIRECT_URL in
2624  multi mode" together with a patch that fixed the problem.
2625
2626Daniel Stenberg (25 Sep 2008)
2627- Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest
2628  auth code to not behave badly when getting a blank realm with
2629  realm="". http://curl.haxx.se/bug/view.cgi?id=2126435
2630
2631Daniel 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
2637Daniel 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
2660Daniel Stenberg (22 Sep 2008)
2661- Made the SOCKS code use the new Curl_read_plain() function to fix the bug
2662  Markus Moeller reported: http://curl.haxx.se/mail/archive-2008-09/0016.html
2663
2664- recv() errors other than those equal to EAGAIN now cause proper
2665  CURLE_RECV_ERROR to get returned. This made test case 160 fail so I've now
2666  disabled it until we can figure out another way to exercise that logic.
2667
2668- Michael Goffioul filed bug report #2107377 "Problem with multi + GnuTLS +
2669  proxy" (http://curl.haxx.se/bug/view.cgi?id=2107377) that showed how a multi
2670  interface using program didn't work when built with GnuTLS and a CONNECT
2671  request was done over a proxy (basically test 502 over a proxy to a HTTPS
2672  site). It turned out the ssl connect function would get called twice which
2673  caused the second call to fail.
2674
2675Daniel 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
2679Yang Tse (20 Sep 2008)
2680- Fix regression in configure script which affected OpenSSL builds on MSYS.
2681
2682Yang Tse (19 Sep 2008)
2683- configure script now checks availability of the alarm() function.
2684
2685Daniel 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
2690Daniel Fandrich (17 Sep 2008)
2691- Removed reference to curl-ca-bundle.crt in the host verification failure
2692  error message.
2693
2694Yang Tse (17 Sep 2008)
2695- Improve configure detection of gethostname(), localtime_r(), strstr(),
2696  getservbyport_r(), gethostbyaddr_r() and gethostbyname_r().
2697
2698Yang Tse (14 Sep 2008)
2699- Improve configure detection of strcasecmp(), strcasestr(), strcmpi(),
2700  stricmp(), strlcat(), strncasecmp(), strncmpi() and strnicmp().
2701
2702Yang 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
2706Yang 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
2710Yang Tse (10 Sep 2008)
2711- Improve detection of gmtime_r(), strtoll(), sigaction(), strtok_r(),
2712  strdup() and ftruncate() in the configure process.
2713
2714Daniel 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
2721Daniel 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
2740Daniel 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
2754Daniel 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
2779Guenter 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
2783Yang Tse (4 Sep 2008)
2784- Several fixes related with print formatting string directives.
2785
2786Daniel Fandrich (3 Sep 2008)
2787- Search for the FreeBSD CA cert file /usr/local/share/certs/ca-root.crt
2788
2789Daniel Fandrich (2 Sep 2008)
2790- Fixed an out of memory problem that caused torture test failures in tests
2791  706 and 707.
2792
2793Daniel 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
2799Version 7.19.0 (1 September 2008)
2800
2801Daniel 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
2810Daniel Stenberg (29 Aug 2008)
2811- When libcurl was doing a HTTP POST and the server would respond with
2812  "Connection: close" and actually close the connection after the
2813  response-body, libcurl could still have outstanding data to send and it
2814  would not properly notice this and stop sending. This caused weirdness and
2815  sad faces. http://curl.haxx.se/bug/view.cgi?id=2080222
2816
2817  Note that there are still reasons to consider libcurl's behavior when
2818  getting a >= 400 response code while sending data, as Craig Perras' note
2819  "http upload: how to stop on error" specifies:
2820  http://curl.haxx.se/mail/archive-2008-08/0138.html
2821
2822Daniel Stenberg (28 Aug 2008)
2823- Dengminwen reported that libcurl would lock a (cookie) share twice (without
2824  an unlock in between) for a certain case and that in fact works when using
2825  regular windows mutexes but not with pthreads'! Locks should of course not
2826  get locked again so this is now fixed.
2827  http://curl.haxx.se/mail/lib-2008-08/0422.html
2828
2829- I'm abandoning the system with the web site mirrors (but keeping download
2830  files bing mirrored) and thus I've changed the URL in the cookiejar header
2831  to no longer use curlm.haxx.se but instead use the main site curl.haxx.se
2832
2833Daniel 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
2840Yang 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
2844Daniel Fandrich (26 Aug 2008)
2845- Fixed out of memory problems that caused torture test failures in tests
2846  1021 and 1067.
2847
2848Yang 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
2856Daniel Stenberg (23 Aug 2008)
2857- Running 'make ca-firefox' in the root build dir will now run the new
2858  firefox-db2pem.sh conversion script that converts a local Firefox db of ca
2859  certs into PEM format, suitable for use with a OpenSSL or GnuTLS built
2860  libcurl.
2861
2862- Constantine Sapuntzakis fixed a bug when doing proxy CONNECT with the multi
2863  interface, and the proxy would send Connection: close during the
2864  authentication phase.  http://curl.haxx.se/bug/view.cgi?id=2069047
2865
2866Daniel 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
2873Yang 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
2880Daniel 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
2884Daniel 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
2890Gisle Vanem (18 Aug 2008)
2891- Updated lib/Makefile.Watcom with the option to use c-ares (USE_ARES=1).
2892
2893Yang 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
2898Yang 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
2907Yang 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
2914Daniel 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
2924Yang 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
2930Yang 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
2935Daniel 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
2941Daniel 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
2945Yang 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
2950Daniel 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
2960Daniel Stenberg (11 Aug 2008)
2961- Constantine Sapuntzakis filed bug report #2042430
2962  (http://curl.haxx.se/bug/view.cgi?id=2042430) with a patch. "NTLM Windows
2963  SSPI code is not thread safe". This was due to libcurl using static
2964  variables to tell wether to load the necessary SSPI DLL, but now the loading
2965  has been moved to the more suitable curl_global_init() call.
2966
2967- Constantine Sapuntzakis filed bug report #2042440
2968  (http://curl.haxx.se/bug/view.cgi?id=2042440) with a patch. He identified a
2969  problem when using NTLM over a proxy but the end-point does Basic, and then
2970  libcurl would do wrong when the host sent "Connection: close" as the proxy's
2971  NTLM state was erroneously cleared.
2972
2973Yang 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
2977Daniel 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
2983Yang 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
3007Yang 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
3012Daniel 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
3018Daniel 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
3025Yang 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
3033Daniel 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
3040Yang 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
3047Daniel Fandrich (1 Aug 2008)
3048- Added support for --append on SFTP uploads. Unfortunately, OpenSSH doesn't
3049  support this so it goes untested.
3050
3051Yang 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
3062Daniel 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
3076Daniel 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
3092Daniel 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
3099Daniel 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
3107Daniel 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
3116Daniel Stenberg (26 Jul 2008)
3117- David Bau filed bug report #2026240 "CURL_READFUNC_PAUSE leads to buffer
3118  overrun" (http://curl.haxx.se/bug/view.cgi?id=2026240) identifying two
3119  problems, and providing the fix for them:
3120
3121  - CURL_READFUNC_PAUSE did in fact not pause the _sending_ of data that it is
3122    designed for but paused _receiving_ of data!
3123
3124  - libcurl didn't internally set the read counter to zero when this return
3125    code was detected, which would potentially lead to junk getting sent to
3126    the server.
3127
3128Daniel 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
3136Daniel 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
3144Daniel 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
3153Yang Tse (21 Jul 2008)
3154- Use the sreadfrom() wrapper to replace recvfrom() in our code.
3155
3156Yang 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
3161Yang 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
3165Yang 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
3171Yang 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
3176Daniel 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
3180Yang 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
3187Yang Tse (11 Jul 2008)
3188- Added missing multiple header inclusion prevention definition for header
3189  file content_encoding.h
3190
3191Daniel Fandrich (11 Jul 2008)
3192- Fixed test 553 to pass the torture test.
3193
3194Daniel 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
3199Daniel 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
3209Yang Tse (10 Jul 2008)
3210- Peter Lamberg filed bug report #2015126: "poll gives WSAEINVAL when POLLPRI
3211  is set in fdset.events" (http://curl.haxx.se/bug/view.cgi?id=2015126) which
3212  exactly pinpointed the problem only triggered on Windows Vista, provided
3213  reference to docs and also a fix. There is much work behind Peter Lamberg's
3214  excellent bug report. Thank You!
3215
3216Daniel Fandrich (9 Jul 2008)
3217- Added tests 1036 and 1037 to verify resumed ftp downloads with -C -
3218
3219Daniel 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
3224Daniel Fandrich (9 Jul 2008)
3225- Fixed an OOM handling problem that cause test 11 to fail the torture test.
3226
3227Daniel Fandrich (8 Jul 2008)
3228- Fixed test 554 to pass the torture test.
3229
3230Daniel Fandrich (7 Jul 2008)
3231- Added test cases 1034 & 1035 to test IDN name conversion failures.
3232
3233Daniel 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
3241Daniel 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
3253Daniel Fandrich (2 Jul 2008)
3254- Support Open Watcom C on Linux (as well as Windows).
3255
3256Yang 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
3266Daniel Stenberg (1 Jul 2008)
3267- Rolland Dudemaine provided fixes to get libcurl to build for the INTEGRITY
3268  operating system.
3269
3270Daniel 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
3277Yang Tse (29 Jun 2008)
3278- John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
3279  some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
3280  that the configure script did not use the _POSIX_MONOTONIC_CLOCK feature test
3281  macro when checking monotonic clock availability. This is now fixed and the
3282  monotonic clock will not be used unless the feature test macro is defined
3283  with a value greater than zero indicating always supported.
3284
3285Daniel 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
3291Daniel Stenberg (22 Jun 2008)
3292- Eduard Bloch filed the debian bug report #487567
3293  (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487567) pointing out that
3294  libcurl used Content-Range: instead of Range when doing a range request with
3295  --head (CURLOPT_NOBODY). This is now fixed and test case 1032 was added to
3296  verify.
3297
3298Daniel 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
3303Yang 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
3309Daniel 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
3323Daniel 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
3336Daniel 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
3341Daniel 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
3347Yang 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
3352Daniel Fandrich (12 Jun 2008)
3353- Fixed curl-config --ca which wasn't being exported by configure.
3354
3355Daniel 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
3377Daniel 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
3382Daniel 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
3398Daniel 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
3410Version 7.18.2 (4 June 2008)
3411
3412Daniel Fandrich (3 Jun 2008)
3413- Fixed a problem where telnet data would be lost if an EWOULDBLOCK
3414  condition were encountered.
3415
3416Marty 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
3421Daniel Stenberg (28 May 2008)
3422- Emil Romanus found a problem and helped me repeat it. It occured when using
3423  the curl_multi_socket() API with HTTP pipelining enabled and could lead to
3424  the pipeline basically stalling for a very long period of time until it took
3425  off again.
3426
3427- Jeff Weber reported memory leaks with aborted SCP and SFTP transfers and
3428  provided excellent repeat recipes. I fixed the cases I managed to reproduce
3429  but Jeff still got some (SCP) problems even after these fixes:
3430  http://curl.haxx.se/mail/lib-2008-05/0342.html
3431
3432Daniel Stenberg (26 May 2008)
3433- Bug report #1973352 (http://curl.haxx.se/bug/view.cgi?id=1973352) identified
3434  how the HTTP redirect following code didn't properly follow to a new URL if
3435  the new url was but a query string such as "Location: ?moo=foo". Test case
3436  1031 was added to verify this fix.
3437
3438- Andreas Faerber and Scott McCreary made (lib)curl build for the Haiku OS.
3439
3440Yang 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
3444Daniel 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
3448Daniel 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
3465Daniel Stenberg (13 May 2008)
3466- Added test case 556 that uses curl_easy_send() and curl_easy_recv()
3467
3468Daniel 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
3474Yang 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
3478Daniel 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
3483Michal 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
3487Daniel Stenberg (7 May 2008)
3488- Liam Healy filed the debian bug report #480044
3489  (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480044) identifying a
3490  segfault when using krb5 ftp, but the krb4 code had the same problem.
3491
3492Yang 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
3496Daniel Stenberg (4 May 2008)
3497- Yuriy Sosov pointed out a configure fix for detecting c-ares when that is
3498  built debug-enabled.
3499
3500Daniel Stenberg (3 May 2008)
3501- Ben Van Hof filed bug report #1945240: "libcurl sometimes sends body twice
3502  when using CURL_AUTH_ANY" (http://curl.haxx.se/bug/view.cgi?id=1945240).
3503  The problem was that when libcurl rewound a stream meant for upload when it
3504  would prepare for a second request, it could accidentally continue the
3505  sending of the rewound data on the first request instead of on the second.
3506  Ben also provided test case 1030 that verifies this fix.
3507
3508Daniel Stenberg (3 May 2008)
3509- Jean-Francois Bertrand reported a libcurl crash with CURLOPT_TCP_NODELAY
3510  since libcurl used getprotobyname() and that isn't thread-safe. We now
3511  switched to use IPPROTO_TCP unconditionally, but perhaps the proper fix is
3512  to detect the thread-safe version of the function and use that.
3513  http://curl.haxx.se/mail/lib-2008-05/0011.html
3514
3515Daniel 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
3520Daniel 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
3529Yang Tse (29 Apr 2008)
3530- Improved easy interface resolving timeout handling in c-ares enabled builds
3531
3532Daniel Fandrich (28 Apr 2008)
3533- Added test 1028 to test an HTTP redirect to a FTP URL.
3534
3535Daniel Stenberg (28 Apr 2008)
3536- Norbert Frese filed bug report #1951588: "Problem with curlftpfs and
3537  libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an
3538  identical report to what Denis Golovan reported in
3539  http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the
3540  user/password pointers properly even though there might've been a new
3541  struct/cconnection getting used.
3542
3543Daniel Stenberg (26 Apr 2008)
3544- Reverted back to use automake 1.9.6 in the next release (from automake
3545  1.10.1) since it *still* suffers from Solaris-related bugs. Our previous
3546  automake 1.10 problem was reported in bug #1701360
3547  (http://curl.haxx.se/bug/view.cgi?id=1701360) and this recent problem was
3548  bug #1944825 (http://curl.haxx.se/bug/view.cgi?id=1944825). I have not
3549  personally approached the automake team about either one of these but I
3550  figure we need a Solaris 10 guy to do it!
3551
3552Yang Tse (25 Apr 2008)
3553- Added 'timeout' and 'delay' attributes support for the test harness
3554  <command> subsection.
3555
3556Daniel Fandrich (24 Apr 2008)
3557- Made --stderr able to redirect all stderr messages.
3558
3559Yang 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
3563Daniel Fandrich (22 Apr 2008)
3564- Added support for running on Symbian OS.
3565
3566Daniel Fandrich (18 Apr 2008)
3567- Added test cases 1026 and 1027 to do some rudimentary tests on the --manual
3568  and --help options.
3569
3570Michal Marek (14 Apr 2008)
3571- allow disabling the typechecker by defining CURL_DISABLE_TYPECHECK, as
3572  discussed in http://curl.haxx.se/mail/lib-2008-04/0291.html
3573
3574Daniel Stenberg (14 Apr 2008)
3575- Stefan Krause reported a case where the OpenSSL handshake phase wasn't
3576  properly acknowledging the timeout values, like if you pulled the network
3577  plug in the midst of it.
3578
3579- Andre Guibert de Bruet fixed a second case of not checking the malloc()
3580  return code in the Negotiate code.
3581
3582- Sandor Feldi reported bug #1942022
3583  (http://curl.haxx.se/bug/view.cgi?id=1942022) pointing out a mistake in the
3584  lib/Makefile.vc[68] makefiles' release-ssl-dll target.
3585
3586- Brock Noland reported that curl behaved differently depending on which order
3587  you used -i and -I.
3588
3589Daniel 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
3593Daniel 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
3598Michal 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
3607Daniel 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
3620Daniel Fandrich (3 Apr 2008)
3621- Added test627 to test SFTP with CURLOPT_NOBODY
3622
3623Daniel 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
3631Daniel Fandrich (3 Apr 2008)
3632- Made sure that curl_global_init is called in all the multithreaded
3633  example programs.
3634
3635Michal 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
3639Daniel 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
3646Daniel 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
3651Version 7.18.1 (30 March 2008)
3652
3653Daniel Stenberg (28 Mar 2008)
3654- Stephen Collyer pointed out that configure --with-libssh2 without a given
3655  path didn't work properly.
3656
3657Daniel 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
3662Daniel 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
3667Daniel 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
3671Daniel 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
3677Michal 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
3684Daniel 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
3688Michal 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
3694Daniel 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
3699Daniel 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
3709Daniel Stenberg (11 Mar 2008)
3710- Dmitry Popov filed bug report #1911069
3711  (http://curl.haxx.se/bug/view.cgi?id=1911069) that identified a race
3712  condition in the name resolver code when the DNS cache is shared between
3713  multiple easy handles, each running in simultaneous threads that could cause
3714  crashes.
3715
3716- Added a macro for curl_easy_setopt() that accepts three arguments and simply
3717  does nothing with them, just to make sure libcurl users always use three
3718  arguments to this function. Due to its use of ... for the third argument, it
3719  is otherwise hard to detect abuse.
3720
3721Michal Marek (11 Mar 2008)
3722- Added a type checking macro for curl_easy_setopt(), needs gcc-4.3 and only
3723  works in C mode atm (http://curl.haxx.se/mail/lib-2008-02/0267.html ,
3724  http://curl.haxx.se/mail/lib-2008-02/0292.html )
3725
3726Daniel 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
3730Daniel 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
3740Michal Marek (6 Mar 2008)
3741- Fix the gssapi configure check to detect newer MIT Kerberos (patch by
3742  Michael Calmer)
3743
3744Yang 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
3748Daniel 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
3755Daniel S (4 Mar 2008)
3756- Mike Protts brought a patch that makes resumed transfers work with SFTP.
3757
3758Daniel 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
3762Guenter Knauf (26 Feb 2008)
3763- Kaspar Brand provided a patch to support server name indication (RFC 4366).
3764
3765Daniel S (25 Feb 2008)
3766- Kaspar Brand made GnuTLS-built libcurl properly acknowledge the option that
3767  forces it to prefer SSLv3.
3768
3769Daniel S (23 Feb 2008)
3770- Sam Listopad provided a patch in feature-request #1900014
3771  http://curl.haxx.se/bug/feature.cgi?id=1900014 that makes libcurl (built to
3772  use OpenSSL) support a full chain of certificates in a given PKCS12
3773  certificate.
3774
3775Daniel 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
3779Daniel S (21 Feb 2008)
3780- Zmey Petroff found a crash when libcurl accessed a NULL pointer, which
3781  happened if you set the connection cache size to 1 and for example failed to
3782  login to an FTP site. Bug report #1896698
3783  (http://curl.haxx.se/bug/view.cgi?id=1896698)
3784
3785Daniel 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
3804Guenter 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
3808Daniel Fandrich (19 Feb 2008)
3809- Added test309 to test HTTP redirect to HTTPS URL
3810
3811Daniel S (18 Feb 2008)
3812- We're no longer providing a very old ca-bundle in the curl tarball. You can
3813  get a fresh one downloaded and created with 'make ca-bundle' or you can get
3814  one from here => http://curl.haxx.se/docs/caextract.html if you want a fresh
3815  new one extracted from Mozilla's recent list of ca certs.
3816
3817  The configure option --with-ca-bundle now lets you specify what file to use
3818  as default ca bundle for your build. If not specified, the configure script
3819  will check a few known standard places for a global ca cert to use.
3820
3821Daniel 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
3831Daniel 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
3843Daniel 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
3848Yang Tse (10 Feb 2008)
3849- Bug report #1888932 (http://curl.haxx.se/bug/view.cgi?id=1888932) points out
3850  and provides test program that demonstrates that libcurl might not set error
3851  description message for error CURLE_COULDNT_RESOLVE_HOST for Windows threaded
3852  name resolver builds. Fixed now.
3853
3854Daniel 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
3858Daniel S (8 Feb 2008)
3859- Mike Hommey filed and fixed bug report #1889856
3860  (http://curl.haxx.se/bug/view.cgi?id=1889856): When using the gnutls ssl
3861  layer, cleaning-up and reinitializing curl ends up with https requests
3862  failing with "ASN1 parser: Element was not found" errors. Obviously a
3863  regression added in 7.16.3.
3864
3865Yang 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
3870Daniel S (8 Feb 2008)
3871- G�nter Knauf added lib/mk-ca-bundle.pl which gets the Firefox ca bundle and
3872  creates a suitable ca-bundle.crt file in PEM format for use with curl. The
3873  recommended way to run it is to use 'make ca-bundle' in the build tree root.
3874
3875Daniel Fandrich (7 Feb 2008)
3876- Added tests 1022 and 1023 to validate output of curl-config --version and
3877  --vernum
3878
3879Daniel 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
3884Yang 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
3888Daniel 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
3896Daniel S (31 Jan 2008)
3897- Niklas Angebrand made the cookie support in libcurl properly deal with the
3898  "HttpOnly" feature introduced by Microsoft and apparently also supported by
3899  Firefox: http://msdn2.microsoft.com/en-us/library/ms533046.aspx . HttpOnly
3900  is now supported when received from servers in HTTP headers, when written to
3901  cookie jars and when read from existing cookie jars.
3902
3903  I modified test case 31 and 46 to also do some basic HttpOnly testing.
3904
3905- Dmitry Kurochkin moved several struct fields from the connectdata struct to
3906  the SingleRequest one to make pipelining better. It is a bit tricky to keep
3907  them in the right place, to keep things related to the actual request or to
3908  the actual connection in the right place.
3909
3910Daniel 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
3917Version 7.18.0 (28 January 2008)
3918
3919Daniel 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
3924Daniel S (26 Jan 2008)
3925- Kevin Reed filed bug report #1879375
3926  (http://curl.haxx.se/bug/view.cgi?id=1879375) which describes how libcurl
3927  got lost in this scenario: proxy tunnel (or HTTPS over proxy), ask to do any
3928  proxy authentication and the proxy replies with an auth (like NTLM) and then
3929  closes the connection after that initial informational response.
3930
3931  libcurl would not properly re-initialize the connection to the proxy and
3932  continue the auth negotiation like supposed. It does now however, as it will
3933  now detect if one or more authentication methods were available and asked
3934  for, and will thus retry the connection and continue from there.
3935
3936- I made the progress callback get called properly during proxy CONNECT.
3937
3938Daniel 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
3942Yang Tse (22 Jan 2008)
3943- Check poll.h at configuration time, and use it when sys/poll.h unavailable
3944
3945Daniel 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
3950Yang 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
3954Daniel 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
3960Yang Tse (17 Jan 2008)
3961- Don't abort tests 518 and 537 when unable to raise the open-file soft limit.
3962
3963Daniel 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
3967Yang 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
3971Daniel 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
3981Daniel 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
3987Daniel S (14 Jan 2008)
3988- Joe Malicki filed bug report #1871269
3989  (http://curl.haxx.se/bug/view.cgi?id=1871269) and we could fix his hang-
3990  problem that occurred when doing a large HTTP POST request with the
3991  response-body read from a callback.
3992
3993Daniel 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
4004Daniel 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
4016Daniel S (10 Jan 2008)
4017- Michal Marek made curl-config --libs not include /usr/lib64 in the output
4018  (it already before skipped /usr/lib).  /usr/lib64 is the default library
4019  directory on many 64bit systems and it's unlikely that anyone would use the
4020  path privately on systems where it's not.
4021
4022- Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allow
4023  libcurl to seek in a given input stream. This is particularly important when
4024  doing upload resumes when there's already a huge part of the file present
4025  remotely. Before, and still if this callback isn't used, libcurl will read
4026  and through away the entire file up to the point to where the resuming
4027  begins (which of course can be a slow opereration depending on file size,
4028  I/O bandwidth and more). This new function will also be preferred to get
4029  used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when
4030  doing multi-stage HTTP auth with POST/PUT.
4031
4032- Nikitinskit Dmitriy filed bug report #1868255
4033  (http://curl.haxx.se/bug/view.cgi?id=1868255) with a patch. It identifies
4034  and fixes a problem with parsing WWW-Authenticate: headers with additional
4035  spaces in the line that the parser wasn't written to deal with.
4036
4037Daniel 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
4042Daniel S (6 Jan 2008)
4043- Jeff Johnson filed bug report #1863171
4044  (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
4045  libcurl's date parser didn't accept a +1300 time zone which actually is used
4046  fairly often (like New Zealand's Dailight Savings Time), so I modified the
4047  parser to now accept up to and including -1400 to +1400.
4048
4049Daniel 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
4060Daniel 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
4066Yang 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
4071Daniel 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
4093Daniel 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
4098Daniel S (27 Dec 2007)
4099- Dmitry Kurochkin mentioned a flaw
4100  (http://curl.haxx.se/mail/lib-2007-12/0252.html) in detect_proxy() which
4101  failed to set the bits.proxy variable properly when an environment variable
4102  told libcurl to use a http proxy.
4103
4104Daniel S (26 Dec 2007)
4105- In an attempt to repeat the problem in bug report #1850730
4106  (http://curl.haxx.se/bug/view.cgi?id=1850730) I wrote up test case 552. The
4107  test is doing a 70K POST with a read callback and an ioctl callback over a
4108  proxy requiring Digest auth. The test case code is more or less identical to
4109  the test recipe code provided by Spacen Jasset (who submitted the bug
4110  report).
4111
4112Daniel S (25 Dec 2007)
4113- Gary Maxwell filed bug report #1856628
4114  (http://curl.haxx.se/bug/view.cgi?id=1856628) and provided a fix for the
4115  (small) memory leak in the SSL session ID caching code. It happened when a
4116  previous entry in the cache was re-used.
4117
4118Daniel Fandrich (19 Dec 2007)
4119- Ensure that nroff doesn't put anything but ASCII characters into the
4120  --manual text.
4121
4122Yang Tse (18 Dec 2007)
4123- MSVC 9.0 (VS2008) does not support Windows build targets prior to WinXP,
4124  and makes wrong asumptions of build target when it isn't specified. So,
4125  if no build target has been defined we will target WinXP when building
4126  curl/libcurl with MSVC 9.0 (VS2008).
4127
4128- (http://curl.haxx.se/mail/archive-2007-12/0039.html) reported and fixed
4129  a file truncation problem on Windows build targets triggered when retrying
4130  a download with curl.
4131
4132Daniel 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
4137Daniel S (13 Dec 2007)
4138- David Wright filed bug report #1849764
4139  (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
4140  identified a problem for re-used connections that previously had sent
4141  Expect: 100-continue and in some situations the subsequent POST (that didn't
4142  use Expect:) still had the internal flag set for its use. David's fix (that
4143  makes the setting of the flag in every single request unconditionally) is
4144  fine and is now used!
4145
4146Daniel 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
4150Daniel S (9 Dec 2007)
4151- Andrew Moise filed bug report #1847501
4152  (http://curl.haxx.se/bug/view.cgi?id=1847501) and pointed out a memcpy()
4153  that should be memmove() in the convert_lineends() function.
4154
4155Daniel 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
4172Daniel 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
4179Daniel S (3 Dec 2007)
4180- Ray Pekowski filed bug report #1842029
4181  (http://curl.haxx.se/bug/view.cgi?id=1842029) in which he identified a
4182  problem with SSL session caching that prevent it from working, and provided
4183  the associated fix!
4184
4185- Now libcurl (built with OpenSSL) doesn't return error anymore if the remote
4186  SSL-based server doesn't present a certificate when the request is told to
4187  ignore certificate verification anyway.
4188
4189- Michal Marek introduced CURLOPT_PROXY_TRANSFER_MODE which is used to control
4190  the appending of the "type=" thing on FTP URLs when they are passed to a
4191  HTTP proxy. Some proxies just don't like that appending (which is done
4192  unconditionally in 7.17.1), and some proxies treat binary/ascii transfers
4193  better with the appending done!
4194
4195Daniel 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
4203Daniel 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
4213Daniel 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
4224Yang 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
4228Daniel S (22 Nov 2007)
4229- Alessandro Vesely helped me improve the --data-urlencode's syntax, parser
4230  and documentation.
4231
4232Daniel 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
4239Daniel 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
4251Daniel S (18 Nov 2007)
4252- Rob Crittenden fixed SSL connections with NSS done with the multi-interface
4253
4254Daniel 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
4261Daniel S (16 Nov 2007)
4262- Ates Goral identified a problem in http.c:add_buffer_send() when a debug
4263  callback was used, as it could wrongly pass on a bad size for the outgoing
4264  HTTP header. The bad size would be a very large value as it was a wrapped
4265  size_t content. This happened when the whole HTTP request failed to get sent
4266  in one single send.  http://curl.haxx.se/mail/lib-2007-11/0165.html
4267
4268Daniel 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
4276Yang Tse (14 Nov 2007)
4277- Fix a variable potential wrapping in add_buffer() when using absolutely
4278  huge send buffer sizes.
4279
4280Daniel 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
4284Daniel S (12 Nov 2007)
4285- Bug report #1830637 (http://curl.haxx.se/bug/view.cgi?id=1830637), which was
4286  forwarded from the Gentoo bug tracker by Daniel Black and was originally
4287  submitted by Robin Johnson, pointed out that libcurl would do bad memory
4288  references when it failed and bailed out before the handler thing was
4289  setup. My fix is not done like the provided patch does it, but instead I
4290  make sure that there's never any chance for a NULL pointer in that struct
4291  member.
4292
4293Yang Tse (10 Nov 2007)
4294- Vikram Saxena (http://curl.haxx.se/mail/lib-2007-11/0096.html) pointed out
4295  that the pollfd struct was being multi defined when using VS2008. This is
4296  now fixed in /curl/lib/select.h
4297
4298Daniel S (8 Nov 2007)
4299- Bug report #1823487 (http://curl.haxx.se/bug/view.cgi?id=1823487) pointed
4300  out that SFTP requests didn't use persistent connections. Neither did SCP
4301  ones.  I gave the SSH code a good beating and now both SCP and SFTP should
4302  use persistent connections fine. I also did a bunch of indent changes as
4303  well as a bug fix for the "keyboard interactive" auth.
4304
4305Dan 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
4310Yang Tse (6 Nov 2007)
4311- Bug report #1824894 (http://curl.haxx.se/bug/view.cgi?id=1824894) pointed
4312  out a problem in curl.h when building C++ apps with MSVC. To fix it, the
4313  inclusion of header files in curl.h is moved outside of the C++ extern "C"
4314  linkage block.
4315
4316Daniel 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
4321Dan 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
4325Dan 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
4332Dan F (30 October 2007)
4333- Fixed an OOM problem with file: URLs
4334
4335- Moved Curl_file_connect into the protocol handler struct
4336
4337Dan 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
4341Daniel 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
4347Version 7.17.1 (29 October 2007)
4348
4349Dan F (25 October 2007)
4350- Added the --static-libs option to curl-config
4351
4352Daniel 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
4357Patrick 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
4362Daniel 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
4370Dan 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
4379Daniel 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
4385Daniel S (23 October 2007)
4386- Bug report #1812190 (http://curl.haxx.se/bug/view.cgi?id=1812190) points out
4387  that libcurl tried to re-use connections a bit too much when using non-SSL
4388  protocols tunneled over a HTTP proxy.
4389
4390Daniel S (22 October 2007)
4391- Michal Marek forwarded the bug report
4392  https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to
4393  FTP that caused memory havoc. His work together with my efforts created two
4394  fixes:
4395
4396  #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with
4397       at connection cleanup, at which time the struct HandleData could be
4398       used by another connection.
4399       Also, the unused char *urlpath member is removed from struct FTP.
4400
4401  #2 - provide a Curl_reset_reqproto() function that frees
4402       data->reqdata.proto.* on connection setup if needed (that is if the
4403       SessionHandle was used by a different connection).
4404
4405  A long-term goal is of course to somehow get rid of how the reqdata struct
4406  is used, as it is too error-prone.
4407
4408- Bug report #1815530 (http://curl.haxx.se/bug/view.cgi?id=1815530) points out
4409  that specifying a proxy with a trailing slash didn't work (unless it also
4410  contained a port number).
4411
4412Patrick 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
4416Patrick 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
4420Dan F (11 October 2007)
4421- Fixed the -l option of runtests.pl
4422
4423- Added support for skipping tests based on key words.
4424
4425Daniel S (9 October 2007)
4426- Michal Marek removed the no longer existing return codes from the curl.1
4427  man page.
4428
4429Daniel 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
4436Daniel 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
4444Daniel 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
4455Yang Tse (3 October 2007)
4456- Fixed issue related with the use of ares_timeout() result.
4457
4458Daniel 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
4475Daniel S (2 October 2007)
4476- libcurl now handles chunked-encoded CONNECT responses
4477
4478Daniel 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
4484Daniel S (29 September 2007)
4485- Immanuel Gregoire fixed a problem with persistent transfers over SFTP.
4486
4487Daniel 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
4491Dan 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
4495Daniel 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
4514Daniel 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
4519Daniel 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
4524Daniel 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
4549Daniel 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
4556Dan 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
4563Daniel S (15 September 2007)
4564- Michal Marek made libcurl automatically append ";type=<a|i>" when using HTTP
4565  proxies for FTP urls.
4566
4567- G�nter Knauf fixed LDAP builds in the Windows makefiles and fixed LDAPv3
4568  support on Windows.
4569
4570Dan F (13 September 2007)
4571- Added LDAPS, SCP and SFTP to curl-config --protocols. Removed and
4572  fixed some AC_SUBST configure entries.
4573
4574Version 7.17.0 (13 September 2007)
4575
4576Daniel S (12 September 2007)
4577- Bug report #1792649 (http://curl.haxx.se/bug/view.cgi?id=1792649) pointed
4578  out a problem with doing an empty upload over FTP on a re-used connection.
4579  I added test case 541 to reproduce it and to verify the fix.
4580
4581- I noticed while writing test 541 that the FTP code wrongly did a CWD on the
4582  second transfer as it didn't store and remember the "" path from the
4583  previous transfer so it would instead CWD to the entry path as stored. This
4584  worked, but did a superfluous command. Thus, test case 541 now also verifies
4585  this fix.
4586
4587Dan 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
4594Daniel S (5 September 2007)
4595- Continued the work on a fix for #1779054
4596  (http://curl.haxx.se/bug/view.cgi?id=1779054). My previous fix from August
4597  24 was not complete (either) but could accidentally "forget" parts of a
4598  server response which led to faulty server response time-out errors.
4599
4600Dan F (5 September 2007)
4601- Minix doesn't support getsockopt on UDP sockets or send/recv on TCP
4602  sockets.
4603
4604Dan 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
4617Dan 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
4667Dan F (28 August 2007)
4668- Some minor internal type and const changes based on a splint scan.
4669
4670Daniel S (24 August 2007)
4671- Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
4672  out that libcurl didn't deal with large responses from server commands, when
4673  the single response was consisting of multiple lines but of a total size of
4674  16KB or more. Dan Fandrich improved the ftp test script and provided test
4675  case 1006 to repeat the problem, and I fixed the code to make sure this new
4676  test case runs fine.
4677
4678Patrick 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
4682Daniel S (23 August 2007)
4683- Bug report #1779751 (http://curl.haxx.se/bug/view.cgi?id=1779751) pointed
4684  out that doing first a file:// upload and then an FTP upload crashed libcurl
4685  or at best caused furious valgrind complaints. Fixed now!
4686
4687Daniel S (22 August 2007)
4688- Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointed
4689  out that libcurl didn't deal with very long (>16K) FTP server response lines
4690  properly. Starting now, libcurl will chop them off (thus the client app will
4691  not get the full line) but survive and deal with them fine otherwise. Test
4692  case 1003 was added to verify this.
4693
4694Daniel 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
4700Daniel S (18 August 2007)
4701- Robson Braga Araujo filed bug report #1776232
4702  (http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling
4703  Curl_client_write(), passing on a const string that the caller may not
4704  modify and yet it does (on some platforms).
4705
4706- Robson Braga Araujo filed bug report #1776235
4707  (http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY
4708  on a directory would do a "SIZE (null)" request. This is now fixed and test
4709  case 1000 was added to verify.
4710
4711Daniel 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
4716Daniel 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
4721Daniel 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
4733Dan F (8 August 2007)
4734- Song Ma noted a zlib memory leak in the illegal compressed header
4735  countermeasures code path.
4736
4737Daniel S (4 August 2007)
4738- Patrick Monnerat fixed curl_easy_escape() and curlx_strtoll() to work on
4739  non-ASCII systems.
4740
4741Daniel 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
4747Daniel S (2 August 2007)
4748- Scott Cantor filed bug report #1766320
4749  (http://curl.haxx.se/bug/view.cgi?id=1766320) pointing out that the libcurl
4750  code accessed two curl_easy_setopt() options (CURLOPT_DNS_CACHE_TIMEOUT and
4751  CURLOPT_DNS_USE_GLOBAL_CACHE) as ints even though they're documented to be
4752  passed in as longs, and that makes a difference on 64 bit architectures.
4753
4754- Dmitriy Sergeyev reported a regression: resumed file:// transfers broke
4755  after 7.16.2. This is much due to the different treatment file:// gets
4756  internally, but now I added test 231 to make it less likely to happen again
4757  without us noticing!
4758
4759Daniel 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
4778Daniel 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
4783Daniel S (29 July 2007)
4784- Jayesh A Shah filed bug report #1759542
4785  (http://curl.haxx.se/bug/view.cgi?id=1759542) identifying a rather serious
4786  problem with FTPS: libcurl closed the data connection socket and then later
4787  in the flow it would call the SSL layer to do SSL shutdown which then would
4788  use a socket that had already been closed - so if the application had opened
4789  a new one in the mean time, libcurl could send gibberish that way! I worked
4790  with Greg Zavertnik to properly diagnose and fix this. The fix affects code
4791  for all SSL libraries we support, but it has only been truly verified to
4792  work fine for the OpenSSL version. The others have only been code reviewed.
4793
4794Daniel 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
4798Dan 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
4803Daniel 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
4834Daniel 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
4841Daniel S (20 July 2007)
4842- James Housley fixed the SFTP PWD command to work.
4843
4844- Ralf S. Engelschall filed bug report #1757328
4845  (http://curl.haxx.se/bug/view.cgi?id=1757328) and submitted a patch. It
4846  turns out we broke login to FTP servers that don't require (nor understand)
4847  PASS after the USER command. The breakage was done as part of the krb5
4848  commit so a krb-using person needs to verify that the current version now
4849  works or if we need to fix it (in a different way of course).
4850
4851Dan 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
4857Daniel 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
4865Daniel S (13 July 2007)
4866- Colin Hogben filed bug report #1750274
4867  (http://curl.haxx.se/bug/view.cgi?id=1750274) and submitted a patch for the
4868  case where libcurl did a connect attempt to a non-listening port and didn't
4869  provide a human readable error string back.
4870
4871- Daniel Cater fixes:
4872  1 - made 'make vc8' work on windows.
4873  2 - made libcurl itself built with CURL_NO_OLDIES defined (which doesn't
4874      define the symbols for backwards source compatibility)
4875  3 - updated libcurl-errors.3
4876  4 - added CURL_DISABLE_TFTP to docs/INSTALL
4877
4878Daniel S (12 July 2007)
4879- Made the krb5 code build with Heimdal's GSSAPI lib.
4880
4881Dan 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
4888Daniel 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
4897Daniel 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
4904Dan 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
4913Version 7.16.4 (10 July 2007)
4914
4915Daniel S (10 July 2007)
4916- Kees Cook notified us about a security flaw
4917  (http://curl.haxx.se/docs/adv_20070710.html) in which libcurl failed to
4918  properly reject some outdated or not yet valid server certificates when
4919  built with GnuTLS. Kees also provided the patch.
4920
4921James 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
4927Daniel 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
4935Daniel 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
4945Daniel 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
4954Daniel 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
4960Version 7.16.3 (25 June 2007)
4961
4962Daniel S (23 June 2007)
4963- As reported by "Tro" in http://curl.haxx.se/mail/lib-2007-06/0161.html and
4964  http://curl.haxx.se/mail/lib-2007-06/0238.html, libcurl didn't properly do
4965  no-body requests on FTP files on re-used connections properly, or at least
4966  it didn't provide the info back in the header callback properly in the
4967  subsequent requests.
4968
4969Daniel S (21 June 2007)
4970- Gerrit Bruchh�user pointed out a warning that the Intel(R) Thread Checker
4971  tool reports and it was indeed a legitimate one and it is one fixed. It was
4972  a use of a share without doing the proper locking first.
4973
4974Daniel S (20 June 2007)
4975- Adam Piggott filed bug report #1740263
4976  (http://curl.haxx.se/bug/view.cgi?id=1740263). Adam discovered that when
4977  getting a large amount of URLs with curl, they were fetched slower and
4978  slower... which turned out to be because the --libcurl data collecting which
4979  wrongly always was enabled, but no longer is...
4980
4981Daniel S (18 June 2007)
4982- Robson Braga Araujo filed bug report #1739100
4983  (http://curl.haxx.se/bug/view.cgi?id=1739100) that mentioned that libcurl
4984  could not actually list the contents of the root directory of a given FTP
4985  server if the login directory isn't root. I fixed the problem and added
4986  three test cases (one is disabled for now since I identified KNOWN_BUGS #44,
4987  we cannot use --ftp-method nocwd and list ftp directories).
4988
4989Daniel S (14 June 2007)
4990- Shmulik Regev:
4991
4992  I've encountered (and hopefully fixed) a problem involving proxy CONNECT
4993  requests and easy handles state management. The problem isn't simple to
4994  reproduce since it depends on socket state. It only manifests itself when
4995  working with non-blocking sockets.
4996
4997  Here is the scenario:
4998
4999  1. in multi_runsingle the easy handle is in the CURLM_STATE_WAITCONNECT and
5000  calls Curl_protocol_connect
5001
5002  2. in Curl_proxyCONNECT, line 1247, if the socket isn't ready the function
5003  returns and conn->bits.tunnel_connecting is TRUE
5004
5005  3. when the call to Curl_protocol_connect returns the protocol_connect flag
5006  is false and the easy state is changed to CURLM_STATE_PROTOCONNECT which
5007  isn't correct if a proxy is used.  Rather CURLM_STATE_WAITPROXYCONNECT
5008  should be used.
5009
5010  I discovered this while performing an HTTPS request through a proxy (squid)
5011  on my local network. The problem caused openssl to fail as it read the proxy
5012  response to the CONNECT call ('HTTP/1.0 Established') rather than the SSL
5013  handshake (the exact openssl error was 'wrong ssl version' but this isn't
5014  very important)
5015
5016- Dave Vasilevsky filed bug report #1736875
5017  (http://curl.haxx.se/bug/view.cgi?id=1736875) almost simultanouesly as Dan
5018  Fandrich mentioned a related build problem on the libcurl mailing list:
5019  http://curl.haxx.se/mail/lib-2007-06/0131.html. Both problems had the same
5020  reason: the definitions of the POLL* defines and the pollfd struct in the
5021  libcurl code was depending on HAVE_POLL instead of HAVE_SYS_POLL_H.
5022
5023Daniel S (13 June 2007)
5024- Tom Regner provided a patch and worked together with James Housley, so now
5025  CURLOPT_FTP_CREATE_MISSING_DIRS works for SFTP connections as well as FTP
5026  ones.
5027
5028- Rich Rauenzahn filed bug report #1733119
5029  (http://curl.haxx.se/bug/view.cgi?id=1733119) and we collaborated on the
5030  fix.  The problem is that for 64bit HPUX builds, several socket-related
5031  functions would still assume int (32 bit) arguments and not socklen_t (64
5032  bit) ones.
5033
5034Daniel 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
5038Dan 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
5049Daniel S (6 June 2007)
5050- -s/--silent can now be used to toggle off the silence again if used a second
5051  time.
5052
5053Daniel 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
5057Daniel S (31 May 2007)
5058- Feng Tu made (lib)curl support "upload" resuming work for file:// URLs.
5059
5060Daniel 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
5074Daniel 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
5080Daniel S (25 May 2007)
5081- Rob Crittenden fixed bug #1705802
5082  (http://curl.haxx.se/bug/view.cgi?id=1705802), which was filed by Daniel
5083  Black identifying several FTP-SSL test cases fail when we build libcurl with
5084  NSS for TLS/SSL. Listed as #42 in KNOWN_BUGS.
5085
5086Daniel S (24 May 2007)
5087- Song Ma filed bug report #1724016
5088  (http://curl.haxx.se/bug/view.cgi?id=1724016) noticing that downloading
5089  glob-ranges for TFTP was broken in CVS. Fixed now.
5090
5091- 'mytx' in bug report #1723194 (http://curl.haxx.se/bug/view.cgi?id=1723194)
5092  pointed out that the warnf() function in the curl tool didn't properly deal
5093  with the cases when excessively long words were used in the string to chop
5094  up.
5095
5096Daniel 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
5102Daniel S (18 May 2007)
5103- Feng Tu reported that curl -w did wrong on TFTP transfers in bug report
5104  #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the
5105  transfer-related info "variables" were indeed overwritten with zeroes
5106  wrongly and have now been adjusted. The upload size still isn't accurate.
5107
5108Daniel S (17 May 2007)
5109- Feng Tu pointed out a division by zero error in the TFTP connect timeout
5110  code for timeouts less than five seconds, and also provided a fix for it.
5111  Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
5112
5113Dan F (16 May 2007)
5114- Added support for compiling under Minix 3.1.3 using ACK.
5115
5116Dan 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
5127Dan 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
5132Dan F (8 May 2007)
5133- Added FTPS test cases 406 and 407
5134
5135Daniel 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
5142Daniel 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
5146Daniel S (2 May 2007)
5147- Anders Gustafsson remarked that requiring CURLOPT_HTTP_VERSION set to 1.0
5148  when CURLOPT_HTTP200ALIASES is used to avoid the problem mentioned below is
5149  not very nice if the client wants to be able to use _either_ a HTTP 1.1
5150  server or one within the aliases list... so starting now, libcurl will
5151  simply consider 200-alias matches the to be HTTP 1.0 compliant.
5152
5153- Tobias Rundstr�m reported a problem they experienced with xmms2 and recent
5154  libcurls, which turned out to be the 25-nov-2006 change which treats HTTP
5155  responses without Content-Length or chunked encoding as without bodies. We
5156  now added the conditional that the above mentioned response is only without
5157  body if the response is HTTP 1.1.
5158
5159- Jeff Pohlmeyer improved the hiperfifo.c example to use the
5160  CURLMOPT_TIMERFUNCTION callback option.
5161
5162- Set the timeout for easy handles to expire really soon after addition or
5163  when CURLM_CALL_MULTI_PERFORM is returned from curl_multi_socket*/perform,
5164  to make applications using only curl_multi_socket() to properly function
5165  when adding easy handles "on the fly". Bug report and test app provided by
5166  Michael Wallner.
5167
5168Dan 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
5173Daniel 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
5184Daniel 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
5190Dan 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
5195Daniel 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
5202Yang Tse (25 April 2007)
5203- Steve Little fixed compilation on VMS 64-bit mode
5204
5205Daniel 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
5210Dan 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
5215Daniel S (22 April 2007)
5216- Song Ma's warning if -r/--range is given with a "bad" range, also noted in
5217  the man page now.
5218
5219- Daniel Black filed bug #1705177
5220  (http://curl.haxx.se/bug/view.cgi?id=1705177) where --without-ssl
5221  --with-gnutl outputs a warning about SSL not being enabled even though GnuTLS
5222  was found and used.
5223
5224Daniel S (21 April 2007)
5225- Daniel Black filed bug #1704675
5226  (http://curl.haxx.se/bug/view.cgi?id=1704675) identifying a double-free
5227  problem in the SSL-dealing layer, telling GnuTLS to free NULL credentials on
5228  closedown after a failure and a bad #ifdef for NSS when closing down SSL.
5229
5230Yang 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
5236Daniel 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
5242Dan F (17 April 2007)
5243- Added test cases 296, 297 and 298 to test --ftp-method handling
5244
5245Daniel 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
5259Daniel 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
5263Dan 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
5268Yang 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
5273Daniel S (12 April 2007)
5274- Song Ma found a memory leak in the if2ip code if you pass in an interface
5275  name longer than the name field of the ifreq struct (typically 6 bytes), as
5276  then it wouldn't close the used dummy socket. Bug #1698974
5277  (http://curl.haxx.se/bug/view.cgi?id=1698974)
5278
5279Version 7.16.2 (11 April 2007)
5280
5281Yang 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
5286Daniel S (9 April 2007)
5287- Nick Zitzmann did ssh.c cleanups
5288
5289Daniel S (3 April 2007)
5290- Rob Jones fixed better #ifdef'ing for a bunch of #include lines.
5291
5292Daniel 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
5329Daniel 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
5336Daniel 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
5342Dan 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
5351Yang 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
5358Daniel 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
5362Dan 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
5374Yang 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
5387Yang 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
5391Dan F (15 March 2007)
5392- Various memory leaks plugged and NULL pointer fixes made in the ssh code.
5393
5394Daniel (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
5398Daniel (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
5419Dan 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
5424Daniel (9 March 2007)
5425- Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6.
5426
5427- Robert A. Monat improved the maketgz and VC6/8 generating to set the correct
5428  machine type too.
5429
5430- Justin Fletcher fixed a file descriptor leak in the curl tool when trying to
5431  upload a file it couldn't open. Bug #1676581
5432  (http://curl.haxx.se/bug/view.cgi?id=1676581)
5433
5434Dan F (9 March 2007)
5435- Updated the test harness to check for protocol support before running each
5436  test, fixing KNOWN_BUGS #11.
5437
5438Dan 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
5446Dan F (7 March 2007)
5447- Honour --ftp-ssl-control on ftps:// URLs to allow encrypted control and
5448  unencrypted data connections.
5449
5450Dan F (6 March 2007)
5451- Fixed a couple of improper pointer uses detected by valgrind in test
5452  cases 181 & 216.
5453
5454Daniel (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
5463Daniel (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
5477Daniel (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
5482Daniel (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
5487Daniel (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
5499Daniel (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
5504Daniel (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
5513Daniel (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
5522Daniel (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
5526Dan 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
5531Daniel (13 February 2007)
5532- The default password for anonymous FTP connections is now changed to be
5533  "ftp@example.com".
5534
5535- Robert A. Monat made libcurl build fine with VC2005 - it doesn't have
5536  gmtime_r() like the older VC versions. He also made use of some machine-
5537  specific defines to differentiate the "OS" define.
5538
5539Daniel (12 February 2007)
5540- Rob Crittenden added support for NSS (Network Security Service) for the
5541  SSL/TLS layer. http://www.mozilla.org/projects/security/pki/nss/
5542
5543  This is the fourth supported library for TLS/SSL that libcurl supports!
5544
5545- Shmulik Regev fixed so that the final CRLF of HTTP response headers are sent
5546  to the debug callback.
5547
5548- Shmulik Regev added CURLOPT_HTTP_CONTENT_DECODING and
5549  CURLOPT_HTTP_TRANSFER_DECODING that if set to zero will disable libcurl's
5550  internal decoding of content or transfer encoded content. This may be
5551  preferable in cases where you use libcurl for proxy purposes or similar. The
5552  command line tool got a --raw option to disable both at once.
5553
5554- release tarballs made with maketgz will from now on have a LIBCURL_TIMESTAMP
5555  define set to hold the exact date and time of when the tarball was built, as
5556  a human readable string using the UTC time zone.
5557
5558- Jeff Pohlmeyer fixed a flaw in curl_multi_add_handle() when adding a handle
5559  that has an easy handle present in the "closure" list pending closure.
5560
5561Daniel (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
5567Daniel (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
5580Daniel (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
5588Version 7.16.1 (29 January 2007)
5589
5590Daniel (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
5595Daniel (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
5601Daniel (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
5607Dan 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
5612Daniel (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
5638Dan 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
5644Daniel (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
5650Dan 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
5655Daniel (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
5664Daniel (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
5669Daniel (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
5675Daniel (4 January 2007)
5676- David McCreedy made changes to allow base64 encoding/decoding to work on
5677  non-ASCII platforms.
5678
5679Daniel (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
5685Daniel (2 January 2007)
5686- Victor Snezhko helped us fix bug report #1603712
5687  (http://curl.haxx.se/bug/view.cgi?id=1603712) (known bug #36) --limit-rate
5688  (CURLOPT_MAX_SEND_SPEED_LARGE and CURLOPT_MAX_RECV_SPEED_LARGE) are broken
5689  on Windows (since 7.16.0, but that's when they were introduced as previous
5690  to that the limiting logic was made in the application only and not in the
5691  library). It was actually also broken on select()-based systems (as apposed
5692  to poll()) but we haven't had any such reports. We now use select(), Sleep()
5693  or delay() properly to sleep a while without waiting for anything input or
5694  output when the rate limiting is activated with the easy interface.
5695
5696- Modified libcurl.pc.in to use Libs.private for the libs libcurl itself needs
5697  to get built static. It has been mentioned before and was again brought to
5698  our attention by Nathanael Nerode who filed debian bug report #405226
5699  (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=405226).
5700
5701Daniel (29 December 2006)
5702- Make curl_easy_duphandle() set the magic number in the new handle.
5703
5704Daniel (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
5718Daniel (21 December 2006)
5719- Robson Braga Araujo reported bug #1618359
5720  (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
5721  patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
5722  enters an infinite loop, while curl 7.16.1-20061218 does one additional
5723  unnecessary request.
5724
5725  Fix: During the "Major overhaul introducing http pipelining support and
5726  shared connection cache within the multi handle." change, headerbytecount
5727  was moved to live in the Curl_transfer_keeper structure. But that structure
5728  is reset in the Transfer method, losing the information that we had about
5729  the header size. This patch moves it back to the connectdata struct.
5730
5731Daniel (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
5735Daniel (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
5746Daniel (6 December 2006)
5747- Sebastien Willemijns reported bug #1603712
5748  (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
5749  getting cut off prematurely when --limit-rate is used. While I found no such
5750  problems in my tests nor in my reading of the code, I found that the
5751  --limit-rate code was severly flawed (since it was moved into the lib, since
5752  7.15.5) when used with the easy interface and it didn't work as documented
5753  so I reworked it somewhat and now it works for my tests.
5754
5755Daniel (5 December 2006)
5756- Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
5757  passing a curl_off_t argument to the Curl_read_rewind() function which takes
5758  an size_t argument. Curl_read_rewind() also had debug code left in it and it
5759  was put in a different source file with no good reason when only used from
5760  one single spot.
5761
5762- Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
5763  no code present in the library that receives the option. Since it was not
5764  possible to use, we know that no current users exist and thus we simply
5765  removed it from the docs and made the code always use the default path of
5766  the code.
5767
5768- Jared Lundell filed bug report #1604956
5769  (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
5770  CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
5771  will always internally use no less than 1 entry in the connection cache.
5772
5773- Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
5774  the 7.16.0 release.
5775
5776- Martin Skinner brought back bug report #1230118 to haunt us once again.
5777  (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
5778  properly for all input dates on Windows. It was mostly seen on some TZ time
5779  zones using DST. Luckily, Martin also provided a fix.
5780
5781- Alexey Simak filed bug report #1600447
5782  (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
5783  FTP connections don't work with the multi interface. The problem is here
5784  that the multi interface state machine has a state during which it can wait
5785  for the data connection to connect, but the active connection is not done in
5786  the same step in the sequence as the passive one is so it doesn't quite work
5787  for active. The active FTP code still use a blocking function to allow the
5788  remote server to connect.
5789
5790  The fix (work-around is a better word) for this problem is to set the
5791  boolean prematurely that the data connection is completed, so that the "wait
5792  for connect" phase ends at once.
5793
5794  The proper fix, left for the future, is of course to make the active FTP
5795  case to act in a non-blocking way too.
5796
5797- Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
5798  HTTP upload was disconnected:
5799
5800  "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
5801  setting *only* POLLHUP on poll() when the conditions in my previous mail
5802  occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
5803  basically what was happening, is poll() was returning immediately (with
5804  POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
5805  POLLOUT was set. This still caused Curl_readwrite() to be called, which
5806  quickly returned. Then the transfer() loop kept continuing at full speed
5807  forever."
5808
5809Daniel (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
5815Daniel (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
5828Daniel (24 November 2006)
5829- James Housley did lots of work and introduced SFTP downloads.
5830
5831Daniel (13 November 2006)
5832- Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
5833  out a stack overwrite (and the corresponding fix) on 64bit Windows when
5834  dealing with HTTP chunked encoding.
5835
5836Daniel (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
5849Daniel (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
5854Daniel (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
5858Daniel (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
5865Daniel (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
5875Version 7.16.0 (30 October 2006)
5876
5877Daniel (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
5890Daniel (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
5894Daniel (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
5903Daniel (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
5909Daniel (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
5922Daniel (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
5930Dan 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
5937Daniel (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
5954Daniel (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
5959Daniel (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
5963Daniel (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
5968Daniel (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
5989Daniel (28 September 2006)
5990- Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
5991  would crash if a bad function sequence was used when shutting down after
5992  using the multi interface (i.e using easy_cleanup after multi_cleanup) so
5993  precautions have been added to make sure it doesn't any more - test case 529
5994  was added to verify.
5995
5996Daniel (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
6001Daniel (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
6007Daniel (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
6015Daniel (21 September 2006)
6016- Added test case 531 in an attempt to repeat bug report #1561470
6017  (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
6018  FTP upload fails with the multi interface. It did not, but I made a failed
6019  upload still assume the control connection to be fine.
6020
6021Daniel (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
6026Daniel (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
6031Daniel (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
6055Daniel (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
6062Daniel (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
6082Daniel (4 September 2006)
6083- Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
6084  patch that while not fixing things very nicely, it does make the SOCKS5
6085  proxy connection slightly better as it now acknowledges the timeout for
6086  connection and it no longer segfaults in the case when SOCKS requires
6087  authentication and you did not specify username:password.
6088
6089Daniel (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
6093Gisle (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
6099Daniel (29 August 2006)
6100- David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
6101  allow applications to set their own socket options.
6102
6103Daniel (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
6108Daniel (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
6114Daniel (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
6128Daniel (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
6134Daniel (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
6139Daniel (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
6145Version 7.15.5 (7 August 2006)
6146
6147Daniel (2 August 2006)
6148- Mark Lentczner fixed how libcurl was not properly doing chunked encoding
6149  if the header "Transfer-Encoding: chunked" was set by the application.
6150  http://curl.haxx.se/bug/view.cgi?id=1531838
6151
6152Daniel (1 August 2006)
6153- Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
6154  an unknown error number on glibc systems.
6155  http://curl.haxx.se/bug/view.cgi?id=1532289
6156
6157Daniel (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
6168Daniel (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
6173Daniel (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
6193Daniel (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
6201Daniel (25 July 2006)
6202- Georg Horn made the transfer timeout error message include more details.
6203
6204Daniel (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
6208Daniel (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
6215Daniel (14 July 2006)
6216- David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
6217  for FTP ASCII transfers.
6218
6219Daniel (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
6235Daniel (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
6239Daniel (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
6243Daniel (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
6248Daniel (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
6258Daniel (19 June 2006)
6259- Made -K on a file that couldn't be read cause a warning to be displayed.
6260
6261Daniel (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
6267Version 7.15.4 (12 June 2006)
6268
6269Daniel (8 June 2006)
6270- Brian Dessent fixed the code for cygwin in three distinct ways:
6271
6272  The first modifies {lib,src}/setup.h to not include the winsock headers
6273  under Cygwin.  This fixes the reported build problem.  Cygwin attempts as
6274  much as possible to emulate a posix environment under Windows.  This means
6275  that WIN32 is *not* #defined and (to the extent possible) everything is done
6276  as it would be on a *ix type system.  Thus <sys/socket.h> is the proper
6277  include, and even though winsock2.h is present, including it just introduces
6278  a whole bunch of incompatible socket API stuff.
6279
6280  The second is a patch I've included in the Cygwin binary packages for a
6281  while.  It skips two unnecessary library checks (-lwinmm and -lgdi32).  The
6282  checks are innocuous and they do succeed, but they pollute LIBS with
6283  unnecessary stuff which gets recorded as such in the libcurl.la file, which
6284  brings them into the build of any libcurl-downstream.  As far as I know
6285  these libs are really only necessary for mingw, so alternatively they could
6286  be designed to only run if $host matches *-*-mingw* but I took the safer
6287  route of skipping them for *-*-cygwin*.
6288
6289  The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
6290  with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
6291
6292Daniel (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
6296Daniel (27 May 2006)
6297- �scar Morales Viv� updated the libcurl.framework.make file.
6298
6299Daniel (26 May 2006)
6300- Olaf St�ben fixed a bug that caused Digest authentication with md5-sess to
6301  fail. When using the md5-sess, the result was not Md5 encoded and Base64
6302  transformed.
6303
6304Daniel (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
6308Daniel (24 May 2006)
6309- Tor Arntsen made test 271 run fine again since the TFTP path fix.
6310
6311Daniel (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
6320Daniel (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
6330Daniel (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
6337Daniel (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
6356Daniel (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
6385Daniel (5 May 2006)
6386- Roland Blom filed bug report #1481217
6387  (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
6388  Bini and David Byron. libcurl previously wrongly used GetLastError() on
6389  windows to get error details after socket-related function calls, when it
6390  really should use WSAGetLastError() instead.
6391
6392  When changing to this, the former function Curl_ourerrno() is now instead
6393  called Curl_sockerrno() as it is necessary to only use it to get errno from
6394  socket-related functions as otherwise it won't work as intended on Windows.
6395
6396Daniel (4 May 2006)
6397- Mark Eichin submitted bug report #1480821
6398  (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
6399  problem with how libcurl dealt with GnuTLS and a case where gnutls returned
6400  GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
6401  return code, making Curl_ssl_send() confuse the upper layer - causing random
6402  28 bytes trash data to get inserted in the transfered stream.
6403
6404  The proper fix was to make the Curl_gtls_send() function return the proper
6405  return codes that the callers would expect. The Curl_ossl_send() function
6406  already did this.
6407
6408Daniel (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
6416Daniel (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
6427Daniel (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
6432Daniel (21 April 2006)
6433- Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
6434
6435Daniel (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
6447Daniel (11 April 2006)
6448- #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
6449  typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
6450  since the struct timeval field tv_sec is an int while time_t is 64bit.
6451
6452Daniel (10 April 2006)
6453- Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
6454  CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
6455  connection time-out!
6456
6457- I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
6458  sources. See the lib/README.multi_socket for implementation story with
6459  details. Don't expect it to work fully yet. I don't intend to blow any
6460  whistles or ring any bells about it until I'm more convinced it works at
6461  least somewhat reliably.
6462
6463Daniel (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
6471Daniel (5 April 2006)
6472- Michele Bini modified the NTLM code to work for his "weird IIS case"
6473  (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
6474  function in addition to the LM one and making some other adjustments in the
6475  order the different parts of the data block are sent in the Type-2 reply.
6476  Inspiration for this work was taken from the Firefox NTLM implementation.
6477
6478  I edited the existing 21(!) NTLM test cases to run fine with these news. Due
6479  to the fact that we now properly include the host name in the Type-2 message
6480  the test cases now only compare parts of that chunk.
6481
6482Daniel (28 March 2006)
6483- #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
6484  occurred when asking libcurl to follow HTTP redirects and the original URL
6485  had more than one question mark (?). Added test case 276 to verify.
6486
6487Daniel (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
6493Daniel (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
6498Daniel (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
6506Daniel (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
6518Version 7.15.3 (20 March 2006)
6519
6520Daniel (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
6538Daniel (16 March 2006)
6539- Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
6540  in the release archive.
6541
6542Daniel (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
6549Daniel (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
6559Daniel (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
6566Daniel (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
6570Daniel (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
6579Daniel (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
6584Daniel (27 February 2006)
6585- Marty Kuhrt pointed out that there were two VMS-specific files missing in
6586  the release archive.
6587
6588Version 7.15.2 (27 February 2006)
6589
6590Daniel (22 February 2006)
6591- Lots of work and analysis by "xbx___" in bug #1431750
6592  (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
6593  different but related bugs:
6594
6595  1) Removing an easy handle from a multi handle before the transfer is done
6596     could leave a connection in the connection cache for that handle that is
6597     in a state that isn't suitable for re-use. A subsequent re-use could then
6598     read from a NULL pointer and segfault.
6599
6600  2) When an easy handle was removed from the multi handle, there could be an
6601     outstanding c-ares DNS name resolve request. When the response arrived,
6602     it caused havoc since the connection struct it "belonged" to could've
6603     been freed already.
6604
6605  Now Curl_done() is called when an easy handle is removed from a multi handle
6606  pre-maturely (that is, before the transfer was complteted). Curl_done() also
6607  makes sure to cancel all (if any) outstanding c-ares requests.
6608
6609Daniel (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
6616Daniel (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
6620Daniel (18 February 2006)
6621- Ulf H�rnhammar fixed a format string (printf style) problem in the Negotiate
6622  code. It should however not be the cause of any troubles. He also fixed a
6623  few similar problems in the HTTP test server code.
6624
6625Daniel (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
6630Daniel (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
6639Daniel (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
6645Daniel (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
6649Daniel (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
6659Daniel (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
6667Daniel (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
6677Daniel (19 January 2006)
6678- Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
6679  (built IPv4-only) didn't work.
6680
6681Daniel (18 January 2006)
6682- As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
6683  the configure script complained about a missing "missing" script if you ran
6684  configure within a path whose name included one or more spaces. This is due
6685  to a flaw in automake (1.9.6 and earlier). I've now worked around it by
6686  including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
6687  be used instead of the one automake ships with. This kludge needs to be
6688  removed once we get an automake version with this problem corrected.
6689  Possibly we'll then need to convert this into a kludge depending on what
6690  automake version that is used and that is gonna be painful and I don't even
6691  want to think about that now...!
6692
6693Daniel (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
6699Daniel (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
6709Daniel (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
6713Daniel (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
6722Daniel (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
6769Daniel (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
6779Daniel (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
6784Daniel (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
6789Daniel (3 January 2006)
6790- Andres Garcia made the TFTP test server build with mingw.
6791Daniel (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
6796Daniel (12 December 2005)
6797- Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
6798
6799Version 7.15.1 (7 December 2005)
6800
6801Daniel (6 December 2005)
6802- Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
6803  Stefan Esser.
6804
6805  VULNERABILITY
6806
6807  libcurl's URL parser function can overflow a malloced buffer in two ways, if
6808  given a too long URL.
6809
6810  These overflows happen if you
6811
6812  1 - pass in a URL with no protocol (like "http://") prefix, using no slash
6813      and the string is 256 bytes or longer. This leads to a single zero byte
6814      overflow of the malloced buffer.
6815
6816  2 - pass in a URL with only a question mark as separator (no slash) between
6817      the host and the query part of the URL. This leads to a single zero byte
6818      overflow of the malloced buffer.
6819
6820  Both overflows can be made with the same input string, leading to two single
6821  zero byte overwrites.
6822
6823  The affected flaw cannot be triggered by a redirect, but the long URL must
6824  be passed in "directly" to libcurl. It makes this a "local" problem. Of
6825  course, lots of programs may still pass in user-provided URLs to libcurl
6826  without doing much syntax checking of their own, allowing a user to exploit
6827  this vulnerability.
6828
6829  There is no known exploit at the time of this writing.
6830
6831
6832Daniel (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
6836Daniel (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
6843Daniel (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
6847Daniel (16 November 2005)
6848- Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
6849  installed on 'make install' time.
6850
6851Daniel (14 November 2005)
6852- Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
6853  properly for a case, and so we did. We raised it even for non-SSPI builds
6854  but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
6855
6856- Jan Kunder's debian bug report
6857  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
6858  error message for when you try to upload a file and the requested directory
6859  doesn't exist on the target server.
6860
6861- Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
6862  lib/memdebug.h that showed up in his msvc builds.
6863
6864Daniel (13 November 2005)
6865- Debian bug report 338681 by Jan Kunder: make curl better detect and report
6866  bad limit-rate units:
6867  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
6868  error if a bad unit is used.
6869
6870- Thanks to this nice summary of poll() implementations:
6871  http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
6872  Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
6873  connectin closure so we check for that case (too) and re-enable poll for
6874  cygwin builds.
6875
6876Daniel (12 November 2005)
6877- Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
6878  right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
6879  poll() and use select() on cygwin too (we already do the same choice on Mac
6880  OS X)
6881
6882- Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
6883  client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
6884
6885Daniel (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
6899Daniel (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
6917Daniel (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
6932Daniel (27 October 2005)
6933- Nis Jorgensen filed bug report #1338648
6934  (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
6935  feature request, but anyway. It pointed out that --max-redirs did not allow
6936  it to be set to 0, which then would return an error code on the first
6937  Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
6938  set to 0, or -1 for infinity. Added test case 274 to verify.
6939
6940- tommink[at]post.pl reported in bug report #1337723
6941  (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
6942  binary data from stdin on Windows if the data contained control-Z (hex 1a)
6943  since that is treated as end-of-file when read in text mode. Gisle Vanem
6944  pointed out the fix, and I made both -T and --data-binary take advantage of
6945  it.
6946
6947- Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
6948  in the man page, curl would send an invalid HTTP Range: header. The correct
6949  way would be to use "-r [number]-" or even "-r -[number]". Starting now,
6950  curl will warn if this is discovered, and automatically append a dash to the
6951  range before passing it to libcurl.
6952
6953Daniel (25 October 2005)
6954- Amol Pattekar reported a bug with great detail and a fine example in bug
6955  #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
6956  interface and connecting to a host with multiple IP addresses, and one of
6957  the addresses fails to connect (the server must exist and respond, just not
6958  accept connections) libcurl leaks a socket descriptor. Thanks to the fine
6959  report, I could find and fix this.
6960
6961Daniel (22 October 2005)
6962- Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
6963  #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
6964  stream from a server and the server requests a "rehandshake", the current
6965  code simply returns this as an error. I have no good way to test this, but
6966  I've added a crude attempt of dealing with this situation slightly better -
6967  it makes a blocking handshake if this happens. Done like this because fixing
6968  this the "proper" way (that would handshake asynchronously) will require
6969  quite some work and I really need a good way to test this to do such a
6970  change.
6971
6972Daniel (21 October 2005)
6973- "Ofer" reported a problem when libcurl re-used a connection and failed to do
6974  it, it could then accidentally actually crash. Presumably, this concerns FTP
6975  connections.  http://curl.haxx.se/bug/view.cgi?id=1330310
6976
6977- Temprimus improved the MSVC makefile so that the static debug SSL libs are
6978  linked to the executable and not to the libcurld.lib
6979  http://curl.haxx.se/bug/view.cgi?id=1326676
6980
6981- Bradford Bruce made the windows resolver code properly return
6982  CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
6983  errors (as documented).
6984
6985Daniel (20 October 2005)
6986- Dave Dribin made libcurl understand and handle cases when the server
6987  (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
6988  never happen in a sane world, libcurl previously got into an infinite loop
6989  when this occurred. Dave added test 273 to verify this.
6990
6991- Temprimus improved the MSVC makefile: "makes a build option available so if
6992  you set rtlibcfg=static for the make, then it would build with /MT. The
6993  default behaviour is /MD (the original)."
6994  http://curl.haxx.se/bug/view.cgi?id=1326665
6995
6996Daniel (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
7002Version 7.15.0 (13 October 2005)
7003
7004Daniel (12 October 2005)
7005- Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
7006  code that would overflow a buffer if given a too long user name or domain
7007  name. This would happen if you enable NTLM authentication and either
7008
7009  A - pass in a user name and domain name to libcurl that together are longer
7010      than 192 bytes
7011
7012  B - allow (lib)curl to follow HTTP "redirects" (Location: and the
7013      appropriate HTTP 30x response code) and the new URL contains a URL with
7014      a user name and domain name that together are longer than 192 bytes
7015
7016  See http://curl.haxx.se/docs/security.html for further details and updates
7017
7018Daniel (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
7024Daniel (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
7031Daniel (27 September 2005)
7032- David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
7033  that identified a silly problem with Content-Range: headers with the 'bytes'
7034  keyword written in a different case than all lowercase! It would cause a
7035  segfault!
7036
7037- TJ Saunders of the proftpd project identified and pointed out problems with
7038  the modified FTPS negotiation change of August 19 2005. Thus, we revert the
7039  change back to pre-7.14.1 status.
7040
7041Daniel (21 September 2005)
7042- Fixed "cut off" sentence in the libcurl-tutorial man page:
7043  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
7044
7045- Clarified in the curl_easy_setopt man page what the default
7046  CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
7047  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
7048
7049- Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
7050  sometimes doesn't fill in the buffer even though it is supposed to:
7051  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
7052
7053- When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
7054  error string set.
7055
7056Daniel (19 September 2005)
7057- Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
7058
7059Daniel (15 September 2005)
7060- Added a TFTP server to the test suite and made the test suite capable of
7061  using it.
7062
7063Daniel (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
7072Daniel (6 September 2005)
7073- Now curl warns if an unknown variable is used in the -w/--writeout argument.
7074
7075Daniel (4 September 2005)
7076- I applied Nicolas Fran�ois' man page patch he posted to the Debian bug
7077  tracker. It corrected two lines that started with apostrophes, which isn't
7078  legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
7079
7080- Added --ftp-skip-pasv-ip to the command line tool, that sets the new
7081  CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
7082  connection's IP address when setting up the data connection instead of
7083  extractting the IP address from the PASV response. It has turned out this
7084  feature is frequently needed by people to circumvent silly servers and silly
7085  firewalls, especially when FTPS is used and the PASV command-response is
7086  sent encrtyped.
7087
7088  Sponsored by CU*Answers
7089
7090Daniel (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
7095Version 7.14.1 (1 September 2005)
7096
7097Daniel (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
7108Daniel (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
7126Daniel (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
7136Daniel (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
7147Daniel (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
7153Daniel (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
7160Daniel (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
7167Daniel (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
7173Daniel (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
7180Daniel (8 August 2005)
7181- Jon Grubbs filed bug report #1249962
7182  (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
7183  with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
7184  switches to pure HTTP internally when an HTTP proxy is used, even for FTP
7185  URLs. The problem would also occur with other multi-pass auth methods.
7186
7187Daniel (7 August 2005)
7188- When curl is built with GnuTLS, curl-config didn't include "SSL" when
7189  --features was used.
7190
7191Daniel (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
7195Daniel (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
7204Daniel (13 July 2005)
7205- Diego Casorran provided patches to make curl build fine on Amiga again.
7206
7207Daniel (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
7213Daniel (5 July 2005)
7214- Gisle Vanem came up with a nice little work-around for bug #1230118
7215  (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
7216  libc time functions may return data one hour off if TZ is not set and
7217  automatic DST adjustment is enabled. This made curl_getdate() return wrong
7218  value, and it also concerned internal cookie expirations etc.
7219
7220Daniel (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
7238Daniel (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
7244Daniel (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
7250Daniel (22 June 2005)
7251- David Shaw updated libcurl.m4
7252
7253Daniel (14 June 2005)
7254- Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
7255  (http://curl.haxx.se/bug/view.cgi?id=1216500).  Comment in
7256  http://curl.haxx.se/mail/lib-2005-06/0059.html
7257
7258Daniel (13 June 2005)
7259- Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
7260  reverted patch).
7261
7262Daniel (9 June 2005)
7263- Incorporated Tupone's findtool fix in buildconf (slightly edited)
7264
7265- Incorporated Tupone's head -n fix in buildconf.
7266
7267Daniel (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
7271Daniel (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
7282Daniel (3 June 2005)
7283- Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
7284  http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
7285
7286- Andres Garcia provided yet another text mode patch for several test cases so
7287  that they do text comparisions better on Windows (newline-wise).
7288
7289Daniel (1 June 2005)
7290- The configure check for c-ares now adds the cares lib before the other libs,
7291  to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
7292  and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
7293
7294Daniel (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
7300Daniel (30 May 2005)
7301- Eric Cooper reported about a problem with HTTP servers that responds with
7302  binary zeroes within the headers. They confused libcurl to do wrong so the
7303  downloaded headers become incomplete. The fix is now verified with test case
7304  262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
7305
7306Daniel (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
7312Daniel (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
7320Daniel (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
7325Daniel (18 May 2005)
7326- John McGowan identified a problem in bug report #1204435
7327  (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
7328  "http://somehost?data" as it added a slash too much in the request ("GET
7329  /?data/"...). Added test case 260 to verify.
7330
7331- The configure check for strerror_r() failed to detect the proper API at
7332  times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
7333  version if the posix define wasn't set (since it _had_ found a strerror_r).
7334
7335Daniel (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
7340Version 7.14.0 (16 May 2005)
7341
7342Daniel (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
7348Daniel (12 May 2005)
7349- When doing a second request (after a disconnect) using the same easy handle,
7350  over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
7351  properly (the auth method was accidentally reset to the same as had been set
7352  for host auth, which defaults to Basic). Bug report #1200661
7353  (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
7354  the fix.
7355
7356- If -z/--time-cond is used with an invalid date syntax, this is no longer
7357  silently discarded. Instead a proper warning message is diplayed that
7358  informs about it. But it still continues without the condition.
7359
7360Version 7.14.0-pre2 (11 May 2005)
7361
7362Daniel (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
7389Daniel (10 May 2005)
7390- Half-baked attempt to bail out if select() returns _only_ errorfds when the
7391  transfer is in progress. An attempt to fix Allan's problem. See
7392  http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
7393  for details.
7394
7395  I'm still not sure this is the right fix, but...
7396
7397Version 7.14.0-pre1 (9 May 2005)
7398
7399Daniel (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
7426Daniel (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
7436Daniel (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
7440Daniel (28 April 2005)
7441- Working on fixing up test cases to mark sections as 'mode=text' for things
7442  that curl writes as text files, since then they can get different line
7443  endings depending on OS. Andr�s Garc�a helps me work this out.
7444
7445  Did lots of other minor tweaks on the test scripts to work better and more
7446  reliably find test servers and also kill test servers.
7447
7448- Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
7449  instead of the HTTPS server when closing it down.
7450
7451Daniel (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
7459Daniel (26 April 2005)
7460- Cory Nelson's work on nuking compiler warnings when building on x64 with
7461  VS2005.
7462
7463Daniel (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
7472Daniel (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
7478Daniel (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
7487Daniel (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
7499Daniel (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
7504Daniel (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
7513Daniel (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
7518Version 7.13.2 (5 April 2005)
7519
7520Daniel (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
7533Daniel (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
7537Daniel (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
7557Daniel (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
7565Daniel (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
7573Daniel (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
7591Daniel (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
7596Daniel (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
7605Daniel (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
7620Daniel (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
7630Daniel (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
7634Daniel (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
7650Version 7.13.1 (4 March 2005)
7651
7652Daniel (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
7658Daniel (22 February 2005)
7659- NTLM and ftp-krb4 buffer overflow fixed, as reported here:
7660  http://www.securityfocus.com/archive/1/391042 and the CAN report here:
7661  http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
7662
7663  If these security guys were serious, we'd been notified in advance and we
7664  could've saved a few of you a little surprise, but now we weren't.
7665
7666Daniel (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
7674Daniel (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
7679Daniel (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
7684Daniel (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
7698Daniel (14 February 2005)
7699- The configure script didn't check for ENGINE_load_builtin_engines() so it
7700  was never used.
7701
7702Daniel (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
7706Daniel (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
7720Daniel (9 February 2005)
7721- David Byron fixed his SSL problems, initially mentioned here:
7722  http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
7723  SSL_pending() as we should.
7724
7725- Converted lots of FTP code to a statemachine, so that the multi interface
7726  doesn't block while communicating commands-responses with an FTP server.
7727
7728  I've added a comment like BLOCKING in the code on all spots I could find
7729  where we still have blocking operations. When we change curl_easy_perform()
7730  to use the multi interface, we'll also be able to simplify the code since
7731  there will only be one "internal interface".
7732
7733  While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
7734  new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
7735  like changing directory or retrieving a file, while the second means that we
7736  were denied login.
7737
7738  The CVS tag 'before_ftp_statemachine' was set just before this went in, in
7739  case of future need.
7740
7741- Gisle made the DICT code send CRLF and not just LF as the spec says so.
7742
7743Daniel (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
7747Daniel (7 February 2005)
7748- Maruko pointed out a problem with inflate decompressing exactly 64K
7749  contents.
7750
7751Daniel (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
7758Version 7.13.0 (1 February 2005)
7759
7760Daniel (31 January 2005)
7761- Added Lars Nilsson's htmltitle.cc example
7762
7763Daniel (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
7782Daniel (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
7803Daniel (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
7828Daniel (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
7840Daniel (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
7884Daniel (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
7889Daniel (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
7905Daniel (18 January 2005)
7906- Cody Jones' enhanced version of Samuel D�az Garc�a's MSVC makefile patch was
7907  applied.
7908
7909Daniel (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
7916Daniel (13 January 2005)
7917- Inspired by Martijn Koster's patch and example source at
7918  http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
7919  select() and poll() calls properly loop if they return -1 and errno is
7920  EINTR. glibc docs for this is found here:
7921  http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
7922
7923  This last link says BSD doesn't have this "effect". Will there be a problem
7924  if we do this unconditionally?
7925
7926Daniel (11 January 2005)
7927- Dan Torop cleaned up a few no longer used variables from David Phillips'
7928  select() overhaul fix.
7929
7930- Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
7931  using a custom Host: header and curl fails to send a request on a re-used
7932  persistent connection and thus creates a new connection and resends it. It
7933  then sent two Host: headers. Cyrill's analysis was posted here:
7934  http://curl.haxx.se/mail/archive-2005-01/0022.html
7935
7936- Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
7937  problem with the version byte and the check for bad versions. Bruce has lots
7938  of clues on this, and based on his suggestion I've now removed the check of
7939  that byte since it seems to be able to contain 1 or 5.
7940
7941Daniel (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
7950Gisle (8 January 2005)
7951- Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
7952
7953Daniel (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
7959Daniel (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
7966Daniel (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
7972Daniel (2 January 2005)
7973- Alex Neblett updated the MSVC makefiles slightly.
7974Daniel (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
7987Daniel (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
7992Daniel (23 December 2004)
7993- David Shaw fixed the configure --disable-[protocol] variables so that
7994  curl-config --feature now works correctly!
7995
7996Daniel (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
8003Daniel (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
8012Version 7.12.3 (20 December 2004)
8013
8014Daniel (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
8024Daniel (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
8029Daniel (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
8038Daniel (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
8045Daniel (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
8052Daniel (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
8059Daniel (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
8079Daniel (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
8084Daniel (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
8094Daniel (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
8101Daniel (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
8105Daniel (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
8117Daniel (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
8124Daniel (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
8132Daniel (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
8138Daniel (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
8150Daniel (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
8156Daniel (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
8172Daniel (24 November 2004)
8173- Andr�s Garc�a fixed the configure script to detect select properly when run
8174  with Msys/Mingw on Windows.
8175
8176Daniel (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
8191Daniel (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
8195Daniel (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
8202Daniel (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
8227Daniel (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
8236Daniel (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
8240Daniel (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
8245Daniel (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
8260Daniel (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
8265Daniel (4 November 2004)
8266- Andres Garcia made it build on mingw againa, my --retry code broke the build.
8267
8268Daniel (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
8275Daniel (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
8279Daniel (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
8316Daniel (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
8326Daniel (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
8337Daniel (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
8342Version 7.12.2 (18 October 2004)
8343
8344Daniel (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
8351Gisle (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
8355Daniel (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
8360Daniel (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
8366Daniel (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
8372Gisle (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
8377Daniel (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
8388Daniel (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
8402Daniel (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
8406Daniel (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
8413Daniel (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
8425Daniel (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
8443Daniel (30 September 2004)
8444- Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
8445  app to retrieve the errno variable after a (connect) failure. It will make
8446  sense to provide this for more failures in a more generic way, but let's
8447  start like this.
8448
8449- G�nter Knauf and Casey O'Donnell worked out an extra #if condition for the
8450  curl/multi.h header to work better in winsock-using apps.
8451
8452- Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
8453  properly using glibtoolize instead of plain libtoolize. (This is made if
8454  glibtool was found and used instead of plain libtool.)
8455
8456Daniel (29 September 2004)
8457- Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
8458  enable the progress meter.
8459
8460Daniel (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
8464Daniel (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
8469Daniel (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
8473Daniel (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
8480Daniel (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
8485Daniel (16 September 2004)
8486- Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
8487  http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
8488  when "AUTH SSL" is issued (although the server responds fine and everything)
8489  but requires that curl issues "AUTH TLS" instead. See
8490  http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
8491
8492  Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
8493  of the AUTH strings to attempt first.
8494
8495- Anonymous filed bug report #1029478 which identified a bug when you 1) used
8496  a URL without properly seperating the host name and the parameters with a
8497  slash. 2) the URL had parameters to the right of a ? that contains a slash
8498  3) curl was told to follow Location:s 4) the request got a response that
8499  contained a Location: to redirect to "/dir". curl then appended the new path
8500  on the wrong position of the original URL.
8501
8502  Test case 187 was added to verify that this was fixed properly.
8503
8504Daniel (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
8511Daniel (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
8528Daniel (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
8534Daniel (2 September 2004)
8535- Minor modification of an SSL-related error message.
8536
8537Daniel (31 August 2004)
8538- David Tarendash found out that curl_multi_add_handle() returned
8539  CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
8540
8541Daniel (30 August 2004)
8542- Make "Proxy-Connection: close" close the current proxy connection, as Roman
8543  Koifman found out.
8544
8545Daniel (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
8550Daniel (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
8558Daniel (20 August 2004)
8559- Alexander Krasnostavsky made the write callback get called even when a zero
8560  byte file is downloaded.
8561
8562Daniel (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
8568Daniel (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
8578Daniel (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
8586Daniel (15 August 2004)
8587- Casey O'Donnell fixed some MSVC makefile targets to link properly.
8588
8589Daniel (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
8598Version 7.12.1 (10 August 2004)
8599
8600Daniel (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
8607Daniel (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
8612Daniel (5 August 2004)
8613- Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
8614  reported in bug report #1004105
8615
8616Daniel (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
8623Daniel (31 July 2004)
8624- Joel Chen reported that the digest code assumed quotes around the contents a
8625  bit too much.
8626
8627Daniel (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
8639Daniel (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
8646Daniel (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
8653Daniel (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
8658Daniel (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
8662Daniel (14 July 2004)
8663- G�nter Knauf has made the Netware builds do without the config-netware.h
8664  files, so they are now removed from the dist packages.
8665
8666- G�nter Knauf made curl and libcurl build with Borland again.
8667
8668- Andres Garcia fixed the common test 505 failures on windows.
8669
8670Daniel (6 July 2004)
8671- Andr�s Garc�a found out why the windows tests failed on file:// "uploads".
8672
8673Daniel (2 July 2004)
8674- Andr�s Garc�a reported a curl_share_cleanup() crash that occurs when no
8675  lock/unlock callbacks have been set and the share is cleaned up.
8676
8677Daniel (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
8682Daniel (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
8688Daniel (29 June 2004)
8689- G�nter Knauf made the testcurl.pl script capable of using a custom setup
8690  file to easier run multiple autobuilds on the same source tree.
8691
8692- Gisle fixed the djgpp build and fixed a memory problem in some of the
8693  reorged name resolved code.
8694
8695- Fixed code to allow connects done using the multi interface to attempt the
8696  next IP when connecting to a host that resolves to multiple IPs and a
8697  connect attempt fails.
8698
8699Daniel (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
8714Daniel (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
8741Daniel (22 June 2004)
8742- David Cohen pointed out that RFC2109 says clients should allow cookies to
8743  contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
8744  to 4999 now and made the used buffer get malloc()ed instead of simply
8745  allocated on stack as before. Extended test case 46 to include a cookie with
8746  very huge content to verify the fix.
8747
8748- G�nter Knauf fixed getdate.y to remove a few warnings. I removed the
8749  ifdef'ed test we never ever use anyway.
8750
8751- Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
8752  anywhere in the wildcard string, support multiple '*'-letters in the
8753  wildcard and to allow the '*'-letter to match a string that includes a dot.
8754
8755Daniel (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
8772Daniel (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
8780Daniel (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
8790Daniel (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
8796Daniel (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
8803Daniel (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
8813Daniel (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
8817Daniel (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
8822Daniel (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
8830Daniel (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
8839Daniel (8 June 2004)
8840- Marty Kuhrt fixed a minor build problem for VMS.
8841
8842Daniel (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
8846Daniel (4 June 2004)
8847- G�nter Knauf brought patches to make curl build fine on NetWare again.
8848
8849- Made the configure checks for strerror_r() not exit the configure script
8850  when built for cross-compiling.
8851
8852Daniel (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
8879Daniel (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
8886Version 7.12.0 (2 June 2004)
8887
8888Daniel (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
8896Daniel (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
8907Daniel (25 May 2004)
8908- Massimiliano Ziccardi updated the MSVC makefiles.
8909
8910Daniel (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
8921Daniel (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
8926Daniel (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
8930Daniel (19 May 2004)
8931- David Byron added test case 170 - this used to crash the previous version of
8932  curl.
8933
8934Daniel (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
8945Daniel (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
8953Daniel (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
8957Daniel (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
8962Daniel (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
8969Daniel (10 May 2004)
8970- Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
8971  separate free()-function by that lib to make sure the memory is freed by the
8972  same memory subsystem that allocated it. He responded positively and this
8973  will likely cause us to require a newer version of libidn as soon as Simon
8974  releases one with such a libidn_free() function.
8975
8976- James Bursa made runtests.pl's -t option work for any given test case, and I
8977  edited to allow -g too. Not even test case 1 worked...
8978
8979- Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
8980
8981- Andr�s Garc�a fixed a problem in the test script that made it fail to
8982  recognize our own running HTTP server.
8983
8984Daniel (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
9000Daniel (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
9004Daniel (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
9019Daniel (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
9023Daniel (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
9036Daniel (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
9057Daniel (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
9072Daniel (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
9084Daniel (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
9153Version 7.11.2 (26 April 2004)
9154
9155Daniel (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
9160Daniel (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
9173Daniel (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
9189Daniel (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
9196Daniel (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
9201Daniel (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
9211Daniel (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
9227Daniel (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
9240Daniel (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
9248Daniel (11 April 2004)
9249- Applied David Byron's patch for the MSVC libcurl makefile for builds with
9250  zlib.
9251
9252Daniel (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
9256Daniel (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
9263Daniel (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
9315Daniel (2 April 2004)
9316- In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
9317  name to work better. As pointed out by Robin Kay.
9318
9319- Andr�s Garc�a updated the mingw makefiles.
9320
9321- Dirk Manske fixed a problem I recently added in the progress meter code that
9322  broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
9323  mistake in the code that produces the final update of the progress meter
9324  that would often prevent it from actually being updated that final time.
9325
9326Daniel (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
9335Daniel (31 March 2004)
9336- Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
9337
9338- Dirk Manske found out that libcurl timed out waiting for resolves far too
9339  easy when libcurl was built to use (c-)ares for name resolving.
9340
9341- Further Digest fixing and a successful test case 153 now makes me believe
9342  Mitz Wark's problems are fixed.
9343
9344- Andres Garcia figured out that test case 63, while working, only proved a
9345  flaw in libcurl's 'http_proxy' parser when a user name and password is
9346  provided. The user name was not extracted properly (and 'http' was always
9347  used as user name).
9348
9349- Andr�s Garc�a fixed compiler warnings in our ioctlsocket() usage.
9350
9351Daniel (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
9371Daniel (29 March 2004)
9372- Gisle Vanem updated files for the djgpp/MS-DOS build.
9373
9374- Andr�s Garc�a helped me work out a fix for the runtests.pl script to make
9375  the file:// tests run fine when tested with the mingw-built version of curl.
9376
9377- Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
9378  This also required a minor fix of the configure script.
9379
9380- The postit2.c source example used the wrong struct name for the post data.
9381
9382Daniel (26 March 2004)
9383- Gisle Vanem improved IPv6 support on Windows by making the curl build use
9384  the correct getaddrinfo() function.
9385
9386Daniel (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
9409Daniel (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
9421Daniel (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
9439Daniel (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
9460Daniel (21 March 2004)
9461- Fixed the root Makefile to use tabs for the netware target. G�nter Knauf
9462  pointed this out.
9463
9464- Marty Kuhrt's VMS cleanup
9465
9466- Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
9467  with particular pre-determined options.
9468
9469Version 7.11.1 (19 March 2004)
9470
9471Daniel (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
9482Daniel (17 March 2004)
9483- Watz pointed out a few missing files in the MSVC project description file.
9484
9485- G�nter Knauf brought patches, code and makefiles to build curl on Novell
9486  NetWare.
9487
9488Daniel (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
9496Daniel (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
9502Daniel (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
9508Daniel (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
9515Version 7.11.1-pre1 (8 March 2004)
9516
9517Daniel (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
9521Daniel (4 March 2004)
9522- Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
9523
9524- Modified the test HTTP server a lot to work with the upcoming changes for
9525  PUT/POST with NTLM/Digest authentication (like test case 88). Added Andr�s
9526  Garc�a's win32-changes. Improved the logging.
9527
9528- Fixed the file:-related progress/getinfo stuff a bit more.
9529
9530Daniel (4 March 2004)
9531- I corrected a problem with the multi interface when following a Location:
9532  header or when doing multiple-request authentications. A subsequent request
9533  could erroneously re-use a previous connection that was sent with
9534  Connection: close. Christopher R. Palmer reported.
9535
9536- Andr�s Garc�a patched curl to prevent warnings while compiling with mingw,
9537  mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
9538  defined.
9539
9540- When transferring files from a file: URL, the progress meter and other
9541  transfer metrics were not updated properly.
9542
9543- David Byron provided a "version resource" file to the curl executable for
9544  the windows builds.
9545
9546Daniel (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
9559Daniel (2 March 2004)
9560- Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
9561  curl_off_t types internally.
9562
9563Daniel (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
9601Daniel (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
9606Daniel (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
9620Daniel (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
9630Daniel (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
9634Daniel (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
9638Daniel (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
9646Daniel (19 February 2004)
9647- Doug Porter made libcurl use the HOME environment variable before the
9648  getpwuid results when looking for .netrc files.
9649
9650- If 'configure --enable-debug' is used with gcc, it now checks which gcc
9651  version it is and uses as picky compiler options as possible for the
9652  particular version.
9653
9654- Code that can be used in both the lib and in the curl app is now made to use
9655  the curlx_ prefix. The first function to be available like this is the
9656  curlx_strtoll() function. This is made to allow the app to use existing code,
9657  but without polluting the libcurl API. Further explanations posted here:
9658
9659    http://curl.haxx.se/mail/lib-2004-02/0215.html
9660
9661Daniel (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
9667Daniel (17 February 2004)
9668- Made it possibly to build c-ares with the libcurl memdebug system to better
9669  track memory.
9670
9671Daniel (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
9681Daniel (15 February 2004)
9682- Fixed a case where a host cache entry was not flagged in-use properly when a
9683  cached entry was used.
9684
9685- Andr�s Garc�a's patch that checks for winmm in the configure script was
9686  applied.
9687
9688Daniel (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
9699Daniel (11 February 2004)
9700- Removed a few variables that were only set but never used, as some compilers
9701  warn about that and we do not like compiler warnings!
9702
9703- Removed the need for symlinks in the tests/data directory if curl is built
9704  outside of the source directory and the 'make test' is used. This was done
9705  by providing a "source dir path" to the scripts/servers.
9706
9707- Now, if the configure script can't find an nroff tool or an option to nroff
9708  to use to convert man pages with, it will completely switch off the built-in
9709  manual.
9710
9711- 'configure --disable-manual' completely disables the built-in manual from
9712  the curl command tool.
9713
9714- Andr�s Garc�a fixed the configure script and a minor source edit, and now
9715  he has managed to get msys/mingw to run configure and then build!
9716
9717Daniel (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
9733Daniel (6 February 2004)
9734- Andr�s Garc�a made the configure script find gethostbyname() fine when run
9735  with mingw on windows.
9736
9737- Modified the ldap code to use proper function pointers all over (instead of
9738  mixed data and function pointers) to work-around the picky MIPSPro compiler
9739  warnings.
9740
9741- A custom Host: header is only considered if the request is not made by
9742  following a location. After discussions with Tim Baker.
9743
9744Daniel (5 February 2004)
9745- The libz part of the configure script now only set the two libz-related
9746  define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
9747  If one is missing, none of the defines is set.
9748
9749- Andr�s Garc�a fixed the Mingw makefiles.
9750
9751- Len Krause reported that curl 7.9.X could do uploading from stdin without
9752  doing chunked encoding, which current curl cannot do even if you disable
9753  the transfer-encoding chunked header. Now it can again, and test case 98
9754  verifies this functionality.
9755
9756- Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
9757  the IPv6-code for PORT work on AIX 5.2. We now also provide (better) error
9758  messages when bailing out in the that function.
9759
9760- Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
9761  compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
9762  numerous minor quirks to make less warnings appear.
9763
9764Daniel (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
9770Daniel (3 February 2004)
9771- Modified to link with c-ares instead of ares.
9772
9773Daniel (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
9807Daniel (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
9825Daniel (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
9839Daniel (28 January 2004)
9840- Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
9841  CRLF combo properly.
9842
9843Daniel (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
9850Daniel (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
9869Daniel (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
9885Version 7.11.0 (22 January 2004)
9886
9887Daniel (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
9893Daniel (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
9897Daniel (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
9903Daniel (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
9907Daniel (14 January 2004)
9908- Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
9909  Steve Green provided on december 3...
9910
9911Daniel (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
9932Daniel (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
9941Version 7.11.0-pre1 (12 January 2004)
9942
9943Daniel (11 January 2004)
9944- Dominick Meglio pointed out FTPS should use default port 990 according to
9945  IANA.
9946
9947Daniel (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
9951Daniel (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
9961Daniel (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.
9968Daniel (19 December)
9969- CURLOPT_IPRESOLVE was not possible to set.
9970
9971- Gisle Vanem updated the djgpp build files.
9972
9973Daniel (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
9981Daniel (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
9986Daniel (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
9995Daniel (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
10011Daniel (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
10022Daniel (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
10032Daniel (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
10042Daniel (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
10051Daniel (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
10056Daniel (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
10064Daniel (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
10098Daniel (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
10103Daniel (19 November)
10104- Kevin Roth fixed a progress-bar problem on Windows.
10105
10106- While working with Nicolas Croiset's bug report #843739, I noticed two minor
10107  problems related to ftp partial downloads: if a partial transfer is
10108  detected, we must close the connection as we cannot know in what state it is
10109  anymore. This looks like a ProFTPD bug:
10110  http://curl.haxx.se/mail/lib-2003-11/0079.html
10111
10112Daniel (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
10117Daniel (15 November)
10118- Mathias Axelsson found out libcurl sometimes freed the server certificate
10119  twice, leading to crashes!
10120
10121Daniel (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
10125Daniel (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
10141Daniel (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
10151Daniel (10 November)
10152- Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
10153  written in the source dir if a different build dir is used.
10154
10155- After S�bastien Willemijns' bug report, we now check the separators properly
10156  in the 229-reply servers respond on a EPSV command and bail out better if
10157  the reply string is not RFC2428-compliant.
10158
10159Daniel (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
10175Daniel (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
10194Daniel (5 November)
10195- Replaced the man page to HTML converter program with a new one: roffit.
10196  Makes nicer web pages.
10197
10198Daniel (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
10205Version 7.10.8 (1 November 2003)
10206
10207Daniel (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
10220Daniel (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
10226Daniel (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
10234Daniel (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
10241Daniel (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
10248Daniel (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
10275Daniel (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
10281Daniel (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
10290Daniel (21 October)
10291- Andr�s Garc�a updated the mingw32 makefiles.
10292
10293Version 7.10.8-pre5 (21 October 2003)
10294
10295Daniel (19 October)
10296- Georg Horn made libcurl output more info on SSL failures when receiving
10297  data.
10298
10299Version 7.10.8-pre4 (18 October 2003)
10300
10301Daniel (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
10307Daniel (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
10317Daniel (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
10322Daniel (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
10327Daniel (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
10337Daniel (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
10342Daniel (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
10352Version 7.10.8-pre3 (8 October 2003)
10353
10354Daniel (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
10358Daniel (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
10368Daniel (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
10374Daniel (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
10387Daniel (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
10395Daniel (2 October)
10396- James MacMillan's patch makes curl build on QNX 6.2.x.
10397
10398Daniel (26 September)
10399- My daughter was born!
10400
10401Daniel (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
10408Version 7.10.8-pre2 (22 September 2003)
10409
10410Daniel (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
10414Daniel (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
10425Daniel (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
10432Daniel (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
10441Daniel (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
10450Daniel (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
10456Version 7.10.8-pre1 (8 September 2003)
10457
10458Daniel (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
10463Daniel (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
10468Daniel (4 September)
10469- CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
10470  Mueller-Tolk's patch,
10471
10472Early (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
10487Daniel (3 September)
10488- Peter Pentchev found and fixed two problems in the test suite's web server
10489  code, that made it segfault at times.
10490
10491- J�rg Mueller-Tolk improved the proxy user+password handling, especially
10492  when providing a blank password.
10493
10494Daniel (2 September)
10495- Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
10496  and similar to work.
10497
10498Daniel (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
10504Daniel (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
10511Daniel (21 August)
10512- Vincent Sanders provided a fix for name resolving when linked with uClibc.
10513
10514Daniel (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
10526Daniel (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
10538Daniel (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
10544Version 7.10.7 (15 August 2003)
10545
10546Daniel (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
10559Version 7.10.7-pre4 (12 August 2003)
10560
10561Daniel (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
10568Daniel (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
10592Version 7.10.7-pre3 (8 August 2003)
10593
10594Daniel (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
10602Daniel (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
10611Version 7.10.7-pre2 (6 August 2003)
10612
10613Daniel (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
10629Daniel (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
10638Early (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
10675Daniel (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
10683Daniel (1 August)
10684- David Byron provided a patch to make 7.10.6 build correctly with the
10685  compressed hugehelp.c source file.
10686
10687Version 7.10.7-pre1 (31 July 2003)
10688
10689Daniel (30 July)
10690- J�rg M�ller-Tolk updated the VC makefile.
10691
10692- Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
10693  style like other faked HTTP headers when NOBODY and HEADER are used. I
10694  updated two corresponding test cases too.
10695
10696- Marty Kuhrt pointed out a compilation problem on VMS due to my having
10697  changed a type from long to time_t, and I'm now changing it back to work
10698  more portably...
10699
10700  He also indicated that distributing the src/hugehelp.c in a compressed state
10701  like I accidentally did may not be the smartest move... I've now fixed the
10702  distribute procedure to automatically generate an uncompressed version when I
10703  make release archives.
10704
10705Daniel (29 July)
10706- Gisle Vanem brought changes to the mkhelp script for the generation of the
10707  compressed help text on some platforms.
10708
10709Version 7.10.6 (28 July 2003)
10710
10711Daniel (28 July)
10712- Fran�ois Pons brought a patch that once again made curl deal with ftp and
10713  "double slash" as indicating the root directory. In the RFC1738-fix of April
10714  30, that ability was removed (since it is not the "right" way). So, starting
10715  now we can list the root dir of an ftp server both these ways:
10716
10717    curl ftp://server.com/%2f  as well as
10718    curl ftp://server.com//
10719
10720Daniel (24 July)
10721- Henry Bland pointed out that we included sys/resource.h without good reason
10722  in several source files. Without it included, QNX builds better...
10723
10724- Andr�s Garc�a updated the mingw makefiles.
10725
10726Daniel (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
10737Daniel (22 July)
10738- Edited the curl/curl.h include file to build on Windows properly.
10739
10740Daniel (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
10748Version 7.10.6-pre4 (21 July 2003)
10749
10750Daniel (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
10755Daniel (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
10767Daniel (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
10774Daniel (5 July)
10775- Doug Kaufman provided additional fixes for the DOS port.
10776
10777Daniel (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
10797Daniel (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
10803Daniel (25 June)
10804- More NTLM-improvements. Less code. Smaller packets back and forth.
10805
10806Daniel (23 June)
10807- Eric Glass provided us with a better doc on NTLM details, and I added more
10808  comments and clarified the current code more. Using the new knowledge, we
10809  should be able to make the NTLM stuff work even better.
10810  Eric's original URL: http://davenport.sourceforge.net/ntlm.html
10811  Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
10812
10813- Fixed the minor compile problems pre3 had if built without GSSAPI and/or
10814  SSL.
10815
10816Version 7.10.6-pre3 (19 June 2003)
10817
10818Daniel (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
10823Daniel (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
10827Daniel (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
10860Version 7.10.6-pre2 (16 June 2003)
10861
10862Daniel (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
10870Daniel (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
10875Daniel (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
10885Daniel (11 June)
10886- Long day of fighting the NTLM demons.
10887
10888Daniel (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
10908Daniel (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
10912Daniel (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
10927Daniel (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
10945Daniel (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
10952Daniel (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
10961Version 7.10.6-pre1 (23 May 2003)
10962
10963Daniel (23 May)
10964- Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
10965
10966Daniel (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
10973Daniel (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
10984Daniel (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
10988Daniel (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
10993Version 7.10.5 (19 May 2003)
10994
10995Daniel (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
10999Daniel (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
11004Daniel (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
11010Daniel (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
11028Version 7.10.5-pre2 (6 May 2003)
11029
11030Daniel (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
11034Daniel (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
11039Daniel (2 May)
11040- Added test case 62 and fixed some more on the cookie sending with a custom
11041  Host: header set.
11042
11043Daniel (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
11049Daniel (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
11079Daniel (29 Apr)
11080- Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
11081  when using the multi interface (too).
11082
11083Version 7.10.5-pre1 (23 Apr 2003)
11084
11085Daniel (23 Apr)
11086- Upgraded to libtool 1.5.
11087
11088Daniel (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
11094Daniel (16 Apr)
11095- Fixed minor typo in man page, reported in the Debian bug tracker.
11096
11097Daniel (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
11106Daniel (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
11115Daniel (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
11125Daniel (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
11130Daniel (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
11145Daniel (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
11152Daniel (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
11156Daniel (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
11162Daniel (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
11171Version 7.10.4 (2 Apr 2003)
11172
11173Daniel (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
11178Daniel (31 Mar)
11179- Even more SSL config check modifications after Richard's testing.
11180
11181Version 7.10.4-pre6 (31 Mar 2003)
11182
11183Daniel (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
11200Daniel (29 Mar)
11201- Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
11202  -O" was applied.
11203
11204Daniel (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
11209Daniel (25 Mar)
11210- Renamed configure.in to configure.ac
11211
11212Version 7.10.4-pre5 (25 Mar 2003)
11213
11214Daniel (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
11222Daniel (24 Mar)
11223- G�tz Babin-Ebell pointed out that the ca-bundle.crt file contained a
11224  certificate from Trustcenter that was a demo certificate only that was never
11225  intended to be part of a CA bundle.
11226
11227Daniel (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
11239Daniel (20 Mar 2003)
11240- Five year anniversary. Today five years ago, the first ever curl release saw
11241  the light of day.
11242
11243Daniel (17 Mar)
11244- Andy Cedilnik corrected flaws in some libcurl example-usage sources.
11245
11246Daniel (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
11252Daniel (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
11259Daniel (14 Mar)
11260- Another configure.in adjustment made the configure detect functions properly
11261  on HPUX now.
11262
11263Daniel (13 Mar)
11264- Philippe Raoult fixed pre4-compile quirks for FreeBSD.
11265
11266Version 7.10.4-pre4 (13 Mar 2003)
11267
11268Daniel (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
11273Daniel (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
11295Daniel (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
11309Daniel (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
11317Daniel (7 Mar)
11318- Run libtoolize version 1.4.3.
11319
11320Version 7.10.4-pre3 (4 Mar 2003)
11321
11322Daniel (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
11333Daniel (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
11337Daniel (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
11344Daniel (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
11353Daniel (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
11359Version 7.10.4-pre2 (24 Feb 2003)
11360
11361Daniel (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
11370Daniel (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
11377Daniel (13 Feb)
11378- Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
11379  data to encode.
11380
11381Daniel (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
11393Version 7.10.4-pre1 (3 Feb 2003)
11394
11395Daniel (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
11399Daniel (31 Jan)
11400- Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
11401
11402Daniel (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
11415Daniel (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
11431Daniel (27 Jan)
11432- The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
11433  work again.
11434
11435Daniel (24 Jan)
11436- Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
11437  when following locations.
11438
11439Daniel (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
11443Daniel (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
11458Daniel (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
11465Version 7.10.3 (14 Jan 2003)
11466
11467Daniel (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
11471Version 7.10.3-pre6 (10 Jan 2003)
11472
11473Daniel (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
11485Version 7.10.3-pre5 (9 Jan 2003)
11486
11487Daniel (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
11493Version 7.10.3-pre4 (9 Jan 2003)
11494
11495Daniel (9 Jan 2003)
11496- Updated lib/share.c quite a bit to match the design document at
11497  http://curl.haxx.se/dev/sharing.txt a lot more.
11498
11499  I'll try to update the document soonish. share.c is still not actually used
11500  by libcurl, but the API is slowly getting there and we can start
11501  implementing code that takes advantage of this system.
11502
11503Daniel (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
11517Daniel (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
11533Daniel (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.
11540Daniel (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
11544Daniel (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
11549Version 7.10.3-pre3 (20 Dec)
11550
11551Daniel (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
11558Daniel (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
11563Daniel (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
11569Daniel (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
11577Daniel (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
11596Daniel (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
11604Daniel (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
11612Daniel (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
11627Daniel (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
11644Version 7.10.3-pre2 (4 Dec 2002)
11645
11646Daniel (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
11654Daniel (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
11662Daniel (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
11671Version 7.10.3-pre1
11672
11673Daniel (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
11683Daniel (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
11689Daniel (22 Nov 2002)
11690- Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
11691  web server (sws) which now lets test case 306 run fine even in combination
11692  with the other test cases.
11693
11694- Juan Ignacio Herv�s found a crash in the verbose connect message that is
11695  used on persistent connections. This bug was added in 7.10.2 due to the
11696  rearranged name resolve code.
11697
11698Daniel (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
11708Version 7.10.2 (18 Nov 2002)
11709
11710Daniel (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
11714Daniel (8 Nov 2002)
11715- Doing HTTP PUT without a specified file size now makes libcurl use
11716  Transfer-Encoding: chunked.
11717
11718Daniel (7 Nov 2002)
11719- Bug report #634625 identified how curl returned timeout immediately when
11720  CURLOPT_CONNECTTIMEOUT was used and provided a fix.
11721
11722Version 7.10.2-pre4 (6 Nov 2002)
11723
11724Daniel (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
11738Version 7.10.2-pre3
11739
11740Daniel (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
11747Version 7.10.2-pre2
11748
11749Daniel (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
11761Version 7.10.2-pre1
11762
11763Daniel (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
11772Daniel (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
11786Daniel (18 Oct 2002)
11787- Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
11788  the multi interface.
11789
11790Daniel (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
11795Daniel (15 Oct 2002)
11796- Andr�s Garc�a provided corrections for erratas in four libcurl man pages.
11797
11798Daniel (13 Oct 2002)
11799- Starting now, we generate and include PDF versions of all the docs in the
11800  release archives.
11801
11802Daniel (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
11807Daniel (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
11814Version 7.10.1 (11 Oct 2002)
11815
11816Daniel (10 Oct 2002)
11817- Jeff Lawson fixed a few problems with connection re-use that remained when
11818  you set CURLOPT_PROXY to "".
11819
11820Daniel (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
11826Daniel (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
11833Daniel (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
11842Daniel (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
11857Daniel (1 Oct 2002)
11858- Detlef Schmier pointed out the lack of a --without-libz option to configure,
11859  so I added one.
11860
11861Version 7.10 (1 Oct 2002)
11862
11863Daniel (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
11873Daniel (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
11879Version 7.10-pre4
11880
11881Daniel (26 Sep 2002)
11882- Extended curl_version_info() more and wrote a man page for it.
11883
11884Daniel (25 Sep 2002)
11885- libcurl could leak memory when downloading multiple files using http ranges,
11886  reported and fixed by Jean-Luc Guevel.
11887
11888- Walter J. Mack provided code and docs for the new curl_free() function that
11889  shall be used to free memory that is allocated by libcurl and returned back
11890  to the application, as curl_escape() and curl_unescape() do.
11891
11892- Yarram Sunil pointed out a flaw in the multi interface where a failed
11893  connection didn't close down properly and thus a second transfer using the
11894  same handle failed.
11895
11896- Andr�s Garc�a fixed a flaw that made (among other things) dict-fetches
11897  return a random value.
11898
11899Daniel (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
11903Daniel (20 Sep 2002)
11904- Craig Markwardt fixed another Tru64 IP resolve problem.
11905
11906Daniel (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
11914Daniel (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
11919Daniel (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
11925Version 7.10-pre3
11926
11927Daniel (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
11931Daniel (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
11936Daniel (3 Sep 2002)
11937- Updated all source code headers to use MIT-license references only, and
11938  point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
11939  URL. I've cut out all references to MPL that I could find.
11940
11941- Corected the makefiles to not always use -lz when linking
11942
11943Version 7.10-pre2
11944
11945Daniel (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
11955Daniel (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
11965Daniel (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
11978Daniel (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
11987Daniel (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
11995Daniel (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
12001Daniel (13 Aug 2002)
12002- Ulrich Zadow made the global include files in curl/* include themselves
12003  using "curl.h" instead of <curl/curl.h> which thus allows people to more
12004  freely decide how to include curl and how to setup their include paths.
12005
12006- Sterling Hughes added the curl_share* interface, somewhat as discussed
12007  previously.
12008
12009- J�rn Hartroth pointed out that poll() was used in the pre1 source code and
12010  it isn't very portable, so now I check for it in the configure script and
12011  work around it.
12012
12013Version 7.9.9-pre1
12014
12015Daniel (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
12020Daniel (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
12027Daniel (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
12035Daniel (3 Aug 2002)
12036- J�rn Hartroth fixed the libcurl.def file to build the windows DLL with
12037  the multi interface enabled.
12038
12039Daniel (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
12046Daniel (31 Jul 2002)
12047- Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
12048  problems.
12049
12050Daniel (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
12062Daniel (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
12067Daniel (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
12071Daniel (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
12077Daniel (22 Jun 2002)
12078- Andr�s Garc�a pointed out man page errors in curl_formadd.3. I fixed.
12079
12080Daniel (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
12085Daniel (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
12093Daniel (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
12105Version 7.9.8
12106
12107Daniel (13 Jun 2002)
12108- Time to let this baby go.
12109
12110Daniel (12 Jun 2002)
12111- Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
12112  CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH.  They are used to create a
12113  multipart that appears as a regular file upload, but the data is provided
12114  with a pointer and length.
12115
12116- Nico Baggus made the VMS version use sigsetjmp() too.
12117
12118- J�rn Hartroth fixed the mingw32 build using the mm lib.
12119
12120- Applied patches by Kris Kennaway that correct format string problems in
12121  lib/ftp.c and lib/ldap.c.
12122
12123Version 7.9.8-pre3
12124
12125Daniel (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
12148Daniel (10 Jun 2002)
12149- Found and corrected a connect failure problem that didn't create a human
12150  error text.
12151
12152- Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
12153  and comments from G�tz Babin-Ebell.
12154
12155- Gautam Mani found a socket descriptor leak that happened when FTP transfers
12156  failed and you reinvoked curl_easy_perform().
12157
12158Daniel (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
12172Version 7.9.8-pre2
12173
12174Daniel (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
12179Daniel (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
12185Daniel (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
12200Daniel (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
12209Version 7.9.8-pre1
12210
12211Daniel (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
12221Daniel (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
12232Daniel (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
12236Daniel (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
12246Version 7.9.7
12247
12248Daniel (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
12254Version 7.9.7-pre2
12255
12256Daniel (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
12279Version 7.9.7-pre1
12280
12281Daniel (6 May 2002)
12282- Added multi-post.c to the examples directory. I got the basic source for
12283  this from Gustaf Hui.
12284
12285Daniel (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
12312Daniel (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
12317Daniel (1 May 2002)
12318- Applied another patch by Jacky Lam to make the name resolve info realloc()
12319  stuff work properly.
12320
12321Daniel (28 April 2002)
12322- curl_multi_info_read() is now implemented!
12323
12324Daniel (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
12335Daniel (26 April 2002)
12336- Fixed the test suite http server to not use snprintf() anymore due to better
12337  portability.
12338
12339Daniel (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
12347Daniel (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
12354Daniel (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
12362Daniel (19 April 2002)
12363- Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
12364
12365Daniel (18 April 2002)
12366- Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
12367  experienced very big caches.
12368
12369Daniel (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
12374Daniel (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
12379Daniel (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
12388Version 7.9.6
12389
12390Daniel (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
12397Version 7.9.6-pre5
12398
12399Daniel (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
12415Daniel (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
12438Daniel (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
12442Version 7.9.6-pre4
12443
12444Daniel (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
12455Daniel (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
12465Version 7.9.6-pre3
12466
12467Daniel (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
12471Daniel (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
12481Daniel (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
12490Daniel (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
12497Daniel (25 March 2002)
12498- Jacky Lam brought a fix that improves treatment of cookies using identical
12499  domains but with leading dots properly.
12500
12501Daniel (22 March 2002)
12502- Miklos Nemeth updated the windows section of the docs/INSTALL file and the
12503  windows makefiles.
12504
12505- Jon Dillon provided us with several good-looking curl images for
12506  promotion. View them here http://curl.haxx.se/icons.html
12507
12508Daniel (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
12515Version 7.9.6-pre2
12516
12517Daniel (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
12531Daniel (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
12535Version 7.9.6-pre1
12536
12537Daniel (16 March 2002)
12538- Peter Verhas pointed out that the curl_escape and curl_unscape man pages
12539  contained factual errors.
12540
12541- Albert Choy found and corrected a problem with the verbose output when doing
12542  PASV ftp transfers. It could make libcurl crash.
12543
12544  Details in bug report #530562:
12545  http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
12546
12547Daniel (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
12561Daniel (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
12568Daniel (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
12587Daniel (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
12606Daniel (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
12617Version 7.9.5
12618
12619Daniel (7 March 2002)
12620- Added docs/KNOWN_BUGS to the release archive.
12621
12622Daniel (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
12631Daniel (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
12638Version 7.9.5-pre6
12639
12640Daniel (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
12656Version 7.9.5-pre5
12657
12658Daniel (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
12678Daniel (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
12685Daniel (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
12690Daniel (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
12708Version 7.9.5-pre4
12709
12710Daniel (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
12733Daniel (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
12739Version 7.9.5-pre3
12740
12741Daniel (21 February 2002)
12742- Kevin Roth and Andr�s Garc�a both found out that lib/config.h.in was missing
12743  in the pre-release archive and thus the configure script failed.
12744
12745Version 7.9.5-pre2
12746
12747Daniel (20 February 2002)
12748- Andr�s Garc�a provided a solution to bug report #515228. the total time
12749  counter was not set correctly when -I was used during some conditions (all
12750  headers were read in one single read).
12751
12752- Nico Baggus provided a huge patch with minor tweaks all over to make curl
12753  compile nicely on VMS.
12754
12755Daniel (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
12764Daniel (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
12775Daniel (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
12784Daniel (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
12793Daniel (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
12801Version 7.9.5-pre1
12802
12803Daniel (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
12814Daniel (5 February 2002)
12815- Kevin Roth found yet another SSL download problem.
12816
12817Version 7.9.4
12818
12819- no changes since pre-release
12820
12821Version 7.9.4-pre2
12822
12823Daniel (3 February 2002)
12824- Eric Melville provided a few spelling corrections in the curl man page.
12825
12826Daniel (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
12830Daniel (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
12838Version 7.9.4-pre1
12839
12840Daniel (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
12844Daniel (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
12860Daniel (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
12871Daniel (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
12883Daniel (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
12888Version 7.9.3
12889
12890Daniel (23 January 2002)
12891- Andr�s Garc�a found a persistancy problem when doing HTTP HEAD, that made
12892  curl "hang" until the connection was closed by the server. This problem has
12893  been introduced in 7.9.3 due to internal rewrites, this was not present in
12894  7.9.2.
12895
12896Version 7.9.3-pre4
12897
12898Daniel (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
12904Daniel (18 January 2002)
12905- Played around with stricter compiler warnings for gcc (when ./configure
12906  --enable-debug is used) and changed some minor things to stop the warnings.
12907
12908- Commented out the 'long long' and 'long double' checks in configure.in, as
12909  we don't currently use them anyway and the code in lib/mprintf.c that use
12910  them causes warnings.
12911
12912- Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
12913  to correct them. Two compiler warnings were removed as well.
12914
12915- Andr�s Garc�a fixed two minor mingw32 building problems.
12916
12917Version 7.9.3-pre3
12918
12919Daniel (17 January 2002)
12920- docs/libcurl-the-guide is a new tutorial for our libcurl programming
12921  friends.
12922
12923- Richard Archer brought back the ability to compile and build with OpenSSL
12924  versions before 0.9.5.
12925  [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
12926
12927- The DNS cache code didn't take the port number into account, which made it
12928  work rather bad on IPv6-enabled hosts (especially when doing passive
12929  FTP). Sterling fixed it.
12930
12931Daniel (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
12944Version 7.9.3-pre2
12945
12946Daniel (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
12959Daniel (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
12967Daniel (9 January 2002)
12968- Cris Bailiff found out that filling up curl's SSL session cache caused a
12969  crash!
12970
12971- Posted the curl questionnaire on the web site. If you haven't posted your
12972  opinions there yet, go there and do it now while it is still there:
12973
12974        http://curl.haxx.se/q/
12975
12976- Georg Horn quickly found out that the SSL reading no longer worked as
12977  supposed since the switch to non-blocking sockets. I've made a quick patch
12978  (for reading only) but we should improve it even further.
12979
12980Version 7.9.3-pre1
12981
12982Daniel (7 January 2002)
12983- I made the 'bool' typedef use an "unsigned char". It makes it the same on
12984  all platforms, no matter what the platform thinks the default format for
12985  char is. This was noticed since we made a silly comparison involving such a
12986  bool variable, and only one compiler/platform combination (on Debian Linux)
12987  complained about it (that happened to have its char unsigned by default).
12988
12989- Bug report #495290 identified a cookie parsing problem that was corrected.
12990  When a Set-Cookie: line is received without a trailing semicolon, libcurl
12991  didn't read the last "name=value" pair of the line, leading to confusions...
12992
12993- Sterling committed his updated DNS cache code.
12994
12995- I worked with Georg Horn and comments from G�tz Babin-Ebell and switched
12996  curl's socket operations completely over to non-blocking for the entire
12997  operation (previously we used non-blocking only for the connection phase).
12998  We had to do this to make the SSL connection phase timeout properly without
12999  the use of signals. A little extra code to deal with this was added.
13000
13001- T. Bharath pointed out a slightly obscure cookie engine flaw.
13002
13003- Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
13004  204-replies never provides a response-body. This resulted in bad persistant
13005  behavior when 204 was received.
13006
13007Daniel (5 January 2002)
13008- SM updated the VC++ library Makefiles for the new source files.
13009
13010Daniel (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
13028Daniel (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
13038Daniel (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.
13044Daniel (20 December 2001)
13045- Bj�rn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
13046  libcurl to hang on transfers over proxy, when the proxy was specified with
13047  an environment variable!
13048
13049- Added code to make ftp operations treat the NO_BODY and HEADERS options
13050  better:
13051
13052   NO_BODY set TRUE and HEADERS set TRUE:
13053    Return a set of headers with file info
13054
13055   NO_BODY set FALSE
13056    Transfer data as usual, HEADERS is ignored
13057
13058   NO_BODY set TRUE and HEADERS set FALSE
13059    Don't transfer any data, don't return any headers. Just perform the set
13060    of FTP commands.
13061
13062Daniel (17 December 2001)
13063- G�tz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
13064  made libcurl support it! This allows libcurl to do SSL connections with the
13065  private key stored in external hardware.
13066
13067  To make this good, he had to add a bunch of new library options that'll be
13068  useful to others as well:
13069
13070   CURLOPT_SSLCERTTYPE  set SSL cert type (PEM/DER)
13071   CURLOPT_SSLKEY       set SSL private key (file)
13072   CURLOPT_SSLKEYTYPE:  set SSL key type (PEM/DER/ENG)
13073   CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
13074                          (CURLOPT_SSLCERTPASSWD is an alias)
13075   CURLOPT_SSLENGINE:   set the name of the crypto engine
13076                        (returns CURLE_SSL_ENGINE_NOTFOUND on error)
13077   CURLOPT_SSLENGINE_DEFAULT: set the default engine
13078
13079  There are two new failure codes:
13080
13081   CURLE_SSL_ENGINE_NOTFOUND
13082   CURLE_SSL_ENGINE_SETFAILED
13083
13084Daniel (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
13103Daniel (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
13113Daniel (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
13117Version 7.9.2
13118
13119Daniel (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
13124Daniel (4 December 2001)
13125- Incorporated more macos fixes and added four specific files in a new
13126  subdirectory below src.
13127
13128Daniel (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
13145Version 7.9.2-pre8
13146
13147Daniel (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
13154Version 7.9.2-pre7
13155
13156Daniel (30 November 2001)
13157- Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
13158
13159Daniel (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
13166Daniel (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
13198Daniel (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
13202Version 7.9.2-pre6
13203
13204Daniel (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
13215Daniel (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
13219Version 7.9.2-pre5
13220
13221Daniel (22 November 2001)
13222- Andr�s Garc�a helped me out to track down the roots of bug report #479537,
13223  which was concerning curl returning the wrong error code when failing to
13224  connect. This didn't happen on all systems, and more specificly I've so far
13225  only seen this happen on IPv4-only Linux hosts.
13226
13227- I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
13228  port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
13229  response reader function. The latter write is however likely to occur in our
13230  own buffer unless very big FTP server replies (>25K) are read. I've never
13231  seen such a reply ever, so I think this is a relatively minor risk.
13232
13233Daniel (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
13245Version 7.9.2-pre4
13246
13247Daniel (20 November 2001)
13248- Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
13249  complete with man page updates!
13250
13251Daniel (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
13260Daniel (16 November 2001)
13261- Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
13262  HTTP.
13263
13264Version 7.9.2-pre3
13265
13266Daniel (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
13273Daniel (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
13280Version 7.9.2-pre2
13281
13282Daniel (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
13294Version 7.9.2-pre1
13295
13296Daniel (12 November 2001)
13297- Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
13298  faster, it should also support such ("broken") proxies that John Lask
13299  previously have reported problems with. His proxy sends a trailing zero byte
13300  after the end of the (proxy-) headers. I've tested this myself and it seems
13301  to work on a proxy the previous version also worked with...! This rewrite is
13302  due to the problems John Lask previously experienced.
13303
13304- Andr�s Garc�a found out why the "current speed" meter sometimes showed 2048K
13305  for very quick transfers. It turned out the "time diff"-function returned a
13306  zero millisecond diff. We now always say it is at least one millisecond! In
13307  reality, these timers very rarely have that good resolution so even though
13308  the time diff was longer than 1 millisecond, it was reported as no diff.
13309
13310- I also modified the getinfo() again when returning times, as Paul Harrington
13311  reports that 7.9.1 only returns times with 1 second accuracy, which indeed
13312  is wrong.
13313
13314Daniel (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
13326Daniel (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
13333Daniel (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
13341Daniel (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
13359Version 7.9.1
13360
13361Daniel (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
13368Daniel (2 November 2001)
13369- Replaced read() and write() with recv() and send() for socket operations
13370  even under normal unixes.
13371
13372Daniel (1 November 2001)
13373- When an FTP transfer was aborted due to a timeout, it wasn't really aware of
13374  how many bytes that had been transferred and the error text always said 0
13375  bytes. I modified this to output the actually transferred amount! :-)
13376
13377- The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
13378  added more comments in the lib/ftp.c source file.
13379
13380- Minor updates to the FAQ, added a brand new section to the web site about
13381  the name issue (who owns "curl"? will someone sue us? etc etc):
13382  http://curl.haxx.se/legal/thename.html
13383
13384Version 7.9.1-pre7
13385
13386Daniel (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
13403Version 7.9.1-pre6
13404
13405Daniel (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
13413Daniel (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
13420Daniel (29 October 2001)
13421- John Janssen found out that curl_formadd was missing in the libcurl.def file
13422  and that the docs stated the wrong return type for the function.
13423
13424- Andr�s Garc�a found a bug with multiple files in the curl_formadd() function,
13425  that I removed with this patch [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/formdata.c.diff?r1=1.25&r2=1.26].
13426
13427- Kevin Roth brought another patch that moved the cygwin package files to the
13428  packages/Win32/cygwin directory.
13429
13430- A bug in the connection re-use logic made repeated requests to the same FTP
13431  server (when using name+pasword in the URL) sometimes use more than one
13432  connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
13433
13434- Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
13435  code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
13436  (test 19)...
13437  [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
13438
13439Daniel (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
13443Daniel (25 October 2001)
13444- Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
13445  correct data has been output.
13446
13447Version 7.9.1-pre5
13448
13449Daniel (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
13454Daniel (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
13458Daniel (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
13473Daniel (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
13480Version 7.9.1-pre4
13481
13482Daniel (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
13486Daniel (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
13502Daniel (16 October 2001)
13503- Kevin Roth provided fixes for building curl nicer in cygwin environments.
13504
13505Daniel (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
13516Daniel (11 October 2001)
13517- Kevin Roth provided patches that make the test suite run fine on Windows
13518  2000 running cygwin.
13519
13520Daniel (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
13524Version 7.9.1-pre3
13525
13526Daniel (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
13537Daniel (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
13543Daniel (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
13549Version 7.9.1-pre2
13550
13551Daniel (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
13561Daniel (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
13573Version 7.9.1-pre1
13574
13575Daniel (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
13581Daniel (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
13591Daniel (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
13601Daniel (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
13606Daniel (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
13611Daniel (25 September 2001)
13612- J�rn Hartroth updated the mingw32 makefiles.
13613
13614Version 7.9
13615
13616Daniel (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
13622Version 7.9-pre8
13623
13624Daniel (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
13634Version 7.9-pre7
13635
13636Daniel (17 September 2001)
13637- Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
13638  winsock 2.0.
13639
13640Version 7.9-pre6
13641
13642- libtool 1.4.2 is now in use!
13643
13644Version 7.9-pre5
13645
13646Daniel (14 September 2001)
13647- Added another 14 ftp tests.
13648
13649Daniel (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
13656Daniel (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
13664Version 7.9-pre4
13665
13666Daniel (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
13677Daniel (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
13683Daniel (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
13688Daniel (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
13692Version 7.9-pre3
13693
13694Daniel (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
13702Daniel (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
13710Version 7.9-pre2
13711
13712Daniel (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
13720Version 7.9-pre1
13721
13722Daniel (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
13736Daniel (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
13756Daniel (27 August 2001)
13757- Slowly started writing SSL session ID caching code
13758
13759Daniel (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
13772Daniel (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
13788Daniel (21 August 2001)
13789- Georg Huettenegger's big patch was applied. Now we have:
13790  o "Expect: 100-continue" support. We will from now on send that header in
13791    all rfc1867-posts, as that makes us abort much faster when the server
13792    rejects our POST. Posting without the Expect: header is still possible in
13793    the standard replace-internal-header style.
13794  o curl_formadd() is a new formpost building function that is introduced to
13795    replace the now deprecated curl_formparse() function. The latter function
13796    will still hang around for a while, but the curl_formadd() is the new way
13797    and correct way to build form posts.
13798  o Documentation has been updated to reflect these changes
13799
13800  These changes are reason enough to name the next curl release 7.9...
13801
13802- We now convert man pages to HTML pages and include them in the release
13803  archive. For the pleasure of everyone without nroff within reach.
13804
13805- Andr�s Garc�a's suggested flushing of the progress meter output stream was
13806  added. It should make the progress meter look better on Windows.
13807
13808- Troy Engel pointed out a mistake in the configure script that made it fail
13809  on many Red Hat boxes!
13810
13811Daniel (20 August 2001)
13812- We need an updated libtool to make a better build environment for OpenBSD
13813  as well as FreeBSD
13814
13815Version 7.8.1
13816
13817Daniel (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
13826Daniel (19 August 2001)
13827- Moonesamy improved his -G feature for host names only URLs...
13828
13829Daniel (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
13833Version 7.8.1-pre6
13834
13835Daniel (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
13847Daniel (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
13863Daniel (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
13871Version 7.8.1-pre5
13872
13873Daniel (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
13888Daniel (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
13892Daniel (10 August 2001)
13893- S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
13894
13895Daniel (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
13904Version 7.8.1-pre4
13905
13906Daniel (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
13917Daniel (7 August 2001)
13918- Wrote up nine more test cases, more or less converted from the former test
13919  suite.
13920
13921Daniel (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
13934Version 7.8.1-pre3
13935
13936Daniel (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
13941Daniel (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
13949Daniel (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
13965Daniel (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
13974Daniel (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
13979Daniel (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
13984Version 7.8.1-pre2
13985
13986Daniel (25 June 2001)
13987- Bj�rn Stenberg correctly identified a problem that occurred when downloading
13988  several files with curl, and using resume. The first file's resume index was
13989  then used for all files, resulting in weird results...
13990
13991- Anton Kalmykov provided a fix that makes curl work with form field names
13992  with spaces like when -F is used.
13993
13994Version 7.8.1-pre1
13995
13996Daniel (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
14001Daniel (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
14006Daniel (12 June 2001)
14007- Salvador D�vila provided a fix for FTP range downloads.
14008
14009- Added a few more test cases from the former test suite to the new file
14010  format. We're now at a total of 26 tests.
14011
14012Daniel (11 June 2001)
14013- libcurl's version-info was wrong, as noted by both Domenico Andreoli and
14014  David Odin.
14015
14016Daniel (7 June 2001)
14017- J�rn fixed the curl_unescape duplicate entry in lib/libcurl.def
14018
14019- I made SSL certificate failure messages to be more detailed.
14020
14021Version 7.8
14022
14023Daniel (7 June 2001)
14024- SDavila provided a resumed download fix.
14025
14026Version 7.8-pre4
14027
14028Daniel (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
14034Daniel (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
14039Version 7.8-pre3
14040
14041Daniel (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
14053Daniel (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
14058Version 7.8-pre2
14059
14060Daniel (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
14069Daniel (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
14086Version 7.8-pre1
14087
14088Daniel (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
14115Version 7.7.4-pre3
14116
14117Daniel (23 May 2001)
14118- Introduced a new file format for storing test cases, and thus I had to
14119  modify all the perl test scripts and more (I added a new one). I have not
14120  "ported" all the old test cases to the new format yet, but it'll come.
14121
14122  The main advantage of this new format is that all test data for each test
14123  case is stored in a single file. It gives a better overview for each test
14124  case and a lot less files.
14125
14126- Andr�s Garc�a brought a fix for the netscape/mozilla cookie file parsing
14127  function, as it turns out it doesn't always store the path!
14128
14129Daniel (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
14149Daniel (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
14156Daniel (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
14161Version 7.7.4-pre2
14162
14163Daniel (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
14171Daniel (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
14180Daniel (14 May 2001)
14181- Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
14182  connections.
14183
14184Version 7.7.4-pre1
14185
14186Daniel (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
14191Daniel (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
14197Daniel (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
14211Daniel (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
14221Daniel (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
14230Daniel (7 May 2001)
14231- Corrected two minor compiler warnings due to the FILE * to void * conversion
14232  that I missed at two places. J�rn Hartroth brought me patches. Sander Gates
14233  filed a bug report on this.
14234
14235Version 7.7.3
14236
14237Daniel (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
14243Daniel (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
14254Daniel (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
14267Daniel (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
14274Daniel (25 April 2001)
14275- Connection re-use when not using a proxy didn't work properly for
14276  non-default port numbers.
14277
14278Daniel (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
14285Daniel (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
14290Version 7.7.2
14291
14292Daniel (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
14298Daniel (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
14309Daniel (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
14313Version 7.7.2-pre1
14314
14315Daniel (19 April 2001)
14316
14317- Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
14318
14319Daniel (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
14333Daniel (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
14353Daniel (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
14374Daniel (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
14383Daniel (7 April 2001)
14384- Andr�s Garc�a fixed a problem in curl_escape() and pointed out a flaw in
14385  the curl_easy_setopt man page.
14386
14387Daniel (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
14393Version 7.7.1
14394
14395Daniel (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
14404Daniel (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
14412Daniel (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
14421Version 7.7.1-beta1
14422
14423Daniel (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
14429Daniel (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
14434Daniel (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
14456Daniel (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
14468Version 7.7
14469
14470Daniel (22 March 2001)
14471- The configure script now fails with an error message if gethostbyname_r() is
14472  detected but it couldn't figure out how to invoke it (what amount of
14473  arguments it is supposed to get). Reports from Andr�s Garc�a made me aware
14474  of this need.
14475
14476- Talking with Jim Drash made me finally put the curl_escape and curl_unescape
14477  functions in the curl.h include file and write man pages for them. The
14478  escape function was modified to use the same interface as the unescape one
14479  had.
14480
14481- No bug reports at all on the latest betas. Release time coming up.
14482
14483Version 7.7-beta5
14484
14485Daniel (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
14497Daniel (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
14512Daniel (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
14521Version 7.7-beta4
14522
14523Daniel (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
14549Version 7.7-beta3
14550
14551Daniel (14 March 2001)
14552- Bj�rn Stenberg provided similar fixes as J�rn did and some additional patches
14553  for non-SSL compiles.
14554
14555- I increased the interface number for libcurl as I've removed the low level
14556  functions from the interface. I also took this opportunity to rename the
14557  Curl_strequal function to curl_strequal and Curl_strnequal to
14558  curl_strnequal, as they're public libcurl functions (even if they're still
14559  undocumented).
14560
14561  This will make older programs not capable of using the new libcurl with
14562  just a drop-in replacement.
14563
14564- J�rn Hartroth updated stuff for win32 compiles:
14565  o config-win32.h was fixed for socklen_t
14566  o lib/ssluse.c had a bad #endif placement
14567  o lib/file.c was made to compile on win32 again
14568  o lib/Makefile.m32 was updated with the new files
14569  o lib/libcurl.def matches the current interface state
14570
14571Daniel (13 March 2001)
14572- It only took an hour or so before J�rn Hartroth found a problem in the
14573  chunked transfer-encoding. Given his fine example-site, I could easily spot
14574  the problem and when I re-read the spec (the part I have pasted in the top
14575  of the http_chunks.h file), I realized I had made my state-machine slightly
14576  wrong and didn't expect/handle the trailing CRLF that comes after the data
14577  in each chunk (and those extra two bytes sure feel wasted).
14578
14579  Had to modify test case 34 to match this as well.
14580
14581Version 7.7-beta2
14582
14583Daniel (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
14592Daniel (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
14636Daniel (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
14641Version 7.7-beta1
14642
14643Daniel (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
14649Daniel (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
14660Daniel (4 March 2001)
14661- More bugs erased.
14662
14663Version 7.7-alpha2
14664
14665Daniel (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
14670Daniel (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
14677Daniel (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
14682Daniel (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
14690Daniel (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
14711Daniel (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
14719Daniel (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
14732Daniel (13 February 2001)
14733- Changed the word 'timeouted' to 'timed out' in two different error messages.
14734  Suggested by Larry Fahnoe.
14735
14736Version 7.6.1
14737
14738Daniel (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
14742Daniel (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
14760Version 7.6.1-pre3
14761
14762Daniel (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
14770Daniel (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
14777Daniel (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
14786Daniel (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
14794Daniel (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
14799Version 7.6.1-pre2
14800
14801Daniel (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
14811Daniel (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
14817Daniel (29 January 2001)
14818- I added a test case for the HTTP PUT resume thing (test case 33).
14819
14820Version 7.6.1-pre1
14821
14822Daniel (29 January 2001)
14823- Yet another Content-Range change. Ok now? Bob Schader checks from his end
14824  and it works for him.
14825
14826Daniel (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
14848Version 7.6
14849
14850Daniel (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
14856Version 7.6-pre4
14857
14858Daniel (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
14879Daniel (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
14889Daniel (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
14906Daniel (22 January 2001)
14907- Bj�rn Stenberg supplied a progress meter patch that makes it look better even
14908  during slow starts. Previously it made some silly assumptions...
14909
14910- Added two FTP tests for -Q and -Q - stuff since it was being discussed on
14911  the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
14912
14913Daniel (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
14920Version 7.6-pre3
14921
14922Daniel (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
14928Daniel (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
14940Daniel (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
14953Loic 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
14959Daniel (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
14973Version 7.5.2
14974
14975Daniel (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
14994Daniel (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.
15001Daniel (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
15006Daniel (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
15013Daniel (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
15019Version 7.5.1
15020
15021Daniel (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
15029Daniel (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
15037Daniel (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
15055Daniel (4 December 2000)
15056- J�rn Hartroth fixed a problem with multiple URLs and -o/-O.
15057
15058Version 7.5
15059
15060Daniel (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
15067Daniel (30 November 2000)
15068- Renamed docs/README.curl to docs/MANUAL to better reflect what the document
15069  actually contains.
15070
15071Daniel (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
15075Version 7.5-pre5
15076
15077Daniel (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
15085Daniel (27 November 2000)
15086- Added two test cases for file://.
15087
15088Daniel (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
15106Daniel (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
15124Daniel (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
15141Daniel (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
15168Daniel (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
15174Version 7.4.2
15175
15176Daniel (15 November 2000)
15177- 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
15178
15179Daniel (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
15189Daniel (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
15200Version 7.4.2 pre4
15201
15202Daniel (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
15224Daniel (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
15230Version 7.4.2 pre3
15231
15232Daniel (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
15236Daniel (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
15248Daniel (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
15254Daniel (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
15262Daniel (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
15267Daniel (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
15276Daniel (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
15283Daniel (26 October 2000)
15284- Bj�rn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
15285  that made the password get echoed when prompted for interactively. The
15286  getpass() function (now known as my_getpass()) was also fixed to not use any
15287  static buffers. This also means we cannot use the "standard" getpass()
15288  function even for those systems that have it, since it isn't thread-safe.
15289
15290- Kevin Roth found out that if you'd write a config file with '-v url', the
15291  url would not be used as "default URL" as documented, although if you wrote
15292  it 'url -v' it worked! This has been corrected now.
15293
15294- Kevin Roth's idea of using multiple -d options on the same command line was
15295  just brilliant, and I couldn't really think of any reason why we shouldn't
15296  support it! The append function always append '&' and then the new -d
15297  chunk. This enables constructs like the following:
15298
15299        curl -d name=daniel -d age=unknown foobarsite.com
15300
15301Daniel (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
15306Daniel (23 October 2000)
15307- I modified the maketgz and configure scripts, so that the configure script
15308  will fetch the version number from the include/curl/curl.h header files, and
15309  then the maketgz doesn't have to rebuild the configure script when I build
15310  release-archives.
15311
15312- Bj�rn Stenberg and Linus Nielsen correctly pointed out that curl was silly
15313  enough to not allow @-letters in passwords when they were specified with the
15314  -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
15315  suggests that curl probably should url-decode the password piece of an URL
15316  so that you could pass an encoded @-letter there...
15317
15318Daniel (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
15327Daniel (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
15340Version 7.4.1
15341
15342Daniel (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
15346Version 7.4
15347
15348Daniel (16 October 2000)
15349- The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
15350
15351Daniel (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
15356Daniel (11 October 2000)
15357- Found some more memory leaks. This new simple memory debugger has turned out
15358  really useful!
15359
15360Version 7.4 pre6
15361
15362Daniel (9 October 2000)
15363- Florian Koenig pointed out that the bool typedef in the curl/curl.h include
15364  file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
15365  public interface and was wrongly inserted in that header file.
15366
15367- J�rg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
15368  didn't harm anyone since the memory is free()ed on exit anyway.
15369
15370- Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
15371  libcurl-printf() functions. This gives us snprintf() et al on all
15372  platforms. I converted the allocated useragent string to one that uses a
15373  local buffer.
15374
15375- I've set an #if 0 section around the Content-Transfer-Encoding header
15376  generated in lib/formdata.c. This will hopefully make curl do more
15377  PHP-friendly multi-part posts.
15378
15379Version 7.4 pre5
15380
15381Daniel (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
15394Daniel (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
15399Version 7.4 pre4
15400
15401Daniel (6 October 2000)
15402- Is the -F post following the RFC 1867 spec? We had this dicussion on the
15403  mailing list since it appears curl can't post -F form posts to a PHP
15404  receiver... I've been in touch with the PHP developers about this.
15405
15406- Domenico Andreoli found out that the long option '--proxy' wasn't working
15407  anymore! The option parser got confused when I added the --proxytunnel for
15408  7.3. This was indeed a very old flaw that hasn't turned up until now...
15409
15410- J�rn Hartroth provided patches, updated makefiles and two new files for DLL
15411  stuff on win32. He also pointed out that lib source files were compiled with
15412  -I../src which isn't only wrong but plain stupid!
15413
15414- Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
15415  a local variable badly, that could lead to crashes.
15416
15417Version 7.4 pre3
15418
15419Daniel (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
15425Daniel (3 October 2000)
15426- Corrected a sever free() before use in the new add_buffer_send()! ;-)
15427
15428Version 7.4 pre2
15429
15430Daniel (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
15440Daniel (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
15452Version 7.4 pre1
15453
15454Daniel (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
15462Daniel (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
15470Version 7.3
15471
15472Daniel (28 September 2000)
15473- Removed the base64_krb.[ch] files. They've now replaced the former
15474  base64.[ch] files.
15475
15476Daniel (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
15482Version 7.3-pre8
15483
15484Daniel (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
15498Daniel (23 September 2000)
15499- Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
15500  work!
15501
15502Daniel (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
15506Daniel (20 September 2000)
15507- Richard Prescott solved another name lookup buffer size problem. I took this
15508  opportunity to rewrite the GetHost() function. With these large buffer
15509  sizes, I think keeping them as local arrays quickly turn ugly. I now use
15510  malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
15511  large buffer in case of demand (errno == ERANGE) in case a solution like
15512  that would become necessary. I still want to avoid that kind of nastiness.
15513
15514- Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
15515  as smooth as it could.
15516
15517- Added a docs/examples directory with two tiny example sources that show how
15518  to use libcurl. I hope users will supply me with more useful examples
15519  further on.
15520
15521- Applied a patch by J�rn Hartroth to no longer use the word 'inteface' in the
15522  config struct in the src/main.c file since certain compilers have that word
15523  "reservered".  I figure that is some kind of C++ decease.
15524
15525- Updated the curl.1 man page with --interface and --krb4.
15526
15527- Modified the base64Encode() function to work like the kerberos one, so that
15528  I could remove the use of that. There is no need for *two* base64 encoding
15529  functions! ;-)
15530
15531Version 7.3pre5
15532
15533Daniel (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
15542Version 7.3pre3
15543
15544Daniel (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
15559Daniel (15 September 2000)
15560- Updated all sorts of documents in regards to the new proxytunnel support.
15561
15562Version 7.3pre2
15563
15564Daniel (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
15569Version 7.3pre1
15570
15571Daniel (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
15578Daniel (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
15583Daniel (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
15587Daniel (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
15597Version 7.2.1
15598
15599Daniel (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
15610Version 7.2
15611
15612Daniel (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
15635Daniel (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
15649Daniel (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
15666Daniel (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
15671Version 7.1.1
15672
15673Daniel (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
15686Daniel (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
15690Daniel (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
15694Daniel (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
15702Daniel (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
15709Daniel (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
15715Daniel (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
15719Version 7.1
15720
15721Daniel (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
15727Daniel (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
15749Daniel (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
15764Version 7.0.11beta
15765
15766Daniel (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
15777Daniel (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
15785Daniel (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
15795Daniel (27 July 2000)
15796- J�rn Hartroth found out that when you specified a HTTP proxy in an
15797  environment variable and used -L, curl failed in the second fetch. I
15798  corrected this problem and posted a patch to the list. No need for an extra
15799  beta release just for this.
15800
15801Version 7.0.10beta
15802
15803Daniel (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
15809Version 7.0.9beta
15810
15811Daniel (25 July 2000)
15812- Kristian K�hntopp <kris at koehntopp.de> brought a fix that makes libcurl
15813  libtoolified, just as we've wanted for a while now. He also made the
15814  recently added man pages get installed properly on 'make install' and some
15815  other nice cleanups.
15816
15817- In a discussion with Eetu Ojanen it struck me that if we use curl to get a
15818  page using a password, and that page then sends a Location: to another
15819  server that curl follows, curl will send the user name and password to that
15820  server as well.
15821
15822  Now, I'll never be able to make curl do Location: following all that perfect
15823  and you're all sooner or later required to write a script to do several
15824  fetches when you're doing advanced stuff, but now I've modified curl to at
15825  least *only* send the user name and password to the original server. Which
15826  means that if get a page from server A with a password, that forwards curl
15827  to server B, curl won't use the password there. If server B then forwards
15828  curl back to server A again, the password will be used again.
15829
15830  This is not a perfect implementation, as in a browser case it would only use
15831  the password if the left-prefix of the first path is the same. I just think
15832  that this fix prevents a somewhat lurky "security hole".
15833
15834  As a side-note in this subject: HTTP passwords are sent in cleartext and
15835  will never be considered to be safe or secure. Use HTTPS for that.
15836
15837- As discussed on the mailing list, I converted the FTP response reading
15838  function into using select() which then allows timeouts (even under win32!)
15839  if the command-reply session gets too slow or dies completely. I made a
15840  default timeout on 3600 seconds unless anything else is specified, since I
15841  don't think anyone wants to wait more than that for a single character to
15842  get received...
15843
15844- Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
15845  the rfc1867 form posts. He introduced 'name=<file' which brings a means to
15846  suuply very large text chunks read from the given file name. It differs from
15847  'name=@file' in the way that this latter thing is marked in the uploaded
15848  contents as a file upload, while the first is just text (as in a input or
15849  textarea field). Torsten also corrected a bug that would happen if you used
15850  %s or similar in a -F file name.
15851
15852- As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
15853  files to/from FTP using type ASCII curl should not expect the transfer to be
15854  the exact size reported by the server as the file size. Since ASCII may very
15855  well mean that the content is translated while transfered, the final size
15856  may very well differ. Therefor, curl now ignores the file size when doing
15857  ASCII transfers in FTP.
15858
15859Daniel (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
15885Daniel (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
15891Version 7.0.8beta
15892
15893Daniel (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
15914Version 7.0.7beta
15915
15916Daniel (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
15933Daniel (15 June 2000)
15934- I thought I'd better verify that the -F option still works in v7 and of
15935  course it didn't... :-/ Anyway, I had the problems I could discover
15936  corrected. About one month of beta testing and not a single person has used
15937  this feature with v7?
15938
15939- Bj�rn correctly pointed out that the --progress-bar still doesn't work in
15940  v7. Hm.
15941
15942Daniel (14 June 2000)
15943- Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
15944  should. I corrected this.
15945
15946Version 7.0.6beta
15947
15948Daniel (14 June 2000)
15949- Bj�rn Stenberg pointed out several problems (related to win32 compiling):
15950  lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
15951  src/main.c had several minor problems
15952  lib/makefile.m32 had getpass.[co] twice
15953  src/config-win32.h lacked the HAVE_FCNTL_H define
15954  both config-win32.h files now only set the HAVE_UNISTD_H define if the
15955  define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
15956  to set it.
15957
15958Version 7.0.5beta
15959
15960Daniel (14 June 2000)
15961- Applied Luong Dinh Dung's comments about a few win32 compile problems.
15962
15963- Applied Bj�rn Stenberg's suggested fix that turns the win32 stdout to
15964  binary. It won't do it if the -B / --use-ascii option is used. That option
15965  is now an extended version of the previous -B /--ftp--ascii. The flag was
15966  already in use be the ldap as well so the new name fits pretty good. The
15967  libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
15968  obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
15969  compiler around.
15970
15971Daniel (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
15975Daniel (9 June 2000)
15976- Updated the RESOURCES file, added a README.win32 file.
15977
15978Daniel (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
15986Version 7.0.4beta
15987
15988Daniel (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
15995Version 7.0.3beta
15996
15997Daniel (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
16003Version 7.0.2beta
16004
16005Daniel (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
16017Daniel (22 May 2000)
16018- J�rn Hartroth brought me fixes to make the win32 version compile properly as
16019  well as a rename of the 'interface' field in the urldata struct, as it seems
16020  to be reserved in some gcc versions!
16021
16022- Rich Gray struck back with yet some portability reports. Data General DG/UX
16023  needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
16024  More fixes are expected as a result of Richies very helpful work.
16025
16026Version 7.0.1beta
16027
16028Daniel (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
16040Version 7.0beta
16041
16042Daniel (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
16049Daniel (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
16056Daniel (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
16061Daniel (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
16071Daniel (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
16076Daniel (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
16080Daniel (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
16084Daniel (12 April 2000):
16085- Started messing around big-time to convert the old library interface to a
16086  better one...
16087
16088Daniel (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
16105Daniel (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
16109Daniel (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
16113Daniel (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
16118Daniel (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
16126Daniel (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
16132Daniel (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
16137Version 6.5.2
16138
16139Daniel (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
16144Version 6.5.1
16145
16146Daniel (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
16153Daniel (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
16158Daniel (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
16164Daniel (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
16177Daniel (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
16186Version 6.5
16187
16188Daniel (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
16199Daniel (3 March 2000):
16200- J�rn helped me update the config-win32.h files with HAVE_SETVBUF and
16201  HAVE_STRDUP.
16202
16203Daniel (3 March 2000):
16204- Uploaded the 6.5pre2 package.
16205
16206Daniel (2 March 2000):
16207- Removed the perl-programs from the distribution, they never made many people
16208  happy and I'll still keep them available on the web.
16209
16210- Added the -w and -N stuff to the man page. Documented the new progress meter
16211  display in README.curl.
16212
16213- J�rn Hartroth, Chris <cbayliss at csc.come> and Ulf
16214  M�ller from the openssl development team helped bringing me the details for
16215  fixing an OpenSSL usage flaw. It became apparent when they released openssl
16216  0.9.5 since that barfed on curl's bad behavior (not seeding a random number
16217  thing).
16218
16219- Yet another option: -N/--no-buffer disables buffering in the output stream.
16220  Probably most useful for very slow transfers when you really want to get
16221  every byte curl receives within some preferred time. Andrew <tmr at gci.net>
16222  suggested this.
16223
16224- Damien Adant mailed me his fixes for making curl compile on Ultrix.
16225
16226Daniel (24 February 2000):
16227- Applied J�rn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
16228
16229  I should also make a note here, if nothing else to myself, that when using
16230  the %-syntax for variables in DOS command prompts, you must use two %-
16231  letters for each one since that is an escape letter there! Maybe I should
16232  use another letter instead!
16233
16234- Added more variables to -w:
16235
16236  'http_code'
16237  'time_namelookup'
16238  'time_connect'
16239  'time_pretransfer'
16240  'url_effective'
16241
16242- Made -w@filename read the syntax from a file and -w@- reads the syntax from
16243  stdin in the good old "standard" curl way.
16244
16245Daniel (22 February 2000):
16246- Released a 6.5pre1 version to get some test and user feedback.
16247
16248Daniel (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
16268Daniel (16 February 2000):
16269- J�rn Hartroth brought me some fixes for the progress meter and I continued
16270  working on it. It seems to work for http download, http post, ftp download
16271  and ftp upload. It should be a pretty good test it works generally good.
16272
16273- Still need to add the -# progress bar into the new style progress interface.
16274
16275- Gonna have a go at my new output option parameter next.
16276
16277Daniel (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
16281Daniel (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
16298Daniel (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
16306Daniel (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
16332Daniel (25 January 2000):
16333 - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
16334   corrected.
16335
16336 - Jens Schleusener pointed out a problem to compile
16337   curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
16338   by J�rn's recent #include modifications!
16339
16340Daniel (19 January 2000):
16341 - Oskar Liljeblad pointed out and corrected a problem
16342   in the Location: following system that made curl following a location: to a
16343   different protocol to fail.
16344
16345   At January 31st I re-considered this fix and the surrounding source code. I
16346   could not really see that the patch did any difference, why I removed it
16347   again for further research and debugging. (It disabled location: following
16348   on server not running on default ports.)
16349
16350 - J�rn Hartroth brought a fix that once again
16351   made it possible to select progress bar.
16352
16353 - J�rn also fixed a few include problems.
16354
16355Version 6.4
16356
16357Daniel (17 January 2000):
16358 - Based on suggestions from Bj�rn Stenberg, I made the
16359   progress deal better with larger files and added a "Time" field which shows
16360   the time spent on the download so far.
16361 - I'm now using the CVS repository on sourceforge.net, which also allows web
16362   browsing. See http://curl.haxx.nu.
16363
16364Daniel (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
16382Daniel (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
16391Daniel (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
16396Daniel (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
16401Daniel (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
16408Lars 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
16414Version 6.3.1
16415
16416Daniel (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
16430Daniel (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
16435Daniel (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
16448Version 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
16518Version 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
16556Version 6.1 (October 17 1999)
16557
16558 Daniel (17 October 1999):
16559 - I ifdef'ed or commented all the zlib stuff in the sources and configure
16560   script. It turned out we needed to mock more with zlib than I initially
16561   thought, to make it capable of downloading compressed HTTP documents and
16562   uncompress them on the fly. I didn't mean the zlib parts of curl to become
16563   more than minor so this means I halt the zlib expedition for now and wait
16564   until someone either writes the code or zlib gets updated and better
16565   adjusted for this kind of usage.  I won't get into details here, but a
16566   short a summary is suitable:
16567   - zlib can't automatically detect whether to use zlib or gzip
16568     decompression methods.
16569   - zlib is very neat for reading gzipped files from a file descriptor,
16570     although not as nice for reading buffer-based data such as we would
16571     want it.
16572   - there are still some problems with the win32 version when reading from
16573     a file descriptor if that is a socket
16574
16575 Daniel (14 October 1999):
16576 - Moved the (external) include files for libcurl into a subdirectory named
16577   curl and adjusted all #include lines to use <curl/XXXX> to maintain a
16578   better name space and control of the headers. This has been requested.
16579
16580 Daniel (12 October 1999):
16581 - I modified the 'maketgz' script to perform a 'make' too before a release
16582   archive is put together in an attempt to make the time stamps better and
16583   hopefully avoid the double configure-running that use to occur.
16584
16585 Daniel (11 October 1999):
16586 - Applied J�rn's patches that fixes zlib for mingw32 compiles as well as
16587   some other missing zlib #ifdef and more text on the multiple URL docs in
16588   the man page.
16589
16590Version 6.1beta
16591
16592 Daniel (6 October 1999):
16593 - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
16594   just made: the -d switch is now capable of reading post data from a named
16595   file or stdin.  Use it similarly to the -F. To read the post data from a
16596   given file:
16597
16598        curl -d @path/to/filename www.postsite.com
16599
16600   or let curl read it out from stdin:
16601
16602        curl -d @- www.postit.com
16603
16604 J�rn Hartroth (3 October 1999):
16605 - Brought some more patches for multiple URL functionality. The MIME
16606   separation ideas are almost scrapped now, and a custom separator is being
16607   used instead. This is still compile-time "flagged".
16608
16609 Daniel
16610 - Updated curl.1 with multiple URL info.
16611
16612 Daniel (30 September 1999):
16613 - Felix von Leitner brought openssl-check fixes for configure.in to work
16614   out-of-the-box when the openssl files are installed in the system default
16615   dirs.
16616
16617 Daniel (28 September 1999)
16618 - Added libz functionality. This should enable decompressing gzip, compress
16619   or deflate encoding HTTP documents. It also makes curl send an accept that
16620   it accepts that kind of encoding. Compressed contents usually shortens
16621   download time. I *need* someone to tell me a site that uses compressed HTTP
16622   documents so that I can test this out properly.
16623
16624 - As a result of the adding of zlib awareness, I changed the version string
16625   a little. I plan to add openldap version reporting in there too.
16626
16627 Daniel (17 September 1999)
16628 - Made the -F option allow stdin when specifying files. By using '-' instead
16629   of file name, the data will be read from stdin.
16630
16631Version 6.0 (September 14 1999)
16632
16633 Daniel (13 September 1999)
16634 - Added -X/--http-request <request> to enable any HTTP command to be sent.
16635   Do not that your server has to support the exact string you enter. This
16636   should possibly a string like DELETE or TRACE.
16637
16638 - Applied Douglas' mingw32-fixes for the makefiles.
16639
16640 Daniel (10 September 1999)
16641 - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
16642   servers return code properly after the --quote commands were issued. It
16643   took anything non 200 as an error, when all 2XX codes should be accepted as
16644   OK.
16645
16646 - Sending cookies to the same site in multiple lines like curl used to do
16647   turned out to be bad and breaking the cookie specs. Curl now sends all
16648   cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
16649   doubt that many servers do use that syntax (yet).
16650
16651 Daniel (8 September 1999)
16652 - J�rn helped me make sure it still compiles nicely with mingw32 under win32.
16653
16654 Daniel (7 September 1999)
16655 - FTP upload through proxy is now turned into a HTTP PUT. Requested by
16656   Stefan Kanthak.
16657
16658 - Added the ldap files to the .m32 makefile.
16659
16660 Daniel (3 September 1999)
16661 - Made cookie matching work while using HTTP proxy.
16662
16663 Bjorn Reese (31 August 1999)
16664 - Passed his ldap:// patch. Note that this requires the openldap shared
16665   library to be installed and that LD_LIBRARY_PATH points to the
16666   directory where the lib will be found when curl is run with a
16667   ldap:// URL.
16668
16669 J�rn Hartroth (31 August 1999)
16670 - Made the Mingw32 makefiles into single files.
16671 - Made file:// work for Win32. The same code is now used for unix as well for
16672   performance reasons.
16673
16674 Douglas E. Wegscheid (30 August 1999)
16675 - Patched the Mingw32 makefiles for SSL builds.
16676
16677 Matthew Clarke (30 August 1999)
16678 - Made a cool patch for configure.in to allow --with-ssl to specify the
16679   root dir of the openssl installation, as in
16680
16681        ./configure --with-ssl=/usr/ssl_here
16682
16683 - Corrected the 'reconf' script to work better with some shells.
16684
16685 J�rn Hartroth (26 August 1999)
16686 - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
16687   compiles.
16688
16689Version 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
16728Version 5.10
16729
16730 Daniel (13 August 1999)
16731 - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
16732   OpenSSL. Now why couldn't they simply add a *new* function instead of
16733   modifying the parameters of an already existing function? This way, we get
16734   a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
16735   to come up with a #if construction that deals with this...
16736
16737 - Made curl output the SSL version number get displayed properly with 0.9.4.
16738
16739 Troy (12 August 1999)
16740 - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
16741   a bit rearranged.
16742
16743 Daniel (12 August 1999)
16744 - I had to copy a good <arpa/telnet.h> include file into the curl source
16745   tree to enable the silly win32 systems to compile. The distribution rights
16746   allows us to do that as long as the file remains unmodified.
16747
16748 - I corrected a few minor things that made the compiler complain when
16749   -Wall -pedantic was used.
16750
16751 - I'm moving the official curl web page to http://curl.haxx.nu. I think it
16752   will make it easier to remember as it is a lot shorter and less cryptic.
16753   The old one still works and shows the same info.
16754
16755 Daniel (11 August 1999)
16756 - Albert Chin-A-Young mailed me another correction for NROFF in the
16757   configure.in that is supposed to be better for IRIX users.
16758
16759 Daniel (10 August 1999)
16760 - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
16761   some fiddling with the getdate.c stuff that he had problems with under
16762   HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
16763   yacc or bison is found by the configure script. Since this is slightly new,
16764   we need to test the output getdate.c with win32 systems to make sure it
16765   still compiles there.
16766
16767 Daniel (5 August 1999)
16768 - I've just setup a new mailing list with the intention to keep discussions
16769   around libcurl development in it. I mainly expect it to be for thoughts and
16770   brainstorming around a "next generation" library, rather than nitpicking
16771   about the current implementation or details in the current libcurl.
16772
16773   To join our happy bunch of future-looking geeks, enter 'subscribe
16774   <address>' in the body of a mail and send it to
16775   libcurl-request@listserv.fts.frontec.se.  Curl bug reports, the usual curl
16776   talk and everything else should still be kept in this mailing list. I've
16777   started to archive this mailing list and have put the libcurl web page at
16778   www.fts.frontec.se/~dast/libcurl/.
16779
16780 - Stefan Kanthak contacted me regarding a few problems in the configure
16781   script which he discovered when trying to make curl compile and build under
16782   Siemens SINIX-Z V5.42B2004!
16783
16784 - Marcus Klein very accurately informed me that src/version.h was not present
16785   in the CVS repository. Oh, how silly...
16786
16787 - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
16788   support. If you run curl like 'curl telnet://host' you'll get all output on
16789   the screen and curl will read input from stdin. You'll be able to login and
16790   run commands etc, but since the output is buffered, expect to get a little
16791   weird output.
16792
16793   This is still in its infancy and it might get changed. We need your
16794   feed-back and input in how this is best done.
16795
16796   WIN32 NOTE: I bet we'll get problems when trying to compile the current
16797   lib/telnet.c on win32, but I think we can sort them out in time.
16798
16799 - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
16800   defined for getdate.c to compile properly on HP-UX 11.0. I updated the
16801   configure script to check for alloca.h which should make it.
16802
16803 Daniel (4 August 1999)
16804 - I finally got to understand Marcus Klein's ftp download resume problem,
16805   which turns out to be due to different outputs from different ftp
16806   servers. It makes ftp download resuming a little trickier, but I've made
16807   some modifications I really believe will work for most ftp servers and I do
16808   hope you report if you have problems with this!
16809
16810 - Added text about file transfer resuming to README.curl.
16811
16812 Daniel (2 August 1999)
16813 - Applied a progress-bar patch from Lars J. Aas. It offers
16814   a new styled progress bar enabled with -#/--progress-bar.
16815
16816 T. Yamada <tai at imasy.or.jp> (30 July 1999)
16817 - It breaks with segfault when 1) curl is using .netrc to obtain
16818   username/password (option '-n'), and 2) is automatically redirected to
16819   another location (option '-L').
16820
16821   There is a small bug in lib/url.c (block starting from line 641), which
16822   tries to take out username/password from user- supplied command-line
16823   argument ('-u' option). This block is never executed on first attempt since
16824   CONF_USERPWD bit isn't set at first, but curl later turns it on when it
16825   checks for CONF_NETRC bit. So when curl tries to redo everything due to
16826   redirection, it segfaults trying to access *data->userpwd.
16827
16828Version 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
16893Version 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
16941Version 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
16992Version 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
17009Version 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
17023Version 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
17061Version 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
17107Version 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
17153Version 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
17162Version 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
17190Version 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
17217Version 5.3a (win32 only)
17218
17219 Troy Engel
17220 - Corrected a win32 bug in the environment variable part.
17221
17222Version 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
17255Version 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
17261Version 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
17279Version 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
17319Version 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
17326Version 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
17386Version 5.0 beta 21
17387
17388 Angus Mackay (Nov 15, 1998)
17389 - Introduced automake stuff.
17390
17391 Daniel Stenberg (Nov 13, 1998)
17392 - Just made a successful GET of a document from an SSL-server using my own
17393   private certificate for authentication! The certificate has to be in PEM
17394   format. You do that the easiest way (although not *that* easy) by
17395   downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
17396   at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
17397   convert any modern Netscape or (even) MSIE certificate to PEM-format.  Use
17398   it with 'curl -E <certificate:password> https://site.com'.  If this isn't a
17399   cool feature, then I don't know what cool features look like! ;-)
17400 - Working slowly on telnet connections. #define TRY_TELNET to try it out.
17401   (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
17402   have problem to define how it should work. The prime purpose for this must
17403   be to get (8bit clean) files via telnet, and it really isn't that easy to
17404   get files this way. Still having problems with \n being converted to \r\n.
17405
17406 Angus Mackay (Nov 12, 1998)
17407 - Corrected another bug in the long parameter name parser.
17408 - Modified getpass.c (NOTE: see the special licensing in the top of that
17409   source file).
17410
17411 Daniel Stenberg (Nov 12, 1998)
17412 - We may have removed the silly warnings from url.c when compiled under IRIX.
17413   Thanks again to Bjorn Reese and Martin Staael.
17414 - Wrote formfind.pl which is a new perl script intended to help you find out
17415   how a FORM submission should be done. This needs a little more work to get
17416   really good.
17417
17418 Daniel Stenberg (Nov 11, 1998)
17419 - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
17420   Appearantly some proxies/sites add such at times (my test proxy did when I
17421   downloaded a gopher page with it)!
17422 - Moved the former -h to -M and made -h show the short help text instead. I
17423   had to enable a forced help text option. Now an even shorter help text will
17424   be presented when an unknown option and similar, is used.
17425 - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
17426   changes don't make other versions go nuts instead.
17427
17428 Daniel Stenberg (Nov 10, 1998)
17429 - Added a weird check in the configure script to check for the silly AIX
17430   warnings about my #define strcasecmp() stuff. I do that define to prevent
17431   me and other contributors to accidentaly use that function name instead
17432   of strequal()...
17433 - I bugfixed Angus's getpass.c very little.
17434 - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
17435   sufficient instead of --location as "loc" is a unique prefix. Also, anything
17436   after a '--' is treated as an URL. So if you do have a host with a weeeird
17437   name you can do 'curl -- -host.com'.
17438 - Another getopt-adjust; curl now accepts flags after the URL on the command
17439   line. 'curl www.foo.com -O' is perfectly valid.
17440 - Corrected the .curlrc parser so that strtok() is no longer used and I
17441   believe it works better. Even URLs can be specified in it now.
17442
17443 Angus Mackay (Nov 9, 1998)
17444 - Replaced getpass.c with a newly written one, not under GPL license
17445 - Changed OS to a #define in config.h instead of compiler flag
17446 - Makefile now uses -DHAVE_CONFIG_H
17447
17448 Daniel Stenberg (Nov 9, 1998)
17449 - Ok, I expanded the tgz-target to update the version string on each occation
17450   I build a release archive!
17451 - I reacted on Angus Mackay's initiative and remade the parameter parser to
17452   be more getopt compliant. Curl now supports "merged" flags as in
17453	curl -lsv ftp.site.com
17454   Do note that I had to move three short-names of the options. Parameters
17455   that needs an additional string such as -x must be stand-alone or the
17456   last in a merged sequence:
17457	curl -lsx my-proxy ftp.site.com
17458   is ok, but using the flags in a different order like '-lxs' would cause
17459   unexpected results (as the 's' option would be skipped).
17460 - I've changed the headers in all files that are subject to the MozPL
17461   license, as they are supposed to look like when conforming.
17462 - Made the configure script make the config.h. The former config.h is now
17463   setup.h.
17464 - The RESOURCES and TODO files have been added to the archive.
17465
17466 Angus Mackay (Nov 5, 1998)
17467 - Fixed getpass.c and various configure stuff
17468
17469 Daniel Stenberg (Nov 3, 1998)
17470 - Use -H/--header for custom HTTP-headers. Lets you pass on your own
17471   specified headers to the remote server. I wouldn't recommend trying to use
17472   a header with a defined usage according to standards. Use this flag once
17473   for every custom header you want to add.
17474 - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
17475 - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
17476   usage in there! Since the introduction of the .curlrc file, it is easier to
17477   write scripts that use curl since proxies and stuff should be in the
17478   .curlrc file anyway.
17479 - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
17480   which means it is gonna be possible to upload files etc through HTTP POST.
17481   Shiraz Kanga asked for the feature and my brother,
17482   Bj�rn Stenberg helped me design the user
17483   interface for this beast.  This feature requires quite some docs,
17484   since it has turned out not only quite capable, but also complicated! :-)
17485 - A note here, since I've received mail about it. SSLeay versions prior to
17486   0.8 will *not* work with curl!
17487 - Wil Langford reported a bug that occurred since curl
17488   did not properly use CRLF when issuing ftp commands. I fixed it.
17489 - Rearranged the order config files are read. .curlrc is now *always* read
17490   first and before the command line flags. -K config files then act as
17491   additional config items.
17492 - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
17493 - You can now disable a proxy by using -x "". Useful if the .curlrc file
17494   specifies a proxy and you wanna fetch something without going through
17495   that.
17496 - I'm thinking of dropping the -p support. Its really not useful since ports
17497   could (and should?) be specified as :<port> appended on the host name
17498   instead, both in URLs and to proxy host names.
17499 - Martin Staael reports curl -L bugs under Windows NT
17500   (test with URL http://come.to/scsde). This bug is not present in this
17501   version anymore.
17502 - Added support for the weird FTP URL type= thing. You can download a file
17503   using ASCII transfer by appending ";type=A" to the right of it. Other
17504   available types are type=D for dir-list (NLST) and type=I for binary
17505   transfer. I can't say I've ever seen anyone use this kind of URL though!
17506   :-)
17507 - Troy Engel pointed out a bug in my getenv("HOME")
17508   usage for win32 systems. I introduce getenv.c to better cope with
17509   this. Mr Engel helps me with the details around that...
17510 - A little note to myself and others, I should make the win32-binary built
17511   with SSL support...
17512 - Ryan Nelson sent me comments about building curl
17513   with SSL under FreeBSD. See the Makefile for details. Using the configure
17514   script, it should work better and automatically now...
17515 - Cleaned up in the port number mess in the source. No longer stores and uses
17516   proxy port number separate from normal port number.
17517 - 'configure' script working. Confirmed compiles on:
17518    Host         SSL  Compiler
17519    SunOS 5.5    no   gcc
17520    SunOS 5.5.1  yes  gcc
17521    SunOS 5.6    no   cc  (with gcc, it has the "gcc include files" problem)
17522    SunOS 4.1.3  no   gcc (without ANSI C headers)
17523    SunOS 4.1.2  no   gcc (native compiler failed)
17524    Linux 2.0.18 no   gcc
17525    Linux 2.0.32 yes  gcc
17526    Linux 2.0.35 no   gcc (with glibc)
17527    IRIX 6.2     no   gcc (cc compiles generate a few warnings)
17528    IRIX 6.4     no   cc  (generated warnings though)
17529    Win32        no   Borland
17530    OSF4.0	 no   ?
17531
17532 - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
17533   set.
17534 - When using a proxy, curl now guesses and uses the protocol part in cases
17535   like:
17536	curl -x proxy:80 www.site.com
17537   Proxies normally go nuts unless http:// is prepended to the host name, so
17538   if curl is used like this, it guesses protocol and appends the protocol
17539   string before passing it to the proxy. It already did this when used
17540   without proxy.
17541 - Better port usage with SSL through proxy now. If you specified a different
17542   https-port when accessing through a proxy, it didn't use that number
17543   correctly. I also rewrote the code that parses the stuff read from the
17544   proxy when you wanna connect through it with SSL.
17545 - Bjorn Reese helped me work around one of the compiler
17546   warnings on IRIX native cc compiles.
17547
17548Version 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
17565Version 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
17596Version 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
17610Version 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
17617Version 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
17622Version 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
17631Version 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
17643Version 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
17652Version 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
17669Version 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
17677Version 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
17687Version 4.4
17688 Linas Vepstas
17689 - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
17690 - SSL fixes
17691
17692Version 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
17697Version 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
17716Version 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
17725Version 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
17743Version 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
17752Version 3.11
17753 Daniel Stenberg
17754 - The header parsing was still not correct since the 3.2 modification...
17755
17756Version 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
17761Version 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
17767Version 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
17775Version 3.6
17776 Daniel Stenberg
17777 - Silly mistake made the POST bug. This has now also been tested to work with
17778   proxy.
17779
17780Version 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
17787Version 3.3 - 3.4
17788 Passed to avoid confusions
17789
17790Version 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
17808Version 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
17821Version 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
17833Version 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
17844Version 2.8
17845 Rafael Sagula
17846 - some little modifications
17847
17848Version 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
17862Version 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
17870Version 2.5
17871 Rafael Sagula
17872 - Made the progress meter use HHH:MM:SS instead of only seconds.
17873
17874Version 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
17898Version 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
17919Version 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
17931Version 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
17941Version 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
17947Version 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
17956Version 1.4
17957 Daniel Stenberg
17958 - The gopher source used the ppath variable instead of path which could
17959   lead to disaster.
17960
17961Version 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
17971Version 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
17995Version 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
18000Version 1.0
18001  Rafael Sagula
18002  - Wrote the initial httpget, which started all this!
18003