b609370df1dfe8e997deba32d90d08d214d3e9ce
[platform/upstream/curl.git] / CHANGES
1                                   _   _ ____  _     
2                               ___| | | |  _ \| |    
3                              / __| | | | |_) | |    
4                             | (__| |_| |  _ <| |___ 
5                              \___|\___/|_| \_\_____|
6
7                                History of Changes
8
9 Daniel (21 May 2001)
10 - I made ftps:// work. Added test case 400 to the release archive, as the
11   first ftps:// test case. Requires stunnel.
12
13 - Also made the test cases that runs ssl tests not run if libcurl isn't built
14   with ssl support.
15
16 Daniel (19 May 2001)
17 - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
18   are actually needed. Albert Chin's and Domenico Andreoli's suggestions
19   helped out.
20
21 Version 7.7.4-pre2
22
23 Daniel (18 May 2001)
24 - Nicer configure-check for the OpenSSL headers, which then sets the proper
25   variable to have curl-config be good. (Albert Chin provided the fix)
26
27 - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
28   It was now renamed to prevent collides with other libs. (After discussions
29   with Sterling Hughes and the implications this had on PHP builds.)
30
31 Daniel (17 May 2001)
32 - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
33   turned out to be a problem with the debian-built 7.7.3-package that
34   contained files from the 7.7.2 release!
35
36 - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
37   make programs that use it, not fail when compiling against this version of
38   libcurl.
39
40 Daniel (14 May 2001)
41 - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
42   connections.
43
44 Version 7.7.4-pre1
45
46 Daniel (14 May 2001)
47 - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
48
49 - Added the first HTTPS test to the test suite in the release archive.
50
51 Daniel (12 May 2001)
52 - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
53   certificate and the peer can't be verified, it should fail and return a
54   proper error code. I added a brand new error code named
55   CURLE_SSL_PEER_CERTIFICATE for this purpose.
56
57 Daniel (11 May 2001)
58 - As was discussed with Frederic Lepied a while ago, I now made libcurl not
59   return error even though no data was transfered on upload/download resume
60   when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
61   from the header file to make any implemenator that uses that to be aware of
62   the fact that it can't be returned anymore!
63
64 - Improved general header-parsing to better allow white spaces and more.
65
66 - Rodney Simmons proved the fix I did yesterday was bad and I had to post
67   another one.
68
69 - Ingo Wilken patched away two redirect problems more!
70   
71 Daniel (10 May 2001)
72 - Cris Bailiff correctly noted that the space-after-header problem with
73   Location: is present on several other places in the libcurl sources.
74
75 - Ingo Wilken patched away a problem libcurl had when following Location:
76   headers with an extra space after the colon.
77
78 - Rodney Simmons found out that multiple FTP transfers did not treat relative
79   directories correctly.
80
81 Daniel (9 May 2001)
82 - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
83   makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
84   returned error. Starting now, it just don't output the file size instead.
85   Anonymous bug report.
86
87 - stunnel.pm was accidentally left out from the release archive, it is now
88   added (stunnel is needed to run the https-tests in the test suite)
89   
90 Daniel (7 May 2001)
91 - Corrected two minor compiler warnings due to the FILE * to void * conversion
92   that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
93   filed a bug report on this.
94
95 Version 7.7.3
96
97 Daniel (4 May 2001)
98 - All callback functions now take 'void *' instead of 'FILE *'. This is made
99   this way to make it more obvious to people that anything can be passed to
100   them (by using the apropriate option). After discussions with Sterling
101   Hughes.
102
103 Daniel (3 May 2001)
104 - Cris Bailiff fixed a chunked transfer encoding problem with persistent
105   connection that made libcurl fail if the persistent connection used mixed
106   chunked and non-chunked transfers.
107
108 - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
109   treated as content-length 0 replies but would cause a "hang" until the
110   server timed-out and closed the connection.
111
112 - Brad Burdick found a minor problem in the docs/examples/Makefile.am
113
114 Daniel (27 April 2001)
115 - Updated the INTERALS document again. It was lagging a bit. I think I made it
116   more easy to follow now as well.
117
118 - Brad Burdick found a problem with persistent connections when curl received
119   a "Content-Length: 0" header.
120
121 - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
122   compiled/built on win32. It seems to work for unixes though!
123
124 - Dave Hamilton reported weird problems with CURL/PHP that I really can't
125   explain at the moment. I'm hoping on some help from the PHP crew.
126
127 Daniel (26 April 2001)
128 - I rewrote the FTP command response function. I had to do it to make ftps
129   work, as the OpenSSL read()-function didn't work the same way the normal
130   unix read() does, but it was also a huge performance boost. Previously the
131   function read one byte at a time, now it reads very large chunks, and it
132   makes a notable speed difference.
133
134 Daniel (25 April 2001)
135 - Connection re-use when not using a proxy didn't work properly for
136   non-default port numbers.
137
138 Daniel (24 April 2001)
139 - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
140   data transfer, which causes the transfer to 'hang'... We need to fix this.
141
142 - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
143   the alredy written perl servers easily.
144
145 Daniel (23 April 2001)
146 - The OpenSSL version string recently modified didn't zero terminate one
147   of the generated strings properly, which could lead to a crash or simply
148   weird version string output!
149
150 Version 7.7.2
151
152 Daniel (22 April 2001)
153 - Rosimildo da Silva updated the Makefiles for Borland/Windows.
154
155 - Eric Rautman pointed out a problem with persistent connections that would
156   lead to broken Host: headers in the second HTTP request.
157
158 Daniel (20 April 2001)
159 - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
160   a 'libcurl overview' man page.
161
162 - Spell-fixed some documents.
163
164 - S. Moonesamy corrected mistakes in the man page.
165
166 - Cris Bailiff fixed the curl_slists options in the perl interface, present
167   separately in the Curl::easy 1.1.4 package.
168
169 Daniel (19 April 2001)
170 - Linus Nielsen Feltzing removed the decimals from the size variables in the
171   --write-out output. We hardly ever get fraction of bytes! :-)
172
173 Version 7.7.2-pre1
174
175 Daniel (19 April 2001)
176
177 - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
178
179 Daniel (18 April 2001)
180 - Input from Michael Mealling made me add --feature to curl-config. It
181   displays a list of features that have been built-in in the current
182   libcurl. The currently available features that can be listed are: SSL, KRB4
183   and IPv6.
184
185 - I committed Cris and Georg's perl interface work. They've got callbacks
186   working and options that receives those slist pointers.
187
188 - Puneet Pawaia detected a problem with resumed downloads that use persistent
189   connections and I made a rather large writeup to correct this. It is
190   important that all session-data is stored in the connectdata struct and not
191   in the main struct as this previously did.
192
193 Daniel (17 April 2001)
194 - Frederic Lepied fixed a ftp resumed download problem and introduced a new
195   error code that lets applications be able to detect when a resumed download
196   actually didn't download anything since the whole file is already present.
197   Should this return OK instead?
198
199 - I added 'curl-config.in' to the root dir and configure script. Now, a
200   curl-config script is made when curl is built. The script can be used to
201   figure out compile time options used when libcurl was built, which in turn
202   should be options YOU should use to build applications that use libcurl.
203
204   This *-config style is not a new idea, but something that has been used
205   successfully in other (library based) projects.
206
207 - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
208   for the If-Modified-Since style headers.
209
210 - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
211   for curl to build on Ultrix.
212
213 Daniel (11 April 2001)
214 - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
215   of the environment variable HTTP_PROXY in uppercase may become a security
216   hazard when people use libcurl in a server/cgi situation where the server
217   sets the HTTP_*-variables according to incoming headers in the HTTP
218   request. Thus, a "Proxy:"-header would set that environment variable!
219
220   Then, invoking curl_easy_perform() without having an URL set caused a crash.
221
222 - S. Moonesamy brought a patch that make curl use non-blocking connects on
223   windows when connection timeout is set, as it allows windows users to set
224   that timeout!
225
226 - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
227
228 - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
229
230 - I've written a first shot at a Java interface to libcurl. Many thanks to
231   Daniel Marell for tirelessly answering to all my basic Java questions. It
232   works, but it is still very basic.
233
234 Daniel (10 April 2001)
235 - The progress display could get silly when doing multiple file transfers, as
236   it wasn't properly reset between transfers!
237
238 - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
239   me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
240   function for writing headers. Previously you could only set a different FILE
241   * when headers are written from within libcurl.
242
243 Daniel (7 April 2001)
244 - Andrés García fixed a problem in curl_escape() and pointed out a flaw in
245   the curl_easy_setopt man page.
246
247 Daniel (6 April 2001)
248 - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
249   change their version define format often...
250
251 - curl_formfree() now accepts a NULL pointer without crashing!
252
253 Version 7.7.1
254
255 Daniel (3 April 2001)
256 - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
257   read bad memory during situations when an (ftp) connection attempt failed.
258   Also, the lib/Makefile.vc6 was corrected.
259
260 - More investigations in the Location: following code made me realize that
261   it was not clean enough to work transparantly with persistent and non-
262   persistent connections. I think I've fixed it now.
263
264 Daniel (29 March 2001)
265 - Georg Horn mailed me some corrections for the Curl::easy perl interface.
266
267 - Experimental ftps:// support added. It is basically FTP over SSL for the
268   control connection. It still makes all data transfers going over unencrypted
269   connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
270   that to verify the functionality.
271
272 Daniel (27 March 2001)
273 - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
274   to get a file from a site and it fails, the SIGALRM would still be sent
275   after the timeout-time, quite inexpectedly!
276
277 - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
278   example makefile that can be used as a start when building one of the
279   examples.
280
281 Version 7.7.1-beta1
282
283 Daniel (26 March 2001)
284 - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
285   connections (when the server replied a Connection: Keep-Alive) and this
286   problem was not properly dealt with in 7.7 either. A patch was posted to the
287   curl-and-php mailing list.
288
289 Daniel (24 March 2001)
290 - Colin Watson reported about a problem and brought a patch that corrected it,
291   which was about the man page and lines starting with a single quote (') in a
292   way that gnroff doesn't like.
293
294 Daniel (23 March 2001)
295 - Peter Bray reported correctly that the root makefile used make instead of
296   $(MAKE) for the test target.
297
298 - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
299   curl_setopt() which was removed in 7.7!
300
301 - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
302
303 - When following a Location:, libcurl would sometimes write to the URL string
304   in a way it shouldn't. As the pointer is passed-in to libcurl from an
305   application, we can't be allowed to write to it. The particular bug report
306   from 'nk' that brought this up was because he had a read-only URL that then
307   caused a libcurl crash!
308
309 - No longer reads HEAD responses longer than to the last header. Previously,
310   curl would read the full reply if the connection was a "close" one.
311
312 - libcurl did re-use connections way too much. Doing "curl
313   http://www.{microsoft,ibm}.com" would make it re-use the connection which
314   made the second request return very odd results.
315
316 Daniel (22 March 2001)
317 - Edin Kadribasic made me aware that curl should not re-send POST requests
318   when following 302-redirects. I made 302 work like 303 which means curl uses
319   GET in the following request(s).
320
321 - libcurl now reset the "followed-location" counter on each invoke of
322   curl_easy_perform() as it otherwise would sum up all redirects on the same
323   connection and thus could reach the maxredirs counter wrongly.
324
325 - Jim Drash suggested curl_escape() should not re-encode what already looks
326   like an encoded sequence and I think that's a fair suggestion.
327
328 Version 7.7
329
330 Daniel (22 March 2001)
331 - The configure script now fails with an error message if gethostbyname_r() is
332   detected but it couldn't figure out how to invoke it (what amount of
333   arguments it is supposed to get). Reports from Andrés García made me aware
334   of this need.
335
336 - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
337   functions in the curl.h include file and write man pages for them. The
338   escape function was modified to use the same interface as the unescape one
339   had.
340
341 - No bug reports at all on the latest betas. Release time coming up.
342
343 Version 7.7-beta5
344
345 Daniel (19 March 2001)
346 - Georg Ottinger reported problems with using -C together with -L in the sense
347   that the -C info got lost when it was redirected. I could not repeat this
348   problem on the 7.7 branch why I leave this for the moment. Test case 39 was
349   added to do exactly this, and it seems to do right.
350
351 - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
352   form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
353   engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
354   and POST operations that I need to add support for. Section 8.2.3 in RFC2616
355   has all the details. Seems to work now!
356
357 Daniel (16 March 2001)
358 - After having experienced another machine break-down, we're back.
359
360 - Georg Horn's perl interface Curl::easy is now included in the curl release
361   archive. The perl/ directory is now present. Please help me with docs,
362   examples and updates you think fit.
363
364 - Made a new php/ directory in the release archive and moved the PHP examples
365   into a subdirectory in there. Not much PHP info yet, but I plan to. Please
366   help me here as well!
367
368 - Made libcurl return error if a transfer is aborted in the middle of a
369   "chunk". It actually enables libcurl to discover premature transfer aborts
370   even if the Content-Length: size is unknown.
371
372 Daniel (15 March 2001)
373 - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
374   option in libcurl. It limits the time curl is allowed to spend in the
375   connection phase. This differs from -m/--max-time that limits the entire
376   file transfer operation. Requested by Larry Fahnoe and others.
377
378   I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
379   item from the TODO.
380
381 Version 7.7-beta4
382
383 Daniel (14 March 2001)
384 - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
385   again when ENABLE_IPV6 is set.
386
387   I need to remake things in the test suite. I can't test the FTP parts with
388   curl built for IPv6 as it uses a different set of FTP commands then!
389
390 - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
391   a report meant for our project. Anyway, it said the .netrc parsing didn't
392   work as supposed, and as I agreed with Lars, I made the netrc parser use
393   getpwuid() to figure out the home directory of the effective user and try
394   that netrc. It still uses the environment variable HOME for those that don't
395   have that function or if the user doesn't return valid pwd info.
396
397 - Edin Kadribaic posted a bug report where he got a crash when a fetch with
398   user+password in the URL followed a Location: to a second URL (absolute,
399   without name+password). This bug has been around for a long while and
400   crashes due to a read at address zero. Fixed now. Wrote test case 38, that
401   tests this.
402
403 - Modified the test suite's httpserver slightly to append all client request
404   data to its log file so that the test script now better can verify a range
405   of requests and not only the last one, as it did previously.
406
407 - Updated the curl man page with --random-file and --egd-file details.
408
409 Version 7.7-beta3
410
411 Daniel (14 March 2001)
412 - Björn Stenberg provided similar fixes as Jörn did and some additional patches
413   for non-SSL compiles.
414
415 - I increased the interface number for libcurl as I've removed the low level
416   functions from the interface. I also took this opportunity to rename the
417   Curl_strequal function to curl_strequal and Curl_strnequal to
418   curl_strnequal, as they're public libcurl functions (even if they're still
419   undocumented).
420
421   This will make older programs not capable of using the new libcurl with
422   just a drop-in replacement.
423
424 - Jörn Hartroth updated stuff for win32 compiles:
425   o config-win32.h was fixed for socklen_t
426   o lib/ssluse.c had a bad #endif placement
427   o lib/file.c was made to compile on win32 again
428   o lib/Makefile.m32 was updated with the new files
429   o lib/libcurl.def matches the current interface state
430
431 Daniel (13 March 2001)
432 - It only took an hour or so before Jörn Hartroth found a problem in the
433   chunked transfer-encoding. Given his fine example-site, I could easily spot
434   the problem and when I re-read the spec (the part I have pasted in the top
435   of the http_chunks.h file), I realized I had made my state-machine slightly
436   wrong and didn't expect/handle the trailing CRLF that comes after the data
437   in each chunk (and those extra two bytes sure feel wasted).
438
439   Had to modify test case 34 to match this as well.
440
441 Version 7.7-beta2
442
443 Daniel (13 March 2001)
444 - Added the policy stuff to the curl_easy_setopt man page for the two supported
445   policies.
446
447 - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
448   CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
449   supported, and the "least recently used" is used as default if no policy
450   is chosen.
451
452 Daniel (12 March 2001)
453 - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
454   SSL random engine. The random seeding support was also brought to the curl
455   client with the new options --random-file <file> and --egd-file <file>. I
456   need some people to really test this to know they work as supposed. Remember
457   that libcurl now informs (if verbose is on) if the random seed is considered
458   weak (HTTPS connections).
459
460 - Made the chunked transfer-encoding engine detected bad formatted data length
461   and return error if so (we can't possibly extract sensible data if this is
462   the case). Added a test case that detects this. Number 36. Now there are 60
463   test cases.
464
465 - Added 5 new libcurl options to curl/curl.h that can be used to control the
466   persistent connection support in libcurl. They're also documented (fairly
467   thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
468   implemented, although not really tested at this point... Anyway, the new
469   implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
470   CURLOPT_FORBID_REUSE. The ones still left to write code for are:
471   CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
472
473 - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
474   connection support by re-using the same curl handle for every specified file
475   transfer and after some more test case tweaking we have 100% test case OK.
476   I made some test cases return HTTP/1.0 now to make sure that works as well.
477
478 - Had to add 'Connection: close' to the headers of a bunch of test cases so
479   that curl behaves "old-style" since the test http server doesn't do multiple
480   connections... Now I get 100% test case OK.
481
482 - The curl.haxx.se site, the main curl mailing list and my personal email are
483   all dead today due to power blackout in the area where the main servers are
484   located. Horrible.
485
486 - I've made persistance work over a squid HTTP proxy. I find it disturbing
487   that it uses headers that aren't present in any HTTP standard though
488   (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
489   the standard actually defines. I need to get this code excercised on a lot
490   of different HTTP proxies before I feel safe.
491
492   Now I'm facing the problem with my test suite servers (both FTP and HTTP)
493   not supporting persistent connections and libcurl is doing them now. I have
494   to fix the test servers to get all the test cases do OK.
495
496 Daniel (8 March 2001)
497 - Guenole Bescon reported that libcurl did output errors to stderr even if
498   MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
499   there's an error and no ERRORBUFFER is set. This is now corrected.
500
501 Version 7.7-beta1
502
503 Daniel (8 March 2001)
504 - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
505   added two source files and I've run some test downloads that look fine.
506
507 - HTTP HEAD works too, even on 1.1 servers.
508
509 Daniel (5 March 2001)
510 - The current 57 test cases now pass OK. It would suggest that libcurl works
511   using the old-style with one connection per handle. The test suite doesn't
512   handle multiple connections yet so there are no test cases for this.
513
514 - I patched the telnet.c heavily to not use any global variables anymore. It
515   should make it a lot nicer library-wise.
516
517 - The file:// support was modified slightly to use the internal connect-first-
518   then-do approach.
519
520 Daniel (4 March 2001)
521 - More bugs erased.
522
523 Version 7.7-alpha2
524
525 Daniel (4 March 2001)
526 - Now, there's even a basic check that a re-used connection is still alive
527   before it is assumed so. A few first tests have proven that libcurl will
528   then re-connect instead of re-use the dead connection!
529
530 Daniel (2 March 2001)
531 - Now they work intermixed as well. Major coolness!
532
533 - More fiddling around, my 'tiny' client I have for testing purposes now has
534   proved to download both FTP and HTTP with persistent connections. They do
535   not work intermixed yet though.
536
537 Daniel (1 March 2001)
538 - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
539   curl_slist_append() should take a const char * as second argument. It does
540   now.
541
542 Daniel (22 February 2001)
543 - The persistent connections start to look good for HTTP. On a subsequent
544   request, it seems that libcurl now can pick an already existing connection
545   if a suitable one exists, or it opens a new one.
546
547 - Douglas R. Horner mailed me corrections to the curl_formparse() man page
548   that I applied.
549
550 Daniel (20 February 2001)
551 - Added the docs/examples/win32sockets.c file for our windows friends.
552
553 - Linus Nielsen Feltzing provided brand new TELNET functionality and
554   improvements:
555
556   * Negotiation is now passive. Curl does not negotiate until the peer does.
557   * Possibility to set negotiation options on the command line, currently only
558     XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
559   * Now sends the USER environment variable if the -u switch is used.
560   * Use -t to set telnet options (Linus even updated the man page, awesome!)
561
562 - Haven't done this big changes to curl for a while. Moved around a lot of
563   struct fields and stuff to make multiple connections get connection specific
564   data in separate structs so that they can co-exist in a nice way. See the
565   mailing lists for discussions around how this is gonna be implemented. Docs
566   and more will follow.
567
568   Studied the HTTP RFC to find out better how persistent connections should
569   work. Seems cool enough.
570
571 Daniel (19 February 2001)
572 - Bob Schader brought me two files that help set up a MS VC++ libcurl project
573   easier. He also provided me with an up-to-date libcurl.def file.
574
575 - I moved a bunch of prototypes from the public <curl/curl.h> file to the
576   library private urldata.h. This is because of the upcoming changes. The
577   low level interface is no longer being planned to become reality.
578
579 Daniel (15 February 2001)
580 - CURLOPT_POST is not required anymore. Just setting the POST string with
581   CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
582   libcurl already works this way, i.e they require only the parameter to
583   switch on a feature so I think this works well with the rest. Setting a NULL
584   string switches off the POST again.
585
586 - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
587   Reese helped me define a way how to incorporate persistent connections into
588   libcurl in a very smooth way. If done right, no change may have to be made
589   to older programs and they will just start using persistent connections when
590   applicable!
591
592 Daniel (13 February 2001)
593 - Changed the word 'timeouted' to 'timed out' in two different error messages.
594   Suggested by Larry Fahnoe.
595
596 Version 7.6.1
597
598 Daniel (9 February 2001)
599 - Frank Reid and Cain Hopwood provided information and research around a HTTPS
600   PUT/upload problem we seem to have. No solution found yet.
601
602 Daniel (8 February 2001)
603 - An interesting discussion is how to specify an empty password without having
604   curl ask for it interactively? The current implmentation takes an empty
605   password as a request for a password prompt. However, I still want to
606   support a blank user field. Thus, today if you enter "-u :" (without user
607   and password) curl will prompt for the password. Tricky. How would you
608   specify you want the prompt otherwise?
609
610 - Made the netrc parse result possible to use for other protocols than FTP and
611   HTTP (such as the upcoming TELNET fixes).
612
613 - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
614
615 - Added a HTTP file upload code example in the docs/examples/ section on
616   request.
617
618 - Adjusted the FTP response fix slightly.
619
620 Version 7.6.1-pre3
621
622 Daniel (7 February 2001)
623 - S. Moonesamy found a flaw in the response reading function for FTP that
624   could make libcurl not get out of the loop properly when it should, if
625   libcurl got -1 returned when reading the socket.
626
627 - I found a similar mistake in http.c when using a proxy and reading the
628   results from the proxy connection.
629
630 Daniel (6 February 2001)
631 - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
632   for the debug build to work.
633
634 - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
635   brought up yesterday.
636
637 Daniel (5 February 2001)
638 - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
639   a bunch of different areas within libcurl.
640
641 - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
642   the 'static' keyword on a number of libcurl functions. I might need to add a
643   patch that redefines static when libcurl is compiled with that compiler.
644   How do I know when VC++ compiles, anyone?
645
646 Daniel (4 February 2001)
647 - curl_getinfo() was extended with two new options:
648   CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
649   return the full assumed content length of the transfer in the given
650   direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
651   size of a HTTP download. Added descriptions to the man page as well. This
652   was done after discussions with Bob Schader.
653
654 Daniel (3 February 2001)
655 - Ingo Ralf Blum provided another fix that makes curl build under the more
656   recent cygwin installations. It seems they've changed the preset defines to
657   not include WIN32 anymore.
658
659 Version 7.6.1-pre2
660
661 Daniel (31 January 2001)
662 - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
663   be able to return -1. The telnet support crashed due to this and there was a
664   possibility to weird behaviour all over. Linus Nielsen Feltzing helped me
665   find this.
666
667 - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
668   I also made the configure script feature --enable-debug which sets a couple
669   of compiler options when used. It assumes gcc.
670
671 Daniel (30 January 2001)
672 - I finally took a stab at the long-term FIXME item I've had on myself, and
673   now libcurl will properly work when doing a HTTP range-request that follows
674   a Location:. Previously that would make libcurl fail saying that the server
675   doesn't seem to support range requests.
676
677 Daniel (29 January 2001)
678 - I added a test case for the HTTP PUT resume thing (test case 33).
679
680 Version 7.6.1-pre1
681
682 Daniel (29 January 2001)
683 - Yet another Content-Range change. Ok now? Bob Schader checks from his end 
684   and it works for him.
685
686 Daniel (27 January 2001)
687 - So the HTTP PUT resume fix wasn't good. There should appearantly be a
688   Content-Range header when resuming a PUT.
689
690 - I noticed I broke the download-check that verifies that a resumed HTTP
691   download is actually resumed. It got broke because my new 'httpreq' field
692   in the main curl struct. I should get slapped. I added a test case for
693   this now, so I won't be able to ruin this again without noticing.
694
695 - Added a test case for content-length verifying when downloading HTTP.
696
697 - Made the progress meter title say if the transfer is being transfered. It
698   makes the output slightly better for resumes.
699
700 - When dealing with Location: and HTTP return codes, libcurl will not attempt
701   to follow the spirit of RFC2616 better. It means that when POSTing to a
702   URL that is being following to a second place, the standard will judge on
703   what to do. All HTTP codes except 303 and 305 will cause curl to make a
704   second POST operation. 303 will make a GET and 305 is not yet supported.
705
706   I also wrote two test cases for this POST/GET/Location stuff.
707
708 Version 7.6
709
710 Daniel (26 January 2001)
711 - Lots of mails back and forth with Bob Schader finally made me add a small
712   piece of code in the HTTP engine so that HTTP upload resume works. You can
713   now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
714   the ending part of the file starting at given offet to the specified URL.
715
716 Version 7.6-pre4
717
718 Daniel (25 January 2001)
719 - I took hold of Rick Jones' question why we don't use recv() and send() for
720   reading/writing to the sockets and I've now modified the sread() and
721   swrite() macros to use them instead. If nothing else, they could be tested
722   in the next beta-round coming right up.
723
724 - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
725   his research results in how to fix this. It turns out we have to invoke the
726   function several times in some cases. The same goes for the SSL_write().
727
728   I made some rather drastic changes all over libcurl to make all writes and
729   reads get done on one single place so that this repeated-attempts thing
730   would only have to be implemented at one point.
731
732 - Rick Jones spotted that the 'total time' counter really didn't measure the
733   total time very accurate on subsecond levels.
734
735 - Johan Nilsson pointed out the need to more clearly specify that the timeout
736   value you set for a download is for the *entire* download. There's currently
737   no option available that sets a timeout for the connection phase only.
738
739 Daniel (24 January 2001)
740 - Ingo Ralf Blum submitted a series of patches required to get curl to compile
741   properly with cygwin.
742
743 - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
744   that corrected a potential memory leak.
745
746 - Added comments in a few files in a sudden attempt to make the sources more
747   easy to read and understand!
748
749 Daniel (23 January 2001)
750 - Added simple IPv6 detection in the configure script and made the version
751   string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
752   set if curl is compiled with IPv6 support enabled.
753
754 - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
755   IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
756
757 - Made the URL globbing in the client possible to fail silently if there's an
758   error in the globbing. It makes it almost intuitive, so when you don't
759   follow the syntax rules, globbing is simply switched off and the raw string
760   is used instead.
761
762   I still think we'll get problems with IPv6-style IP-addresses when we *want*
763   globbing on parts of the URL as the initial part of the URL will for sure
764   seriously confuse the globber.
765
766 Daniel (22 January 2001)
767 - Björn Stenberg supplied a progress meter patch that makes it look better even
768   during slow starts. Previously it made some silly assumptions...
769
770 - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
771   the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
772
773 Daniel (19 January 2001)
774 - Made the Location: parsers deal with any-length URLs. Thus I removed the last
775   code that restricts the length of URLs that curl supports.
776
777 - Added a --globoff test case (#28) and it quickly identified a memory problem
778   in src/main.c that I took care of.
779
780 Version 7.6-pre3
781
782 Daniel (17 January 2001)
783 - Made the two former files lib/download.c and lib/highlevel.c become the new
784   lib/transfer.c which makes more sense. I also did the rename from Transfer()
785   to Curl_Transfer() in the other source files that use the transfer function
786   in the spirit of using Curl_ prefix for library-scoped global symbols.
787
788 Daniel (11 January 2001)
789 - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
790   letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
791   mention these letters to be escaped. This was posted as a feature request by
792   Jorge Gutierrez and as a bug by Terry.
793
794 - Short options to curl that requires parameters can now be specified without
795   having the option and its parameter space separated. -ofile works as good as
796   -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
797   options only, verbose --long-style options still must be separated with
798   space from their parameters.
799
800 Daniel (8 January 2001)
801 - Francis Dagenais reported that the SCO compiler still fails when compiling
802   curl due to that getpass_r() prototype. I've now put it around #ifndef
803   HAVE_GETPASS_R in an attempt to please the SCO systems.
804
805 - Made some minor corrections to get the client to cleanup properly and I made
806   the separator work again when getting multiple globbed URLs to stdout.
807
808 - Worked with Loic Dachary to get the make dist and make distcheck work
809   correctly. The 'maketgz' script is now using the automake generated 'make
810   dist' when creating release archives. Loic successfully made 'make rpms'
811   automatically build RPMs!
812
813 Loic Dachary (6 January 2001)
814 - Automated generation of rpm packages, no need to be root.
815
816 - make distcheck generates a proper distribution (EXTRA_DIST
817   in all Makefile.am modified to match FILES).
818
819 Daniel (5 January 2001)
820 - Huge client-side hack: now multiple URLs are supported. Any number of URLs
821   can be specified on the command line, and they'll all be downloaded. There
822   must be a corresponding -o or -O for each URL or the data will be written to
823   stdout. This needs more testing, time to release a 7.6-pre package.
824
825 - The krb4 support was broken in the release. Fixed now.
826
827 - Huge internal symbol rename operation. All non-static but still lib-internal
828   symbols should now be prefixed with 'Curl_' to prevent collisions with other
829   libs. All public symbols should be prefixed with 'curl_' and the rest should
830   be static and thus invisible to the outside world. I updated the INTERNALS
831   document to say this as well.
832
833 Version 7.5.2
834
835 Daniel (4 January 2001)
836 - As Kevin P Roth suggested, I've added text to the man page for every command
837   line option and what happens when you specify that option more than
838   once. That hasn't been exactly crystal clear before.
839
840 - Made the configure script possible to run from outside the source-tree. For
841   odd reasons I can't build curl properly outside though. It has to do with
842   curl's dependencies on libcurl...
843
844 - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
845   The older piece is named CHANGES.0 and is added to the CVS repository in
846   case anyone would need it.
847
848 - I added another file 'CVS-INFO' to the CVS. It contains information about
849   files in the CVS that aren't included in release archives and how to build
850   curl when you get the sources off CVS.
851
852 - Updated CONTRIBUTE and FAQ due to the new license.
853
854 Daniel (3 January 2001)
855 - Renamed README.libcurl to LIBCURL
856
857 - Changed headers in all sources files to the new dual license concept of
858   curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
859   accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
860   release archive.
861
862 Daniel (30 December 2000)
863 - Made all FTP commands get sent with the trailing CRLF in one single write()
864   as splitting them up seems to confuse at least some firewalls (FW-1 being
865   one major).
866
867 Daniel (19 December 2000)
868 - Added file desrciptor and FILE handle leak detection to the memdebug system
869   and thus I found and removed a file descriptor leakage in the ftp parts
870   that happened when you did PORTed downloads.
871
872 - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
873
874 Daniel (12 December 2000)
875 - Multiple URL downloads with -O was still bugging. Not anymore I think or
876   hope, or at least I've tried... :-O
877
878 - Francois Petitjean fixed another -O problem
879
880 Version 7.5.1
881
882 Daniel (11 December 2000)
883 - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
884   P Roth found out, at least one CVS client behaved wrongly when it found
885   different newline conventions within the same file.
886
887 - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
888   the SSL stuff.
889
890 Daniel (6 December 2000)
891 - Massimo Squillace correctly described how libcurl could use session ids when
892   doing SSL connections.
893
894 - James Griffiths found out that curl would crash if the file you specify with
895   -o is shorter than the URL! This took some hours to fully hunt down, but it
896   is fixed now.
897
898 Daniel (5 December 2000)
899 - Jaepil Kim sent us makefiles that build curl using the free windows borland
900   compiler. The root makefile now accepts 'make borland' to build curl with
901   that compiler.
902
903 - Stefan Radman pointed out that the test makefiles didn't use the PERL
904   variable that the configure scripts figure out. Actually, you still need
905   perl in the path for the test suite to run ok.
906
907 - Rich Gray found numerous portability problems:
908   * The SCO compiler got an error on the getpass_r() prototype in getpass.h
909     since the curl one differed from the SCO one
910   * The HPUX compiler got an error because of how curl did the sigaction
911     stuff and used a define HPUX doesn't have (or need).
912   * A few more problems remain to be researched.
913
914 - Paul Harrington experienced a core dump using https. Not much details yet.
915
916 Daniel (4 December 2000)
917 - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
918
919 Version 7.5
920
921 Daniel (1 December 2000)
922 - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
923   build fine with the Microsoft compiler on windows too.
924
925 - Fixed the libcurl versioning so that we don't ruin old programs when
926   releasing new shared library interfaces.
927
928 Daniel (30 November 2000)
929 - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
930   actually contains.
931
932 Daniel (29 November 2000)
933 - I removed a bunch of '#if 0' sections from the code. They only make things
934   harder to follow. After all, we do have all older versions in the CVS.
935
936 Version 7.5-pre5
937
938 Daniel (28 November 2000)
939 - I filled in more error codes in the man page error code list that had been
940   lagging.
941
942 - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
943   libcurl option. When used, it'll prevent location following more than the
944   set number of times. It is useful to break out of endless redirect-loops.
945
946 Daniel (27 November 2000)
947 - Added two test cases for file://.
948
949 Daniel (22 November 2000)
950 - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
951   modified time of the remote document. This is a special option since it
952   involves an extra set of commands on FTP servers. (Using the MDTM command
953   which is not in the RFC959)
954
955   curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
956   after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
957   the time wasn't possible to get.
958
959   --head/-I used on a FTP server will now present a 'Last-Modified:' header
960   if curl could get the time of the specified file.
961
962 - Added the option '--cacert [file]' to curl, which allows a specified PEM
963   file to be used to verify the peer's certificate when doing HTTPS
964   connections. This has been requested, rather recently by Hulka Bohuslav but
965   others have asked for it before as well.
966
967 Daniel (21 November 2000)
968 - Numerous fixes the test suite has brought into the daylight:
969
970    * curl_unescape() could return a too long string
971    * on ftp transfer failures, there could be memory leaks
972    * ftp CWD could use bad directory names
973    * memdebug now uses the mprintf() routines for better portability
974    * free(NULL) removed when doing resumed transfers
975
976 - Added a bunch of test cases for FTP.
977
978 - General cleanups to make less warnings with gcc -Wall -pedantic.
979
980 - I made the tests/ftpserver.pl work with the most commonly used ftp
981   operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
982   all I have to do is integrate the ftp server doings in the runtests.pl
983   script so that ftp tests can be run the same way http tests already run.
984
985 Daniel (20 November 2000)
986 - Made libcurl capable of dealing with any-length URLs. The former limit of
987   4096 bytes was a bit annoying when people wanted to use curl to really make
988   life tough on a web server. Now, the command line limit is the most annoying
989   but that can be circumvented by using a config file.
990
991   NOTE: there is still a 4096-byte limit on URLs extracted from Location:
992   headers.
993
994 - Corrected the spelling of 'resolve' in two error messages.
995
996 - Alexander Kourakos posted a bug report and a patch that corrected it! It
997   turned out that lynx and wget support lowercase environment variable names
998   where curl only looked for the uppercase versions. Now curl will use the
999   lowercase versions if they exist, but if they don't, it'll use the uppercase
1000   versions.
1001
1002 Daniel (17 November 2000)
1003 - curl_formfree() was added. How come no one missed that one before? I ran the
1004   test suite with the malloc debug enabled and got lots of "nice" warnings on
1005   memory leaks. The most serious one was this. There were also leaks in the
1006   cookie handling, and a few errors when curl failed to connect and similar
1007   things. More tests cases were added to cover up and to verify that these
1008   problems have been removed.
1009
1010 - Mucho updated config file parser (I'm dead tired of all the bug reports and
1011   weird behaviour I get on the former one). It works slightly differently now,
1012   although I doubt many people will notice the differences. The main
1013   difference being that if you use options that require parameters, they must
1014   both be specified on the same line. With this new parser, you can also
1015   specify long options without '--' and you may separate options and
1016   parameters with : or =. It makes a config file line could look like:
1017
1018         user-agent = "foobar and something"
1019
1020   Parameters within quotes may contain spaces. Without quotes, they're
1021   expected to be a single non-space word.
1022
1023   Had to patch the command line argument parser a little to make this work.
1024
1025 - Added --url as an option to allow the URL to be specified this way. It makes
1026   way nicer config files. The previous way of specifying URLs in the config
1027   file doesn't work anymore.
1028
1029 Daniel (15 November 2000)
1030 - Using certain characters in usernames or passwords for HTTP authentication
1031   failed. This was due to the mprintf() that had a silly check for letters,
1032   and if they weren't isprint() they weren't outputed "as-is". This caused
1033   passwords and usernames using '§' (for example) to fail.
1034
1035 Version 7.4.2
1036
1037 Daniel (15 November 2000)
1038 - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
1039
1040 Daniel (14 November 2000)
1041 - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
1042   "Extensions to FTP" that contains a defined way how the ftp command SIZE
1043   could be assumed to work.
1044
1045 - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
1046   file that isn't prsent on the server. The server might then return a 550 and
1047   curl will fail. Should it instead as Laurent Papier suggests, start
1048   uploading from the beginning as a normal upload?
1049
1050 Daniel (13 November 2000)
1051 - Fixed a crash with the followlocation counter.
1052
1053 - While writing test cases for the test suite, I discovered an old limitation
1054   that prevented -o and -T to be used at the same time. I removed this
1055   immediately as this has no relevance in the current libcurl.
1056   
1057 - Chris Faherty fixed a free-twice problem in lib/file.c
1058
1059 - I fixed the perl http server problem in the test suite.
1060
1061 Version 7.4.2 pre4
1062
1063 Daniel (10 November 2000)
1064 - I've (finally) started working on the curl test suite. It is in the new
1065   tests/ directory. It requires sh and perl. There's a TCP server in perl and
1066   most of the other stuff running a pretty simple shell script.
1067
1068   I've only made four test cases so far, but it proves the system can work.
1069
1070 - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
1071   for sizes on FTP servers. Some servers seem to return different sizes
1072   depending on whether ASCII or BINARY is used!
1073
1074 - Laurent Papier detected that if you appended a FTP upload and everything was
1075   already uploaded, curl would hang.
1076
1077 - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
1078   getpass_r() function it seems some systems actually have.
1079   
1080 - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
1081   it.  If the cookie was set for the full host name (domain=full.host.com),
1082   the cookie was never sent back because of a faulty length comparison between
1083   the set domain length and the current host name.
1084
1085 Daniel (9 November 2000)
1086 - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
1087   it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
1088   but libssl isn't. I haven't verified this fix yet though, as I have no
1089   system that requires those libs to build.
1090   
1091 Version 7.4.2 pre3
1092
1093 Daniel (7 November 2000)
1094 - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
1095   slightly modified license of the getpass.c file as the prototype was changed.
1096
1097 Daniel (6 November 2000)
1098 - Added possibility to set a password callback to use instead of the built-in.
1099   They're controled with curl_easy_setopt() of course, the tags are
1100   CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
1101
1102 - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
1103   times when location: headers were followed.
1104
1105 - Emmanuel Tychon discovered that curl didn't really like user names only in
1106   the URL. I corrected this and I also fixed the since long living problem
1107   with URL encoded user names and passwords in the URLs. They should work now.
1108   
1109 Daniel (2 November 2000)
1110 - When I added --interface, the new error code that was added with it was
1111   inserted in the wrong place and thus all error codes from 35 and upwards got
1112   increased one step. This is now corrected, we're back at the previous
1113   numbers. All new exit codes should be added at the end.
1114
1115 Daniel (1 November 2000)
1116 - Added a check for signal() in the configure script so that if sigaction()
1117   isn't present, we can use signal() instead.
1118
1119 - I'm having a license discussion going on privately. The issue is yet again
1120   GPL-licensed programs that have problems with MPL. I am leaning towards
1121   making a kind of dual-license that will solve this once and for all...
1122
1123 Daniel (31 October 2000)
1124 - Added the packages/ directory. I intend to let this contain some docs and
1125   templates on how to generate custom-format packages for various platforms.
1126   I've now removed the RPM related curl.spec files from the archive root.
1127
1128 Daniel (30 October 2000)
1129 - T. Bharath brought a set of patches that bring new functionality to
1130   curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
1131   certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
1132   and then use the CURLOPT_CAINFO to set the certificate to verify the remote
1133   peer against. After an such an operation with a verification request, the
1134   *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
1135   whether the verification succeeded or not.  
1136
1137 Daniel (27 October 2000)
1138 - Georg Horn brought us a splendid patch that solves the long-standing
1139   annoying problem with timeouts that made curl exit with silly exit codes
1140   (which as been commented out lately). This solution is sigaction() based and
1141   of course then only works for unixes (and only those unixes that actually
1142   have the sigaction() function).
1143
1144 Daniel (26 October 2000)
1145 - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
1146   that made the password get echoed when prompted for interactively. The
1147   getpass() function (now known as my_getpass()) was also fixed to not use any
1148   static buffers. This also means we cannot use the "standard" getpass()
1149   function even for those systems that have it, since it isn't thread-safe.
1150   
1151 - Kevin Roth found out that if you'd write a config file with '-v url', the
1152   url would not be used as "default URL" as documented, although if you wrote
1153   it 'url -v' it worked! This has been corrected now.
1154
1155 - Kevin Roth's idea of using multiple -d options on the same command line was
1156   just brilliant, and I couldn't really think of any reason why we shouldn't
1157   support it! The append function always append '&' and then the new -d
1158   chunk. This enables constructs like the following:
1159
1160         curl -d name=daniel -d age=unknown foobarsite.com
1161
1162 Daniel (24 October 2000)
1163 - I fixed the lib/memdebug.c source so that it compiles on Linux and other
1164   systems. It will be useful one day when someone else but me wants to run the
1165   memory debugging system.
1166
1167 Daniel (23 October 2000)
1168 - I modified the maketgz and configure scripts, so that the configure script
1169   will fetch the version number from the include/curl/curl.h header files, and
1170   then the maketgz doesn't have to rebuild the configure script when I build
1171   release-archives.
1172
1173 - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
1174   enough to not allow @-letters in passwords when they were specified with the
1175   -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
1176   suggests that curl probably should url-decode the password piece of an URL
1177   so that you could pass an encoded @-letter there...
1178   
1179 Daniel (20 October 2000)
1180 - Yet another http server barfed on curl's request that include the port
1181   number in the Host: header always. I now only include the port number if it
1182   isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
1183   run one of those nasty servers.
1184
1185 - The PHP4 module for curl had problems with referer that seems to have been
1186   corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
1187
1188 Daniel (17 October 2000)
1189 - Vladimir Oblomov reported that the -Y and -y options didn't work. They
1190   didn't work for me either. This once again proves we should have that test
1191   suite...
1192   
1193 - I finally changed the error message libcurl returns if you try a https://
1194   URL when the library wasn't build with SSL enabled. It will now return this
1195   error:
1196         "libcurl was built with SSL disabled, https: not supported!"
1197
1198   I really hope it will make it a bit clearer to users where the actual
1199   problem lies.
1200
1201 Version 7.4.1
1202
1203 Daniel (16 October 2000)
1204 - I forgot to remove some of the malloc debug defines from the makefiles in
1205   the release archive (of course).
1206
1207 Version 7.4
1208
1209 Daniel (16 October 2000)
1210 - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
1211
1212 Daniel (12 October 2000)
1213 - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
1214   by an evil ftp server to crash curl. I took the opportunity of replacing a
1215   few other sprintf()s into snprintf()s as well.
1216
1217 Daniel (11 October 2000)
1218 - Found some more memory leaks. This new simple memory debugger has turned out
1219   really useful!
1220
1221 Version 7.4 pre6
1222
1223 Daniel (9 October 2000)
1224 - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
1225   file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
1226   public interface and was wrongly inserted in that header file.
1227
1228 - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
1229   didn't harm anyone since the memory is free()ed on exit anyway.
1230
1231 - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
1232   libcurl-printf() functions. This gives us snprintf() et al on all
1233   platforms. I converted the allocated useragent string to one that uses a
1234   local buffer.
1235
1236 - I've set an #if 0 section around the Content-Transfer-Encoding header
1237   generated in lib/formdata.c. This will hopefully make curl do more
1238   PHP-friendly multi-part posts.
1239
1240 Version 7.4 pre5
1241
1242 Daniel (9 October 2000)
1243 - Nico Baggus found out that curl's ability to force a ASCII download when
1244   using FTP was no longer working! I corrected this. This problem was probably
1245   introduced when I redesigned libcurl for version 7.
1246
1247 - Georg Horn provided a source example that proved a memory leak in libcurl.
1248   I added simple memory debugging facilities and now we can make libcurl log
1249   all memory fiddling functions. An additional perl script is used to analyze
1250   the output logfile and to match malloc()s with free()s etc. The memory leak
1251   Georg found turned out to be the main cookie struct that cookie_cleanup()
1252   didn't free! The perl script is named memanalyze.pl and it is available in
1253   the CVS respository, not in the release archive.
1254
1255 Daniel (8 October 2000)
1256 - Georg Horn found a GetHost() problem. It turned out it never assigned the
1257   pointer in the third argument properly! This could make a crash, or at best
1258   a memory leak!
1259
1260 Version 7.4 pre4
1261
1262 Daniel (6 October 2000)
1263 - Is the -F post following the RFC 1867 spec? We had this dicussion on the
1264   mailing list since it appears curl can't post -F form posts to a PHP
1265   receiver... I've been in touch with the PHP developers about this.
1266
1267 - Domenico Andreoli found out that the long option '--proxy' wasn't working
1268   anymore! The option parser got confused when I added the --proxytunnel for
1269   7.3. This was indeed a very old flaw that hasn't turned up until now...
1270
1271 - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
1272   stuff on win32. He also pointed out that lib source files were compiled with
1273   -I../src which isn't only wrong but plain stupid!
1274
1275 - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
1276   a local variable badly, that could lead to crashes.
1277
1278 Version 7.4 pre3
1279
1280 Daniel (4 October 2000)
1281 - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
1282   as is the -w section in curl.1. I added two options to enable the user to
1283   get information about the received headers' size and the size of the HTTP
1284   request. T. Bharath requested them.
1285   
1286 Daniel (3 October 2000)
1287 - Corrected a sever free() before use in the new add_buffer_send()! ;-)
1288
1289 Version 7.4 pre2
1290
1291 Daniel (3 October 2000)
1292 - Jason S. Priebe sent me patches that changed the way curl issues HTTP
1293   requests. The entire request is now issued in one single shot. It didn't do
1294   this previously, and it has turned out that since the common browsers do it
1295   this way, some sites have turned out to work with browsers but not with
1296   curl! Although this is not a client-side problem, we want to be able to
1297   fully emulate browsers, and thus we have now adjusted the networking layer
1298   to slightly more appear as a browser. I adjusted Jason's patch, the faults
1299   are probably mine.
1300
1301 Daniel (2 October 2000)
1302 - Anyone who ever uploaded data with curl on a slow link has noticed that the
1303   progess meter is updated very infrequently. That is due to the large buffer
1304   size curl is using. It reads 50Kb and sends it, updates the progress meter
1305   and loops. 50Kb is very much on a slow link, although it is pretty neat to
1306   use on a fast one.
1307
1308   I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
1309   start with. If curl's average upload speed is faster than buffer size bytes
1310   per second, curl will increase the used buffer size up to max 50Kb. It
1311   should make the progress meter work better.
1312   
1313 Version 7.4 pre1
1314
1315 Daniel (29 September 2000)
1316 - Ripped out the -w stuff from the library and put in the curl tool. It gets
1317   all the relevant info from the library using the new curl_easy_getinfo()
1318   function.
1319
1320 - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
1321   removed a compiler warning from hostip.c that OpenBSD people get.
1322
1323 Daniel (28 September 2000)
1324 - Of course (I should probably get punished somehow) I didn't properly correct
1325   the #include lines for the base64 stuff in the kerberos sources in the just
1326   released 7.3 package. They still include the *_krb.h files! Now, the error
1327   is sooo very easy to spot and fix so I won't bother with a quick bug fix
1328   release. I'll post a patch whenever one is needed instead. It'll be
1329   available in the CVS in a few minutes anyway.
1330
1331 Version 7.3
1332
1333 Daniel (28 September 2000)
1334 - Removed the base64_krb.[ch] files. They've now replaced the former
1335   base64.[ch] files.
1336
1337 Daniel (26 September 2000)
1338 - Updated some docs.
1339
1340 - I changed the OpenSSL fix to work with older versions as well. The posted
1341   patch was only working with 0.9.6 and no older ones.
1342   
1343 Version 7.3-pre8
1344
1345 Daniel (25 September 2000)
1346 - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
1347   showed us what needed to get patched in order to make it build properly
1348   again.
1349
1350 - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
1351   approach to the solution Dirk himself suggested. The bug made a cookie
1352   header that didn't end with a trailing semicolon to not get parsed.
1353
1354 - I've marked -c and -t deprecated now. If you use any of them, curl will tell
1355   you to use "-C -" or "-T -" instead. I don't think occupying two letters for
1356   nearly identical functions is good use. Also, -T - kind of follows the curl
1357   tradition of using - for stdin where a file name is expected.
1358
1359 Daniel (23 September 2000)
1360 - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
1361   work!
1362
1363 Daniel (21 September 2000)
1364 - The kerberos code is not quite thread-safe yet. There are a few more globals
1365   that need to be take care of. Let's get the upload working first!
1366
1367 Daniel (20 September 2000)
1368 - Richard Prescott solved another name lookup buffer size problem. I took this
1369   opportunity to rewrite the GetHost() function. With these large buffer
1370   sizes, I think keeping them as local arrays quickly turn ugly. I now use
1371   malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
1372   large buffer in case of demand (errno == ERANGE) in case a solution like
1373   that would become necessary. I still want to avoid that kind of nastiness.
1374
1375 - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
1376   as smooth as it could.
1377
1378 - Added a docs/examples directory with two tiny example sources that show how
1379   to use libcurl. I hope users will supply me with more useful examples
1380   further on.
1381
1382 - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
1383   config struct in the src/main.c file since certain compilers have that word
1384   "reservered".  I figure that is some kind of C++ decease.
1385
1386 - Updated the curl.1 man page with --interface and --krb4.
1387
1388 - Modified the base64Encode() function to work like the kerberos one, so that
1389   I could remove the use of that. There is no need for *two* base64 encoding
1390   functions! ;-)
1391
1392 Version 7.3pre5
1393
1394 Daniel (19 September 2000)
1395 - The kerberos4-layer source code that is much "influenced" by the original
1396   krb4 source code, through yafc into curl, was using quite a lot of global
1397   variables. libcurl can't work properly with globals like that why I had to
1398   clean up almost every function in the new security.c to make them use
1399   connection specific variables instead of the globals. I just hope I didn't
1400   destroy anything now... :-) configure updated, version string now reflects
1401   krb4 built-in. It almost works now. Only uploads are still being naughty.
1402
1403 Version 7.3pre3
1404
1405 Daniel (18 September 2000)
1406 - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
1407   curl. Martin is the primary author of the ftp client named yafc and he did
1408   not hesitate to help us implement this when I asked him. Many and sincere
1409   thanks to a splendid effort. It didn't even take many hours!
1410
1411 - Stephen Kick supplied a big patch that introduces the --interface flag to
1412   the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
1413   outgoing interface to use for your request. This may not work on all
1414   platforms. This needs testing.
1415
1416 - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
1417   name didn't resolve properly. This was due to the GetHost() function not
1418   returning an error even though it failed on some platforms!
1419
1420 Daniel (15 September 2000)
1421 - Updated all sorts of documents in regards to the new proxytunnel support.
1422
1423 Version 7.3pre2
1424
1425 Daniel (15 September 2000)
1426 - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
1427   Adjusted it. Added better info message when setting up the tunnel and the
1428   pasv message when doing the second connect.
1429   
1430 Version 7.3pre1
1431
1432 Daniel (15 September 2000)
1433 - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
1434   second connection on ftp needed that.
1435
1436 - TheArtOfHTTPScripting was corrected all over. I both type and spell really
1437   bad at times!
1438   
1439 Daniel (14 September 2000)
1440 - -p/--proxytunnel was added to 'curl'. It uses the new
1441   CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
1442   through the specified http proxy. At the moment, this should work with ftp.
1443
1444 Daniel (13 September 2000)
1445 - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
1446   and mailed the patch to the mailing list.
1447
1448 Daniel (7 September 2000)
1449 - I changed the #define T() in curl.h since it turned out it wasn't really
1450   a good symbol to use (when you compiled PHP with curl as a module, that
1451   define collided with some IMAP define or something). This was posted to the
1452   PHP bug tracker.
1453
1454 - I added extern "C" stuff in two header files to better allow libcurl usage
1455   in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
1456   this.
1457
1458 Version 7.2.1
1459
1460 Daniel (31 August 2000)
1461 - Albert Chin-A-Young fixed the configure script *again* and now it seems to
1462   detect Linux name resolving properly! (heard that before?)
1463
1464 - Troels Walsted Hansen pointed out that downloading a file containing the
1465   letter '+' from an ftp server didn't work. It did work from HTTP though and
1466   the reason was my lame URL decoder.
1467
1468 - I happened to notice that -I didn't at all work on ftp anymore. I corrected
1469   that.
1470
1471 Version 7.2
1472
1473 Daniel (30 August 2000)
1474 - Understanding AIX is a hard task. I believe I'll never figure out why they
1475   solve things so differently from the other unixes. Now, I'm left with the
1476   AIX 4.3 run-time warnings about duplicate symbols that according to this
1477   article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
1478   libtool flaw. I tried the mentioned patch, although that stops the linking
1479   completely.
1480
1481   So, if I select to ignore the ld warnings there are compiler warnings that
1482   fill the screen pretty bad when curl compiles. It turns out that if I want
1483   to '#include <arpa/inet.h>', I can get tid of the warnings by include the
1484   following three include files before that one:
1485
1486         #include <net/if_dl.h>
1487         #include <sys/mbuf.h>
1488         #include <netinet/if_ether.h>
1489
1490   Now, is it really sane to add those include files before arpa/inet.h in all
1491   the source files that include it?
1492
1493   Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
1494   login to try everything on.
1495
1496 Daniel (24 August 2000)
1497 - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
1498   was not up to date but lacked several object files.
1499
1500 - More work on the naming.
1501
1502 - Albert Chin-A-Young provided a configure-check for large file support, as
1503   some systems seem to need that for them to work. Had to change the position
1504   for the config.h include file in every .c file in the libcurl dir...
1505
1506 - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
1507   option instead of the messy way I've left described below. It seems to
1508   work. The libcurl fix remained the same as yesterday.
1509
1510 Daniel (23 August 2000)
1511 - Back on the -d stripping newlines thing. The 'plain post' thing was added
1512   when I had no thought of that one could actually post binary data with
1513   it. Now, I have to add this functionality in a graceful manner and I think
1514   I've managed to come up with a way: '-d @file;binary' will thus post the
1515   file binary, exactly as its contents are. It is implemented with a new
1516   *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
1517   libcurl can't strlen() the data in these cases.
1518
1519 - Albert Chin-A-Young made some very serious efforts and all the name
1520   resolving problems seem to have been sorted out now on all the platforms
1521   that previously showed them. I'll make another release now anyday because of
1522   this.
1523
1524 - The FAQ was much enhanced when it comes to the licensing issues thanks to
1525   Bjorn Reese.
1526
1527 Daniel (21 August 2000)
1528 - Rick Welykochy pointed out a problem when you use -d to post and you want to
1529   keep the newlines, as curl strips them off as a bonus before posting...
1530   This needs to be addressed.
1531
1532 Version 7.1.1
1533
1534 Daniel (21 August 2000)
1535 - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
1536   me configure-code that turned out to be very similar to my existing tests
1537   which only make me more sure I'm on the right path. I changed the order of
1538   the tests slightly, as it seems that some compilers don't yell error if a
1539   function is used with too many parameters. Thus, the first tested function
1540   will seem ok... Let's hope more compilers think of too-few parameters as bad
1541   manners, as we're now trying the functions in that order; fewer first. I
1542   should also add that Lars Hecking mailed me and volunteered to run tests on
1543   a few odd systems. Coalan is keeping his work over at
1544   http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
1545   future as well.
1546
1547 Daniel (18 August 2000)
1548 - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
1549   think this is the reason for the continued trouble though.
1550
1551 Daniel (17 August 2000)
1552 - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
1553   should affect some AIX, Digital Unix and HPUX 10 systems.
1554
1555 Daniel (15 August 2000)
1556 - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
1557   as AIX 4.3. Now why did problems occur before?
1558
1559 - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
1560   used combined with multiple URL retrievales. All but the first display got
1561   screwed up!
1562
1563 Daniel (11 August 2000)
1564 - Jason Priebe and an anonymous friend found some host names the Linux version
1565   of curl could not resolve. It turned out the buffer used to retrieve that
1566   information was too small. Fixed. One could argue about the usefulness of
1567   not having the slightest trace of a man page for gethostbyname_r() on my
1568   Linux Redhat installation...
1569
1570 Daniel (10 August 2000)
1571 - Balaji S Rao was first in line to note the missing possibility to replace
1572   the Content-Type: and Content-Length: headers when doing -d posts. I added
1573   the possibility just now. It seems some people wants to do standard posts
1574   using custom Content-Types.
1575
1576 Daniel (8 August 2000)
1577 - Mike Dowell correctly discovered that curl did not approve of URLs with no
1578   user name but password. As in 'http://:foo@haxx.se'. I corrected this.
1579
1580 Version 7.1
1581
1582 Daniel (7 August 2000)
1583 - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
1584
1585 - I added my new document in the docs directory. It is aimed to become a sort
1586   of tutorial on how to do HTTP scripting with curl.
1587
1588 Daniel (4 August 2000)
1589 - Working with Rich Gray on compiling curl for lots of different platforms.
1590   My fix for AIX 3.2 was not good enough and was slightly changed, I had to
1591   move an include file before another, as is now described in the source.
1592
1593   AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
1594   functions that the configure script didn't check for and thus the compile
1595   broke with an error. I have now changed the gethostbyname_r() check in the
1596   configure file to support all three versions of both these functions. My
1597   implementation that uses the AIX-style is though not yet verified and I may
1598   get problems to fix it if it turns out to bug since I don't have access to
1599   any system using that.
1600
1601   For problems like that, I made the configure script allow --disable-thread
1602   to completely switch off the check for threadsafe versions of a few
1603   functions and thus go with the "good old versions" that tend to work
1604   although will break thread-safeness for libcurl. Most people won't use
1605   libcurl for other things than curl though, and curl doesn't need a
1606   thread-safe lib.
1607
1608 - Working on my big tutorial about HTTP scripting with curl.
1609
1610 Daniel (1 August 2000)
1611 - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
1612   that was just a left-over from passed times. The strequal() is now a true
1613   function supplied by libcurl for a portable case insensitive string
1614   comparison. I added the prototypes in include/curl.h and removed the
1615   now obsolete #define.
1616
1617 - Igor Khristophorov made a fix to allow resumed download from Sun's
1618   JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
1619   headers.
1620
1621 - The makefiles forced a static library build, which is bad since we now use
1622   libtool and thus have excellent shared library support! Albert Chin-A-Young
1623   found out.
1624
1625 Version 7.0.11beta
1626
1627 Daniel (1 August 2000)
1628 - Albert Chin-A-Young pointed out that 'make install' did not properly create
1629   the header include directory, why it failed to install the header files as
1630   it should. Automake isn't really equipped to deal with subdirectories
1631   without Makefiles in any nice way. I had to run ahead and add Makefiles in
1632   both include and include/curl before I managed to create a top-level
1633   makefile that succeeds in install everything properly!
1634
1635 - Ok, no more "features" added now. Let's just verify that there's no major
1636   flaws added now.
1637
1638 Daniel (31 July 2000)
1639 - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
1640   of those internally generated headers. They didn't settle with the blank
1641   ones you could tell curl to use. I rewrote the header-replace stuff a
1642   little. Now, if you replace an internal header with your own and that new
1643   one is a blank header you will only remove the internal one and not get any
1644   blank. I couldn't figure out any case when you want that blank header.
1645
1646 Daniel (29 July 2000)
1647 - It struck me that the lib used localtime() which is not thread-safe, so now
1648   I use localtime_r() in the systems that has it.
1649
1650 - I went through this entire document and removed all email addresses and left
1651   names only. I've really made an effort to always note who brought be bug
1652   reports or fixes, but more and more people ask me to remove the email
1653   addresses since they become victims for spams this way. Gordon Beaton got me
1654   working on this.
1655
1656 Daniel (27 July 2000)
1657 - Jörn Hartroth found out that when you specified a HTTP proxy in an
1658   environment variable and used -L, curl failed in the second fetch. I
1659   corrected this problem and posted a patch to the list. No need for an extra
1660   beta release just for this.
1661
1662 Version 7.0.10beta
1663
1664 Daniel (27 July 2000)
1665 - So, libtool replaced two of my files with symbolic links and I forgot to add
1666   the two new libtool files to the release archive (and they were added as
1667   symlinks as well!) This of course lead to that the configure script failed
1668   on 7.0.9...
1669
1670 Version 7.0.9beta
1671
1672 Daniel (25 July 2000)
1673 - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
1674   libtoolified, just as we've wanted for a while now. He also made the
1675   recently added man pages get installed properly on 'make install' and some
1676   other nice cleanups.
1677
1678 - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
1679   page using a password, and that page then sends a Location: to another
1680   server that curl follows, curl will send the user name and password to that
1681   server as well.
1682
1683   Now, I'll never be able to make curl do Location: following all that perfect
1684   and you're all sooner or later required to write a script to do several
1685   fetches when you're doing advanced stuff, but now I've modified curl to at
1686   least *only* send the user name and password to the original server. Which
1687   means that if get a page from server A with a password, that forwards curl
1688   to server B, curl won't use the password there. If server B then forwards
1689   curl back to server A again, the password will be used again.
1690
1691   This is not a perfect implementation, as in a browser case it would only use
1692   the password if the left-prefix of the first path is the same. I just think
1693   that this fix prevents a somewhat lurky "security hole".
1694
1695   As a side-note in this subject: HTTP passwords are sent in cleartext and
1696   will never be considered to be safe or secure. Use HTTPS for that.
1697
1698 - As discussed on the mailing list, I converted the FTP response reading
1699   function into using select() which then allows timeouts (even under win32!)
1700   if the command-reply session gets too slow or dies completely. I made a
1701   default timeout on 3600 seconds unless anything else is specified, since I
1702   don't think anyone wants to wait more than that for a single character to
1703   get received...
1704
1705 - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
1706   the rfc1867 form posts. He introduced 'name=<file' which brings a means to
1707   suuply very large text chunks read from the given file name. It differs from
1708   'name=@file' in the way that this latter thing is marked in the uploaded
1709   contents as a file upload, while the first is just text (as in a input or
1710   textarea field). Torsten also corrected a bug that would happen if you used
1711   %s or similar in a -F file name.
1712
1713 - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
1714   files to/from FTP using type ASCII curl should not expect the transfer to be
1715   the exact size reported by the server as the file size. Since ASCII may very
1716   well mean that the content is translated while transfered, the final size
1717   may very well differ. Therefor, curl now ignores the file size when doing
1718   ASCII transfers in FTP.
1719
1720 Daniel (24 July 2000)
1721 - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
1722   port number to be set separately from the proxy host name.
1723
1724 - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
1725
1726 - The FTP transfer code now accepts a 250-code as well as the previously
1727   accepted 226, after a successful file transfer. Mohan <mnair at
1728   evergreen-funds.com> pointed this out.
1729
1730 - The check for *both* nsl and socket was never added in the v7 configure.in
1731   when I moved the main branch. I re-added that check to configure.in. This was
1732   discovered by Rich Gray.
1733
1734 - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
1735   curl_disconnect() which of course meant libcurl ate memory.
1736
1737 - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
1738   properly include the port number if non-default ports were used. This should
1739   now have been fixed.
1740
1741 - HTTP connect errors now return errors earlier. This was most notably causing
1742   problems when the HTTPS certificate had problems and later caused a crash.
1743   Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
1744   and suggesting a fix...
1745
1746 Daniel (21 June 2000)
1747 - After a "bug report" I received where the user was using both -F and -I in a
1748   HTTP request (it severly confused the library I should add), I added some
1749   checks to src/main.c that prevents setting more than one HTTP request
1750   command, no matter what the user wants! ;-)
1751
1752 Version 7.0.8beta
1753
1754 Daniel (20 June 2000)
1755 - I did a major replace in many files to use the new curl domain haxx.se
1756   instead of the previous one.
1757
1758 - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
1759   makes a POST after it has followed a location. When the initial POST has
1760   been done, it'll turned into a GET for the further requests. This is only
1761   interesting when using -L/--location *and* doing a POST at the same time.
1762
1763   While messing with this, I added another weird feature I call 'auto
1764   referer'. If you append ';auto' to the right of a given referer string (or
1765   only use that string as referer), libcurl will automatically set the
1766   previoud URL as refered when it follows a Location: and gets a succeeding
1767   document.
1768
1769 - My hero Rich Gray found the very obscure FTP bug that happened to him only
1770   when passing through a particular firewall and using the PORT command. It
1771   turned out that PORT was the only command in the lib/ftp.c source that
1772   didn't send a proper \r\n sequence but instead used the faulty \n which as
1773   it seemed is supported by most major ftp servers... :-O
1774
1775 Version 7.0.7beta
1776
1777 Daniel (16 June 2000)
1778 - I had avoided this long enough now, so I moved the alternative progress bar
1779   stuff from the lib and added it to the client code. This is now using the
1780   recently added progress callback and it seems to work pretty much like
1781   before. Since it is only one progress bar and you and download and upload at
1782   the same time, this bar shows the combined progress of both directions. This
1783   code was just ported from the old place to this, Lars is still our saviour!
1784   ;-) This also made the documentation more accurate since I never removed
1785   this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
1786   from the library since the lib has only one internal progress meter and it
1787   will never get another. It is although likely that the internal one also
1788   will be moved to the client code in the future (when I have other means of
1789   getting the writeout data and move that too to the client).
1790
1791 - I took the opportunity to verify that standard progress meter works and I
1792   found out it didn't get inited properly. Grrr. I corrected that as well.
1793
1794 Daniel (15 June 2000)
1795 - I thought I'd better verify that the -F option still works in v7 and of
1796   course it didn't... :-/ Anyway, I had the problems I could discover
1797   corrected. About one month of beta testing and not a single person has used
1798   this feature with v7?
1799
1800 - Björn correctly pointed out that the --progress-bar still doesn't work in
1801   v7. Hm.
1802
1803 Daniel (14 June 2000)
1804 - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
1805   should. I corrected this.
1806
1807 Version 7.0.6beta
1808
1809 Daniel (14 June 2000)
1810 - Björn Stenberg pointed out several problems (related to win32 compiling):
1811   lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
1812   src/main.c had several minor problems
1813   lib/makefile.m32 had getpass.[co] twice
1814   src/config-win32.h lacked the HAVE_FCNTL_H define
1815   both config-win32.h files now only set the HAVE_UNISTD_H define if the
1816   define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
1817   to set it.
1818
1819 Version 7.0.5beta
1820
1821 Daniel (14 June 2000)
1822 - Applied Luong Dinh Dung's comments about a few win32 compile problems.
1823
1824 - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
1825   binary. It won't do it if the -B / --use-ascii option is used. That option
1826   is now an extended version of the previous -B /--ftp--ascii. The flag was
1827   already in use be the ldap as well so the new name fits pretty good. The
1828   libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
1829   obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
1830   compiler around.
1831
1832 Daniel (13 June 2000)
1833 - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
1834   since it free()ed the main curl struct *twice*. This is now corrected.
1835
1836 Daniel (9 June 2000)
1837 - Updated the RESOURCES file, added a README.win32 file.
1838
1839 Daniel (8 June 2000)
1840 - So I finally added the progress callback to the *setopt() options and it
1841   should work now. I don't have the energy to write any test program for it
1842   right now.
1843 - Made the callback function typedefs public in curl/curl.h for comfort. Just
1844   in case anyone wanna fiddle with such pointers.
1845 - Updated the curl_easy_setopt() man page accordingly.
1846
1847 Version 7.0.4beta
1848
1849 Daniel (2 June 2000)
1850 - I noticed that when doing Location: following, we lost custom headers in all
1851   but the first request.
1852 - Removed the 'HttpPost' struct and moved the header stuff to the more generic
1853   curl_slist.
1854 - Added some better slist-cleanups in src/main.c
1855
1856 Version 7.0.3beta
1857
1858 Daniel (31 May 2000)
1859 - So I discovered that I released the 7.0.2beta without it being able to
1860   compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
1861   feature a different amount of arguments on different systems so I had to add
1862   a configure check for this and adjust the code slightly.
1863
1864 Version 7.0.2beta
1865
1866 Daniel (29 May 2000)
1867 - Corrected the bits.* assignments when using CURLOPT options that only
1868   toggles one of those bits.
1869
1870 - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
1871   usage of the gethostbyname_r() and similar functions in case they're around,
1872   since that make libcurl much better threadsafe in many systems (such as
1873   solaris). I added the checks for these functions to the configure script.
1874
1875   I can't explain why, but the inet_ntoa_r() function did not appear in my
1876   Solaris include files, I had to add my own include file for this for now.
1877
1878 Daniel (22 May 2000)
1879 - Jörn Hartroth brought me fixes to make the win32 version compile properly as
1880   well as a rename of the 'interface' field in the urldata struct, as it seems
1881   to be reserved in some gcc versions!
1882
1883 - Rich Gray struck back with yet some portability reports. Data General DG/UX
1884   needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
1885   More fixes are expected as a result of Richies very helpful work.
1886
1887 Version 7.0.1beta
1888
1889 Daniel (21 May 2000)
1890 - Updated lots of #defines, enums and variable type names in the library. No
1891   more weird URG or URLTAG prefixes. All types and names should be curl-
1892   prefixed to avoid name space clashes. The FLAGS-parameter to the former
1893   curl_urlget() has been converted into a bunch of flags to use in separate
1894   setopt calls. I'm still focusing on the easy-interface, as the curl tool is
1895   now using that.
1896
1897 - Bjorn Reese has provided me with an asynchronous name resolver that I plan
1898   to use in upcoming versions of curl to be able to gracefully timeout name
1899   lookups.
1900
1901 Version 7.0beta
1902
1903 Daniel (18 May 2000)
1904 - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
1905   source codes to be dependent on the lib version. This define is now set to
1906   a dexadecimal number, with 8 bits each for major number, minor number and
1907   patch number. In other words, version 1.2.3 would make it 0x010203. It also
1908   makes a larger number a newer version.
1909
1910 Daniel (17 May 2000)
1911 - Martin Kammerhofer correctly pointed out several flaws in the FTP range
1912   option. I corrected them.
1913 - Removed the win32 winsock init crap from the lib to the src/main.c file
1914   in the application instead. They can't be in the lib, especially not for
1915   multithreaded purposes.
1916
1917 Daniel (16 May 2000)
1918 - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
1919   There is still more work to do, but the first step is now taken.
1920   <curl/easy.h> is the include file to use.
1921
1922 Daniel (14 May 2000)
1923 - FTP URLs are now treated slightly different, more according to RFC 1738.
1924 - FTP sessions are now performed differently, with CWD commands to change
1925   directory instead of RETR/STOR/LIST with the full path. Discussions with
1926   Rich Gray made me notice these problems.
1927 - Janne Johansson discovered and corrected a buffer overflow in the
1928   src/usrglob.c file.
1929 - I had to add a lib/strequal.c file for doing case insensitive string
1930   compares on all platforms.
1931
1932 Daniel (8 May 2000):
1933 - Been working lots on the new lib.
1934 - Together with Rich Gray, I've tried to adjust the configure script to work
1935   better on the NCR MP-RAS Unix.
1936
1937 Daniel (2 May 2000):
1938 - Albert Chin-A-Young pointed out that I had a few too many instructions in
1939   configure.in that didn't do any good.
1940
1941 Daniel (24 April 2000):
1942 - Added a new paragraph to the FAQ about what to do when configure can't
1943   find OpenSSL even though it is installed. Supplied by Bob Allison
1944
1945 Daniel (12 April 2000):
1946 - Started messing around big-time to convert the old library interface to a
1947   better one...
1948
1949 Daniel (8 April 2000):
1950 - Made the progress bar look better for file sizes between 9999 kilobytes
1951   and 100 megabytes. They're now displayed XX.XM.
1952 - I also noticed that ftp fetches through HTTP proxies didn't add the user
1953   agent string. It does now.
1954 - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
1955   on a Linux machine. It still a) requires me to be root to do it, b) leaves
1956   the rpm packages laying at some odd place on my disk c) doesn't work to
1957   build the ssl version of curl since I didn't install openssl from an rpm
1958   package so now the rpm crap thinks I don't have openssl and refuses to build
1959   a package that depends on ssl... Did I mention I don't get along with RPM?
1960 - Once again I received a bug report about autoconf not setting -L prior to -l
1961   on the command line when checking for libs. In this case it made the native
1962   cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
1963   reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
1964   is a pity there's no newer release around...
1965
1966 Daniel (4 April 2000):
1967 - Marco G. Salvagno supplied me with two fixes that
1968   appearantly makes the OS/2 port work better with multiple URLs.
1969
1970 Daniel (2 April 2000):
1971 - Another Location: fix. This time, when curl connected to a port and then
1972   followed a location with an absolute URL to another port, it misbehaved.
1973
1974 Daniel (27 March 2000):
1975 - H. Daphne Luong pointed out that curl was wrongly
1976   messing up the proxy string when fetching a document through a http proxy,
1977   which screwed up multiple fetches such as in location: followings.
1978
1979 Daniel (23 March 2000):
1980 - Marco G. Salvagno corrected my badly applied patch he
1981   actually already told me about!
1982
1983 - H. Daphne Luong brought me a fix that now makes curl
1984   ignore select() errors in the download if errno is EINTR, which turns out to
1985   happen every now and then when using libcurl multi-threaded...
1986
1987 Daniel (22 March 2000):
1988 - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
1989   was accidentally #defined in config-win32.h, which it shouldn't have been.
1990   The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
1991   makefile for MS VC++.
1992
1993 Daniel (21 March 2000):
1994 - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
1995   one of the AM_* macros searches for a BSD compatible install already. Janne
1996   Johansson made me aware of this.
1997
1998 Version 6.5.2
1999
2000 Daniel (21 March 2000):
2001 - Paul Harrington quickly pointed out to me that 6.5.1
2002   crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
2003   the -D adjustments in src/main.c.
2004
2005 Version 6.5.1
2006
2007 Daniel (20 March 2000):
2008 - An anonymous post on sourceforge correctly pointed out a possible buffer
2009   overflow in the curl_unescape() function for URL conversions. The main
2010   problem with this bug is that the ftp download uses that function and this
2011   single- byte overflow could lead to very odd bugs (as one reported by Janne
2012   Johansson).
2013
2014 Daniel (19 March 2000):
2015 - Marco G. Salvagno supplied me with a series of patches
2016   that now allows curl to get compiled on OS/2. It even includes a section in
2017   the INSTALL file. Very nice job!
2018
2019 Daniel (17 March 2000):
2020 - Wham Bang supplied a patch for the lib/Makefile.vc6
2021   file. We still need some fixes for the config-win32.h since it appears that
2022   VC++ and mingw32 have different opinions about (at least) unistd.h's
2023   existence.
2024
2025 Daniel (15 March 2000):
2026 - I modified the -D/--dump-header workings so that it doesn't write anything
2027   to the file until it needs to. This way, you can actually use -b and -D
2028   on the same file if you want repeated invokes to store and read the cookies
2029   in that one single file.
2030
2031 - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
2032   Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
2033   stuff from the sources (they're covered by the config-win32.h now).
2034
2035 - Pascal Gaudette fixed a missing ldap.c problem in the
2036   Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
2037
2038 Daniel (14 March 2000):
2039 - Paul Harrington pointed out that the 'http_code' variable in the -w output
2040   was never written. I fixed it now.
2041
2042 - Janne Johansson reported the complaints that OpenBSD does
2043   when getdate.c #includes malloc.h. It claims stdlib.h should be included
2044   instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
2045   the configure.in for malloc.h and stdlib.h.
2046
2047 Version 6.5
2048
2049 Daniel (13 March 2000):
2050 - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
2051   single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
2052   the standards say, but I added a white space between the name/value pairs to
2053   perhaps make them work better.
2054
2055 - Added the perl check back in the configure.in again since the mkhelp.pl
2056   script needs it!
2057
2058 - Made some beautifications in the curl man page.
2059
2060 Daniel (3 March 2000):
2061 - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
2062   HAVE_STRDUP.
2063
2064 Daniel (3 March 2000):
2065 - Uploaded the 6.5pre2 package.
2066
2067 Daniel (2 March 2000):
2068 - Removed the perl-programs from the distribution, they never made many people
2069   happy and I'll still keep them available on the web.
2070
2071 - Added the -w and -N stuff to the man page. Documented the new progress meter
2072   display in README.curl.
2073
2074 - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
2075   Möller from the openssl development team helped bringing me the details for
2076   fixing an OpenSSL usage flaw. It became apparent when they released openssl
2077   0.9.5 since that barfed on curl's bad behavior (not seeding a random number
2078   thing).
2079
2080 - Yet another option: -N/--no-buffer disables buffering in the output stream.
2081   Probably most useful for very slow transfers when you really want to get
2082   every byte curl receives within some preferred time. Andrew <tmr at gci.net>
2083   suggested this.
2084
2085 - Damien Adant mailed me his fixes for making curl compile on Ultrix.
2086
2087 Daniel (24 February 2000):
2088 - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
2089
2090   I should also make a note here, if nothing else to myself, that when using
2091   the %-syntax for variables in DOS command prompts, you must use two %-
2092   letters for each one since that is an escape letter there! Maybe I should
2093   use another letter instead!
2094
2095 - Added more variables to -w:
2096
2097   'http_code'
2098   'time_namelookup'
2099   'time_connect'
2100   'time_pretransfer'
2101   'url_effective'
2102
2103 - Made -w@filename read the syntax from a file and -w@- reads the syntax from
2104   stdin in the good old "standard" curl way.
2105
2106 Daniel (22 February 2000):
2107 - Released a 6.5pre1 version to get some test and user feedback.
2108
2109 Daniel (21 February 2000):
2110
2111 - I added the -w/--write-out flag and some variables to go with it. -w is a
2112   single string, whatever you enter there will be written out when curl has
2113   completed a successful request. There are some variable substitutions and
2114   they are specified as '%{variable}' (without the quotes). Variables that
2115   exist as of this moment are:
2116
2117         total_time     - total transfer time in seconds (with 2 decimals)
2118         size_download  - total downloaded amount of bytes
2119         size_upload    - total uploaded amount of bytes
2120         speed_download - the average speed of the entire download
2121         speed_upload   - the average speed of the entire upload
2122
2123   I will of course add more variables, but I need input on these and others.
2124
2125 - It struck me that the -# progress bar will be hard to just apply on the new
2126   progress bar concept. I need some feedback on this before that'll get re-
2127   introduced! :-/
2128
2129 Daniel (16 February 2000):
2130 - Jörn Hartroth brought me some fixes for the progress meter and I continued
2131   working on it. It seems to work for http download, http post, ftp download
2132   and ftp upload. It should be a pretty good test it works generally good.
2133
2134 - Still need to add the -# progress bar into the new style progress interface.
2135
2136 - Gonna have a go at my new output option parameter next.
2137
2138 Daniel (15 February 2000):
2139 - The progress meter stuff is slowly taking place. There's more left before it
2140   is working ok and everything is tested, but we're reaching there. Slowly!
2141
2142 Daniel (11 February 2000):
2143 - Paul Marquis fixed the config file parsing of curl to
2144   deal with any-length lines, removing the previous limit of 4K.
2145
2146 - Eetu Ojanen's suggestion of supporting the @-style for -b
2147   is implemented. Now -b@<filename> works as well as the old style. -b@- also
2148   similarly reads the cookies from stdin.
2149
2150 - Reminder: -D should not write to the file until it needs to, in the same way
2151   -o does. That would enable curl to use -b and -D on the same file...
2152
2153 - Ellis Pritchard made getdate.y work for MacOS X.
2154
2155 - Paul Harrington helped me out finding the crash in the
2156   cookie parser. He also pointed out curl's habit of sending empty cookies to
2157   the server.
2158
2159 Daniel (8 February 2000):
2160  - Ron Zapp corrected a problem in src/urlglob.c that
2161    prevented curl from getting compiled on sunos 4. The problem had to do
2162    with the difference in sprintf() return code types.
2163
2164  - Transfer() should now be able to download and upload simultaneously. Let's
2165    do some progress meter fixes later this week.
2166
2167 Daniel (31 January 2000):
2168  - Paul Harrington found another core dump in the cookie
2169    parser. Curl doesn't properly recognize the 'version' keyword and I think
2170    that is what caused this. I need to refresh some specs on cookies and see
2171    what else curl lacks to improve this a bit more once and for all.
2172
2173    RFC 2109 clearly specifies how cookies should be dealt with when they are
2174    compliant with that spec. I don't think many servers are though...
2175
2176  - Mark W. Eichin found that while curl is uploading a form
2177    to a web site, it doesn't read incoming data why it'll hang after a while
2178    since the socket "pipe" becomes full.
2179
2180    It took me two hours to rewrite Download() and Upload() into the new
2181    single function Transfer(). It even seems to work! More testing is required
2182    of course... I should get the header-sending together in a kind of queue
2183    and let them get "uploaded" in Transfer() as well.
2184
2185  - Zhibiao Wu pointed out a curl bug in the location: area,
2186    although I did not get a reproducible way to do this why I have to wait
2187    with fixing anything.
2188
2189  - Bob Schader suggested I should implement resume
2190    support for the HTTP PUT operation, and as I think it is a valid suggestion
2191    I'll work on it.
2192
2193 Daniel (25 January 2000):
2194  - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
2195    corrected.
2196
2197  - Jens Schleusener pointed out a problem to compile
2198    curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
2199    by Jörn's recent #include modifications!
2200
2201 Daniel (19 January 2000):
2202  - Oskar Liljeblad pointed out and corrected a problem
2203    in the Location: following system that made curl following a location: to a
2204    different protocol to fail.
2205
2206    At January 31st I re-considered this fix and the surrounding source code. I
2207    could not really see that the patch did any difference, why I removed it
2208    again for further research and debugging. (It disabled location: following
2209    on server not running on default ports.)
2210
2211  - Jörn Hartroth brought a fix that once again
2212    made it possible to select progress bar.
2213
2214  - Jörn also fixed a few include problems.
2215
2216 Version 6.4
2217
2218 Daniel (17 January 2000):
2219  - Based on suggestions from Björn Stenberg, I made the
2220    progress deal better with larger files and added a "Time" field which shows
2221    the time spent on the download so far.
2222  - I'm now using the CVS repository on sourceforge.net, which also allows web
2223    browsing. See http://curl.haxx.nu.
2224
2225 Daniel (10 January 2000):
2226  - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
2227  - Added "postquote" support to the ftp section that enables post-ftp-transfer
2228    quote commands.
2229  - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
2230    that command will be issued AFTER a successful ftp transfer. This can of
2231    course be used to delete or rename a file after it has been uploaded or
2232    downloaded. Use your imagination! ;-)
2233  - Since I do the main development on solaris 2.6 now, I had to download and
2234    install GNU groff to generate the hugehelp.c file. The solaris nroff cores
2235    on the man page! So, in order to make the solaris configure script find a
2236    better result I made gnroff get checked prior to the regular nroff.
2237  - Added all the curl exit codes to the man page.
2238  - Jim Gallagher properly tracked down a bug in autoconf
2239    2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
2240    flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
2241    and therefore you can't make the configure script find the openssl libs!
2242