5 \___|\___/|_| \_\_____|
9 Daniel (29 August 2001)
10 - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
11 that to specify the file name in which you want to have all cookies curl
12 knows of, dumped to. It'll be written using the netscape cookie format.
14 This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
15 which in turn dumps this information when curl_easy_cleanup() is invoked.
16 There might be reasons to re-consider my choice of putting it there. Perhaps
17 it is better placed to get done just before *_perform() is done. It is all
18 of course depending on how you guys want to use this feature...
20 - Added ftpupload.c in the source examples section, based on source code posted
23 Daniel (28 August 2001)
24 - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
25 on OpenBSD and hopefully on FreeBSD as well!
27 - Georg Huettenegger modified the curl_formadd() functionality slightly, and
28 added support for error code 417 when doing form post and using the Expect:
31 - Made some tests with cached SSL session IDs, and they seem to work. There
32 should be a significant speed improvement in the SSL connection phase, but
33 in my tiny tests it just isn't possible to notice any difference. Like other
34 caching in libcurl, you must reuse the same handle for the caching to take
35 effect. SSL session ID caching is done on a per host-name and destination
38 Set verbose, and you'll get informational tests when libcurl detects and
39 uses a previous SSL session ID.
41 - Upgraded to automake 1.5 on my development/release machine.
43 Daniel (27 August 2001)
44 - Slowly started writing SSL session ID caching code
46 Daniel (24 August 2001)
47 - T. Bharath removed compiler warnings on windows and updated the MS project
50 - Kevin Roth reported two kinds of command line constructs with the new -G that
51 curl didn't really deal with the way one would like.
53 - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
54 own portable version named strequal() that should be used!
56 - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
57 debug object modules causing confusions.
59 Daniel (23 August 2001)
60 - T. Bharath accurately found a libcurl bug that would happen when doing a
61 second invoke of curl_easy_perform() with a new URL when the previous invoke
62 followed a Location: header.
64 - Started the improvement work on the cookie engine:
65 - Now keeps cookies in the same order as the cookie file
66 - A write to the possibly static string was removed
67 - Added a function that can output all cookies
68 - Now supports reading multiple cookie files
70 - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
72 - Split up the monster function in lib/ftp.c to use more smallish functions to
73 increase readability and maintainability.
75 Daniel (21 August 2001)
76 - Georg Huettenegger's big patch was applied. Now we have:
77 o "Expect: 100-continue" support. We will from now on send that header in
78 all rfc1867-posts, as that makes us abort much faster when the server
79 rejects our POST. Posting without the Expect: header is still possible in
80 the standard replace-internal-header style.
81 o curl_formadd() is a new formpost building function that is introduced to
82 replace the now deprecated curl_formparse() function. The latter function
83 will still hang around for a while, but the curl_formadd() is the new way
84 and correct way to build form posts.
85 o Documentation has been updated to reflect these changes
87 These changes are reason enough to name the next curl release 7.9...
89 - We now convert man pages to HTML pages and include them in the release
90 archive. For the pleasure of everyone without nroff within reach.
92 - Andrés García's suggested flushing of the progress meter output stream was
93 added. It should make the progress meter look better on Windows.
95 - Troy Engel pointed out a mistake in the configure script that made it fail
96 on many Red Hat boxes!
98 Daniel (20 August 2001)
99 - We need an updated libtool to make a better build environment for OpenBSD
104 Daniel (20 August 2001)
105 - Brad pointed out that we ship two extra libtool files in the tarballs that
106 we really don't need to! Removing them makes the gz-archive about 60K
109 - Albert Chin brought fixes for the configure script to detect socklen_t
110 properly as well as moving lots of our custom autoconf macros to
113 Daniel (19 August 2001)
114 - Moonesamy improved his -G feature for host names only URLs...
116 Daniel (17 August 2001)
117 - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
118 symbols and to not use global variables.
122 Daniel (16 August 2001)
123 - S. Moonesamy added the -G option to curl, that converts the data specified
124 with -d to a GET request. Default action when using -d is POST. When -G is
125 used, the -d specified data will be appended to the URL with a '?'
126 separator. As suggested previously by Kevin Roth.
128 - curl-config --libs should now display all linker options required to link
129 with libcurl. It includes the path and options for libcurl itself.
130 curl-config --cflags displays the compiler option(s) needed to compile
131 source files that use libcurl functions. Basically, that sets the include
134 Daniel (15 August 2001)
135 - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
136 were parsed and used. (RFC2732-format)
138 - Bug #12733 over on php.net identified a problem in libcurl that made it core
139 dump if you used CURLOPT_POST without setting any data to post with
140 CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
141 now equals setting it to no data at all.
143 - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
144 properly when used for multiple URLs on a single command line. Indeed, the
145 variable was not reset between the requests. This is now fixed.
147 - David James fixed the Borland makefile so that libcurl still compiles and
148 builds with that compiler.
150 Daniel (14 August 2001)
151 - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
153 - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
154 windows users to curl_global_init(), that makes libcurl init the winsock
155 stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
156 with this is a comfortable shortcut to fame.
160 Daniel (14 August 2001)
161 - Nico Baggus provided more feedback from his VMS porting efforts and a few
162 minor changes were necessary.
164 - I modified configure.in so that --enable-debug sets more picky gcc options.
165 I then removed almost all the new warnings that appeared, and by doing so I
166 corrected the size_t-treated-as-signed problem that has been discussed on
167 the mailing list previously. I also removed a bunch of the just recently
168 added #ifdef VMS lines.
170 - I removed the use of a global variable in the SSL code. It was once
171 necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
172 (hopefully) still work if libcurl is built against an ancient version of
175 Daniel (13 August 2001)
176 - Peter Todd posted a patch that now allows non-file rc1867-style form posts
177 to be larger than 4K.
179 Daniel (10 August 2001)
180 - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
182 Daniel (9 August 2001)
183 - The redirected error stream was closed before the curl_easy_cleanup() call
184 was made, and when VERBOSE was enabled, the cleanup function tried to use
185 the stream. It could lead to a segmentation fault. Also, the stream was
186 closed even if we looped to get more files. Corrects Dustin Boswell's bug
189 - Now generates the release configure script with autoconf 2.52
193 Daniel (8 August 2001)
194 - curl -E uses a colon to separate a file name from a passphrase. This turned
195 out really bad for the windows people who wants to include a drive letter in
196 the file name like "c:\cert.pem". There's now a win32 work-around
197 implemented that tries work around that, when the colon seems to be used for
198 this kind of construct.
200 - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
201 verify the server's CN field when talking https://. If --cacert is not used,
202 any failures in matching is only displayed as information (-v).
204 Daniel (7 August 2001)
205 - Wrote up nine more test cases, more or less converted from the former test
208 Daniel (6 August 2001)
209 - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
210 directory in which libcurl itself is installed in. While this wasn't my
211 initial intention with this option, it makes sense and makes linking with
214 - Stefan Ulrich pointed out to us that other tools and libraries treat file://
215 URLs with only one slash after the host name slighly different than libcurl
216 does. Since all the others seem to agree, we better follow them.
218 - Nico Baggus provided us with a huge set of fixes to make curl compile and
223 Daniel (6 August 2001)
224 - Jonathan Hseu noticed that you couldn't get a header callback unless you
225 set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
226 data. This is now fixed.
228 Daniel (5 August 2001)
229 - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
230 1.5.x servers, as they return really screwed up response headers when asked
233 - curl_escape() no longer treats already encoded characters in the input
236 Daniel (3 August 2001)
237 - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
238 avoid the BSD annoucement clause of the license in the former file.
240 - Andrew Francis provided a new version of base64.c to work around the license
241 boiler plate that came with the previous one. I patched it, but the glory
242 should go to Andrew for his heads up.
244 - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
245 couldn't always reliably change HTTP request. This has now been fixed and a
246 new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
247 requestr (back) to GET.
249 - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
250 release archives. It should be now.
252 Daniel (2 August 2001)
253 - Frank Keeney pointed out a manual mistake for certificate convertions.
255 - Tomasz Lacki pointed out a problem in the transfer loop that could make the
256 select() loop use far too much CPU.
258 - Pawel A. Gajda pointed out an output mistake done when using libcurl's
261 Daniel (29 June 2001)
262 - Naveen Noel noticed that the Borland library makefile wasn't updated.
264 - Nic Roets brought a fix for the certificate verification when using SSL.
266 Daniel (27 June 2001)
267 - Made the FTP tests run OK even on machines running curl IPv6-enabled.
269 - Troy Engel corrected some RPM package details.
273 Daniel (25 June 2001)
274 - Björn Stenberg correctly identified a problem that occurred when downloading
275 several files with curl, and using resume. The first file's resume index was
276 then used for all files, resulting in weird results...
278 - Anton Kalmykov provided a fix that makes curl work with form field names
279 with spaces like when -F is used.
283 Daniel (20 June 2001)
284 - Mike Bytnar provided a fine report that proved that the --with-ssl option
285 for configure needed tweaking. It no longer searches the default directories
286 for OpenSSL libs or directories when a specified path is given.
288 Daniel (19 June 2001)
289 - When an FTP transfer is cut off during transfer, curl could present a truly
290 garbaged error message and in worst case dump core. Thanks to detailed
291 reports from Shawn Poulson we nailed this.
293 Daniel (12 June 2001)
294 - Salvador Dávila provided a fix for FTP range downloads.
296 - Added a few more test cases from the former test suite to the new file
297 format. We're now at a total of 26 tests.
299 Daniel (11 June 2001)
300 - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
304 - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
306 - I made SSL certificate failure messages to be more detailed.
311 - SDavila provided a resumed download fix.
316 - Sterling provided some new PHP examples.
318 - Changed the CVS hierarchy and the older checkout instruction does no longer
319 work. We moved the entire source code into a CVS module named 'curl'.
322 - CURLOPT_MUTE does not exist anymore. It is still present in the include file
323 to not cause compiler errors for applications using it, but it isn't used
324 anywhere in the library.
329 - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
332 - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
333 curl_global_init() now lets the argument flags *SET* what parts to
334 init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
335 known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
336 necessary. Man page updated accordingly.
338 - Fixed the strtok.h include file as it wouldn't compile on all platforms!
341 - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
342 set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
343 option is subject for complete removal...
348 - Cris Bailiff wrote a makefile for building Solaris packages.
350 - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
351 we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
353 - Kjetil Jacobsen privately announced his python interface to libcurl,
354 available at http://pycurl.sourceforge.net/
357 - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
358 safe function. Now configure checks for a thread-safe version, and
359 lib/strtok.c offers one for the systems that don't come with one included!
361 - Mettgut Jamalla correctly pointed out that the -# progress bar was written
362 to stderr even though --stderr redirection was used. This is now corrected.
364 - I moved out the list of contributors from the curl.1 man page and made a
365 separate docs/THANKS file. It makes the list easier to find, and made it
366 easier for me to make a separate web page with that same information.
368 I really do want all you guys mentioned in there to feel you get the credit
371 - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
376 - curl-config now supports '--vernum' that outputs a plain hexadecimal version
377 of the libcurl version number (using 8 bits for each 3 numbers). Version
378 7.7.4 appears as 070704
380 - Wrote man pages for curl_global_init and curl_global_cleanup...
382 - T. Bharath brought news about the usage of the OpenSSL interface that was
383 not previously taken into consideration and thus caused libcurl to leak
384 memory. The only somewhat sane approach to fix this dilemma, is adding two
385 two new functions curl_global_init() and curl_global_cleanup() that should
386 be called *ONCE* by the application using libcurl. The init should be done
387 only at startup, no matter how many threads the application is gonna use,
388 and the cleanup should be called when the application has finished using
391 *** UPGRADE NOTICE ***
393 If you write applications using libcurl, you really want to use the two
394 functions mentioned above !!!
396 I can't say I think this is a very beautiful solution, but as OpenSSL
397 insists on making lots of stuff on a "global" scope, we're forced to walk
398 the path they point us to.
400 - Moving more test cases into the new file format.
405 - Introduced a new file format for storing test cases, and thus I had to
406 modify all the perl test scripts and more (I added a new one). I have not
407 "ported" all the old test cases to the new format yet, but it'll come.
409 The main advantage of this new format is that all test data for each test
410 case is stored in a single file. It gives a better overview for each test
411 case and a lot less files.
413 - Andrés García brought a fix for the netscape/mozilla cookie file parsing
414 function, as it turns out it doesn't always store the path!
417 - As was reported anonymously, when FAILONERROR was used, the httpcode was
418 not stored properly and thus wasn't possibly to read after a transfer with
419 the curl_easy_getinfo() function. This is now corrected.
421 - Installed and made use of the following tool versions:
426 I wouldn't recommend any developer to try to generate things with older
427 versions than these. Building from CVS will probably more or less require
428 at least these versions.
430 As a result of this, the configure script grew to more than double its
433 Arkadiusz Miskiewicz helped me by pointing out I had to remove my
434 acinclude.m4 file before I could get it working!
437 - I made ftps:// work. Added test case 400 to the release archive, as the
438 first ftps:// test case. Requires stunnel.
440 - Also made the test cases that runs ssl tests not run if libcurl isn't built
444 - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
445 are actually needed. Albert Chin's and Domenico Andreoli's suggestions
451 - Nicer configure-check for the OpenSSL headers, which then sets the proper
452 variable to have curl-config be good. (Albert Chin provided the fix)
454 - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
455 It was now renamed to prevent collides with other libs. (After discussions
456 with Sterling Hughes and the implications this had on PHP builds.)
459 - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
460 turned out to be a problem with the debian-built 7.7.3-package that
461 contained files from the 7.7.2 release!
463 - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
464 make programs that use it, not fail when compiling against this version of
468 - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
474 - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
476 - Added the first HTTPS test to the test suite in the release archive.
479 - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
480 certificate and the peer can't be verified, it should fail and return a
481 proper error code. I added a brand new error code named
482 CURLE_SSL_PEER_CERTIFICATE for this purpose.
485 - As was discussed with Frederic Lepied a while ago, I now made libcurl not
486 return error even though no data was transfered on upload/download resume
487 when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
488 from the header file to make any implemenator that uses that to be aware of
489 the fact that it can't be returned anymore!
491 - Improved general header-parsing to better allow white spaces and more.
493 - Rodney Simmons proved the fix I did yesterday was bad and I had to post
496 - Ingo Wilken patched away two redirect problems more!
499 - Cris Bailiff correctly noted that the space-after-header problem with
500 Location: is present on several other places in the libcurl sources.
502 - Ingo Wilken patched away a problem libcurl had when following Location:
503 headers with an extra space after the colon.
505 - Rodney Simmons found out that multiple FTP transfers did not treat relative
506 directories correctly.
509 - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
510 makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
511 returned error. Starting now, it just don't output the file size instead.
512 Anonymous bug report.
514 - stunnel.pm was accidentally left out from the release archive, it is now
515 added (stunnel is needed to run the https-tests in the test suite)
518 - Corrected two minor compiler warnings due to the FILE * to void * conversion
519 that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
520 filed a bug report on this.
525 - All callback functions now take 'void *' instead of 'FILE *'. This is made
526 this way to make it more obvious to people that anything can be passed to
527 them (by using the apropriate option). After discussions with Sterling
531 - Cris Bailiff fixed a chunked transfer encoding problem with persistent
532 connection that made libcurl fail if the persistent connection used mixed
533 chunked and non-chunked transfers.
535 - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
536 treated as content-length 0 replies but would cause a "hang" until the
537 server timed-out and closed the connection.
539 - Brad Burdick found a minor problem in the docs/examples/Makefile.am
541 Daniel (27 April 2001)
542 - Updated the INTERALS document again. It was lagging a bit. I think I made it
543 more easy to follow now as well.
545 - Brad Burdick found a problem with persistent connections when curl received
546 a "Content-Length: 0" header.
548 - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
549 compiled/built on win32. It seems to work for unixes though!
551 - Dave Hamilton reported weird problems with CURL/PHP that I really can't
552 explain at the moment. I'm hoping on some help from the PHP crew.
554 Daniel (26 April 2001)
555 - I rewrote the FTP command response function. I had to do it to make ftps
556 work, as the OpenSSL read()-function didn't work the same way the normal
557 unix read() does, but it was also a huge performance boost. Previously the
558 function read one byte at a time, now it reads very large chunks, and it
559 makes a notable speed difference.
561 Daniel (25 April 2001)
562 - Connection re-use when not using a proxy didn't work properly for
563 non-default port numbers.
565 Daniel (24 April 2001)
566 - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
567 data transfer, which causes the transfer to 'hang'... We need to fix this.
569 - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
570 the alredy written perl servers easily.
572 Daniel (23 April 2001)
573 - The OpenSSL version string recently modified didn't zero terminate one
574 of the generated strings properly, which could lead to a crash or simply
575 weird version string output!
579 Daniel (22 April 2001)
580 - Rosimildo da Silva updated the Makefiles for Borland/Windows.
582 - Eric Rautman pointed out a problem with persistent connections that would
583 lead to broken Host: headers in the second HTTP request.
585 Daniel (20 April 2001)
586 - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
587 a 'libcurl overview' man page.
589 - Spell-fixed some documents.
591 - S. Moonesamy corrected mistakes in the man page.
593 - Cris Bailiff fixed the curl_slists options in the perl interface, present
594 separately in the Curl::easy 1.1.4 package.
596 Daniel (19 April 2001)
597 - Linus Nielsen Feltzing removed the decimals from the size variables in the
598 --write-out output. We hardly ever get fraction of bytes! :-)
602 Daniel (19 April 2001)
604 - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
606 Daniel (18 April 2001)
607 - Input from Michael Mealling made me add --feature to curl-config. It
608 displays a list of features that have been built-in in the current
609 libcurl. The currently available features that can be listed are: SSL, KRB4
612 - I committed Cris and Georg's perl interface work. They've got callbacks
613 working and options that receives those slist pointers.
615 - Puneet Pawaia detected a problem with resumed downloads that use persistent
616 connections and I made a rather large writeup to correct this. It is
617 important that all session-data is stored in the connectdata struct and not
618 in the main struct as this previously did.
620 Daniel (17 April 2001)
621 - Frederic Lepied fixed a ftp resumed download problem and introduced a new
622 error code that lets applications be able to detect when a resumed download
623 actually didn't download anything since the whole file is already present.
624 Should this return OK instead?
626 - I added 'curl-config.in' to the root dir and configure script. Now, a
627 curl-config script is made when curl is built. The script can be used to
628 figure out compile time options used when libcurl was built, which in turn
629 should be options YOU should use to build applications that use libcurl.
631 This *-config style is not a new idea, but something that has been used
632 successfully in other (library based) projects.
634 - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
635 for the If-Modified-Since style headers.
637 - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
638 for curl to build on Ultrix.
640 Daniel (11 April 2001)
641 - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
642 of the environment variable HTTP_PROXY in uppercase may become a security
643 hazard when people use libcurl in a server/cgi situation where the server
644 sets the HTTP_*-variables according to incoming headers in the HTTP
645 request. Thus, a "Proxy:"-header would set that environment variable!
647 Then, invoking curl_easy_perform() without having an URL set caused a crash.
649 - S. Moonesamy brought a patch that make curl use non-blocking connects on
650 windows when connection timeout is set, as it allows windows users to set
653 - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
655 - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
657 - I've written a first shot at a Java interface to libcurl. Many thanks to
658 Daniel Marell for tirelessly answering to all my basic Java questions. It
659 works, but it is still very basic.
661 Daniel (10 April 2001)
662 - The progress display could get silly when doing multiple file transfers, as
663 it wasn't properly reset between transfers!
665 - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
666 me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
667 function for writing headers. Previously you could only set a different FILE
668 * when headers are written from within libcurl.
670 Daniel (7 April 2001)
671 - Andrés García fixed a problem in curl_escape() and pointed out a flaw in
672 the curl_easy_setopt man page.
674 Daniel (6 April 2001)
675 - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
676 change their version define format often...
678 - curl_formfree() now accepts a NULL pointer without crashing!
682 Daniel (3 April 2001)
683 - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
684 read bad memory during situations when an (ftp) connection attempt failed.
685 Also, the lib/Makefile.vc6 was corrected.
687 - More investigations in the Location: following code made me realize that
688 it was not clean enough to work transparantly with persistent and non-
689 persistent connections. I think I've fixed it now.
691 Daniel (29 March 2001)
692 - Georg Horn mailed me some corrections for the Curl::easy perl interface.
694 - Experimental ftps:// support added. It is basically FTP over SSL for the
695 control connection. It still makes all data transfers going over unencrypted
696 connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
697 that to verify the functionality.
699 Daniel (27 March 2001)
700 - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
701 to get a file from a site and it fails, the SIGALRM would still be sent
702 after the timeout-time, quite inexpectedly!
704 - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
705 example makefile that can be used as a start when building one of the
710 Daniel (26 March 2001)
711 - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
712 connections (when the server replied a Connection: Keep-Alive) and this
713 problem was not properly dealt with in 7.7 either. A patch was posted to the
714 curl-and-php mailing list.
716 Daniel (24 March 2001)
717 - Colin Watson reported about a problem and brought a patch that corrected it,
718 which was about the man page and lines starting with a single quote (') in a
719 way that gnroff doesn't like.
721 Daniel (23 March 2001)
722 - Peter Bray reported correctly that the root makefile used make instead of
723 $(MAKE) for the test target.
725 - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
726 curl_setopt() which was removed in 7.7!
728 - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
730 - When following a Location:, libcurl would sometimes write to the URL string
731 in a way it shouldn't. As the pointer is passed-in to libcurl from an
732 application, we can't be allowed to write to it. The particular bug report
733 from 'nk' that brought this up was because he had a read-only URL that then
734 caused a libcurl crash!
736 - No longer reads HEAD responses longer than to the last header. Previously,
737 curl would read the full reply if the connection was a "close" one.
739 - libcurl did re-use connections way too much. Doing "curl
740 http://www.{microsoft,ibm}.com" would make it re-use the connection which
741 made the second request return very odd results.
743 Daniel (22 March 2001)
744 - Edin Kadribasic made me aware that curl should not re-send POST requests
745 when following 302-redirects. I made 302 work like 303 which means curl uses
746 GET in the following request(s).
748 - libcurl now reset the "followed-location" counter on each invoke of
749 curl_easy_perform() as it otherwise would sum up all redirects on the same
750 connection and thus could reach the maxredirs counter wrongly.
752 - Jim Drash suggested curl_escape() should not re-encode what already looks
753 like an encoded sequence and I think that's a fair suggestion.
757 Daniel (22 March 2001)
758 - The configure script now fails with an error message if gethostbyname_r() is
759 detected but it couldn't figure out how to invoke it (what amount of
760 arguments it is supposed to get). Reports from Andrés García made me aware
763 - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
764 functions in the curl.h include file and write man pages for them. The
765 escape function was modified to use the same interface as the unescape one
768 - No bug reports at all on the latest betas. Release time coming up.
772 Daniel (19 March 2001)
773 - Georg Ottinger reported problems with using -C together with -L in the sense
774 that the -C info got lost when it was redirected. I could not repeat this
775 problem on the 7.7 branch why I leave this for the moment. Test case 39 was
776 added to do exactly this, and it seems to do right.
778 - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
779 form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
780 engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
781 and POST operations that I need to add support for. Section 8.2.3 in RFC2616
782 has all the details. Seems to work now!
784 Daniel (16 March 2001)
785 - After having experienced another machine break-down, we're back.
787 - Georg Horn's perl interface Curl::easy is now included in the curl release
788 archive. The perl/ directory is now present. Please help me with docs,
789 examples and updates you think fit.
791 - Made a new php/ directory in the release archive and moved the PHP examples
792 into a subdirectory in there. Not much PHP info yet, but I plan to. Please
793 help me here as well!
795 - Made libcurl return error if a transfer is aborted in the middle of a
796 "chunk". It actually enables libcurl to discover premature transfer aborts
797 even if the Content-Length: size is unknown.
799 Daniel (15 March 2001)
800 - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
801 option in libcurl. It limits the time curl is allowed to spend in the
802 connection phase. This differs from -m/--max-time that limits the entire
803 file transfer operation. Requested by Larry Fahnoe and others.
805 I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
810 Daniel (14 March 2001)
811 - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
812 again when ENABLE_IPV6 is set.
814 I need to remake things in the test suite. I can't test the FTP parts with
815 curl built for IPv6 as it uses a different set of FTP commands then!
817 - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
818 a report meant for our project. Anyway, it said the .netrc parsing didn't
819 work as supposed, and as I agreed with Lars, I made the netrc parser use
820 getpwuid() to figure out the home directory of the effective user and try
821 that netrc. It still uses the environment variable HOME for those that don't
822 have that function or if the user doesn't return valid pwd info.
824 - Edin Kadribaic posted a bug report where he got a crash when a fetch with
825 user+password in the URL followed a Location: to a second URL (absolute,
826 without name+password). This bug has been around for a long while and
827 crashes due to a read at address zero. Fixed now. Wrote test case 38, that
830 - Modified the test suite's httpserver slightly to append all client request
831 data to its log file so that the test script now better can verify a range
832 of requests and not only the last one, as it did previously.
834 - Updated the curl man page with --random-file and --egd-file details.
838 Daniel (14 March 2001)
839 - Björn Stenberg provided similar fixes as Jörn did and some additional patches
840 for non-SSL compiles.
842 - I increased the interface number for libcurl as I've removed the low level
843 functions from the interface. I also took this opportunity to rename the
844 Curl_strequal function to curl_strequal and Curl_strnequal to
845 curl_strnequal, as they're public libcurl functions (even if they're still
848 This will make older programs not capable of using the new libcurl with
849 just a drop-in replacement.
851 - Jörn Hartroth updated stuff for win32 compiles:
852 o config-win32.h was fixed for socklen_t
853 o lib/ssluse.c had a bad #endif placement
854 o lib/file.c was made to compile on win32 again
855 o lib/Makefile.m32 was updated with the new files
856 o lib/libcurl.def matches the current interface state
858 Daniel (13 March 2001)
859 - It only took an hour or so before Jörn Hartroth found a problem in the
860 chunked transfer-encoding. Given his fine example-site, I could easily spot
861 the problem and when I re-read the spec (the part I have pasted in the top
862 of the http_chunks.h file), I realized I had made my state-machine slightly
863 wrong and didn't expect/handle the trailing CRLF that comes after the data
864 in each chunk (and those extra two bytes sure feel wasted).
866 Had to modify test case 34 to match this as well.
870 Daniel (13 March 2001)
871 - Added the policy stuff to the curl_easy_setopt man page for the two supported
874 - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
875 CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
876 supported, and the "least recently used" is used as default if no policy
879 Daniel (12 March 2001)
880 - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
881 SSL random engine. The random seeding support was also brought to the curl
882 client with the new options --random-file <file> and --egd-file <file>. I
883 need some people to really test this to know they work as supposed. Remember
884 that libcurl now informs (if verbose is on) if the random seed is considered
885 weak (HTTPS connections).
887 - Made the chunked transfer-encoding engine detected bad formatted data length
888 and return error if so (we can't possibly extract sensible data if this is
889 the case). Added a test case that detects this. Number 36. Now there are 60
892 - Added 5 new libcurl options to curl/curl.h that can be used to control the
893 persistent connection support in libcurl. They're also documented (fairly
894 thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
895 implemented, although not really tested at this point... Anyway, the new
896 implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
897 CURLOPT_FORBID_REUSE. The ones still left to write code for are:
898 CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
900 - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
901 connection support by re-using the same curl handle for every specified file
902 transfer and after some more test case tweaking we have 100% test case OK.
903 I made some test cases return HTTP/1.0 now to make sure that works as well.
905 - Had to add 'Connection: close' to the headers of a bunch of test cases so
906 that curl behaves "old-style" since the test http server doesn't do multiple
907 connections... Now I get 100% test case OK.
909 - The curl.haxx.se site, the main curl mailing list and my personal email are
910 all dead today due to power blackout in the area where the main servers are
913 - I've made persistance work over a squid HTTP proxy. I find it disturbing
914 that it uses headers that aren't present in any HTTP standard though
915 (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
916 the standard actually defines. I need to get this code excercised on a lot
917 of different HTTP proxies before I feel safe.
919 Now I'm facing the problem with my test suite servers (both FTP and HTTP)
920 not supporting persistent connections and libcurl is doing them now. I have
921 to fix the test servers to get all the test cases do OK.
923 Daniel (8 March 2001)
924 - Guenole Bescon reported that libcurl did output errors to stderr even if
925 MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
926 there's an error and no ERRORBUFFER is set. This is now corrected.
930 Daniel (8 March 2001)
931 - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
932 added two source files and I've run some test downloads that look fine.
934 - HTTP HEAD works too, even on 1.1 servers.
936 Daniel (5 March 2001)
937 - The current 57 test cases now pass OK. It would suggest that libcurl works
938 using the old-style with one connection per handle. The test suite doesn't
939 handle multiple connections yet so there are no test cases for this.
941 - I patched the telnet.c heavily to not use any global variables anymore. It
942 should make it a lot nicer library-wise.
944 - The file:// support was modified slightly to use the internal connect-first-
947 Daniel (4 March 2001)
952 Daniel (4 March 2001)
953 - Now, there's even a basic check that a re-used connection is still alive
954 before it is assumed so. A few first tests have proven that libcurl will
955 then re-connect instead of re-use the dead connection!
957 Daniel (2 March 2001)
958 - Now they work intermixed as well. Major coolness!
960 - More fiddling around, my 'tiny' client I have for testing purposes now has
961 proved to download both FTP and HTTP with persistent connections. They do
962 not work intermixed yet though.
964 Daniel (1 March 2001)
965 - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
966 curl_slist_append() should take a const char * as second argument. It does
969 Daniel (22 February 2001)
970 - The persistent connections start to look good for HTTP. On a subsequent
971 request, it seems that libcurl now can pick an already existing connection
972 if a suitable one exists, or it opens a new one.
974 - Douglas R. Horner mailed me corrections to the curl_formparse() man page
977 Daniel (20 February 2001)
978 - Added the docs/examples/win32sockets.c file for our windows friends.
980 - Linus Nielsen Feltzing provided brand new TELNET functionality and
983 * Negotiation is now passive. Curl does not negotiate until the peer does.
984 * Possibility to set negotiation options on the command line, currently only
985 XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
986 * Now sends the USER environment variable if the -u switch is used.
987 * Use -t to set telnet options (Linus even updated the man page, awesome!)
989 - Haven't done this big changes to curl for a while. Moved around a lot of
990 struct fields and stuff to make multiple connections get connection specific
991 data in separate structs so that they can co-exist in a nice way. See the
992 mailing lists for discussions around how this is gonna be implemented. Docs
993 and more will follow.
995 Studied the HTTP RFC to find out better how persistent connections should
996 work. Seems cool enough.
998 Daniel (19 February 2001)
999 - Bob Schader brought me two files that help set up a MS VC++ libcurl project
1000 easier. He also provided me with an up-to-date libcurl.def file.
1002 - I moved a bunch of prototypes from the public <curl/curl.h> file to the
1003 library private urldata.h. This is because of the upcoming changes. The
1004 low level interface is no longer being planned to become reality.
1006 Daniel (15 February 2001)
1007 - CURLOPT_POST is not required anymore. Just setting the POST string with
1008 CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
1009 libcurl already works this way, i.e they require only the parameter to
1010 switch on a feature so I think this works well with the rest. Setting a NULL
1011 string switches off the POST again.
1013 - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
1014 Reese helped me define a way how to incorporate persistent connections into
1015 libcurl in a very smooth way. If done right, no change may have to be made
1016 to older programs and they will just start using persistent connections when
1019 Daniel (13 February 2001)
1020 - Changed the word 'timeouted' to 'timed out' in two different error messages.
1021 Suggested by Larry Fahnoe.
1025 Daniel (9 February 2001)
1026 - Frank Reid and Cain Hopwood provided information and research around a HTTPS
1027 PUT/upload problem we seem to have. No solution found yet.
1029 Daniel (8 February 2001)
1030 - An interesting discussion is how to specify an empty password without having
1031 curl ask for it interactively? The current implmentation takes an empty
1032 password as a request for a password prompt. However, I still want to
1033 support a blank user field. Thus, today if you enter "-u :" (without user
1034 and password) curl will prompt for the password. Tricky. How would you
1035 specify you want the prompt otherwise?
1037 - Made the netrc parse result possible to use for other protocols than FTP and
1038 HTTP (such as the upcoming TELNET fixes).
1040 - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
1042 - Added a HTTP file upload code example in the docs/examples/ section on
1045 - Adjusted the FTP response fix slightly.
1049 Daniel (7 February 2001)
1050 - S. Moonesamy found a flaw in the response reading function for FTP that
1051 could make libcurl not get out of the loop properly when it should, if
1052 libcurl got -1 returned when reading the socket.
1054 - I found a similar mistake in http.c when using a proxy and reading the
1055 results from the proxy connection.
1057 Daniel (6 February 2001)
1058 - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
1059 for the debug build to work.
1061 - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
1062 brought up yesterday.
1064 Daniel (5 February 2001)
1065 - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
1066 a bunch of different areas within libcurl.
1068 - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
1069 the 'static' keyword on a number of libcurl functions. I might need to add a
1070 patch that redefines static when libcurl is compiled with that compiler.
1071 How do I know when VC++ compiles, anyone?
1073 Daniel (4 February 2001)
1074 - curl_getinfo() was extended with two new options:
1075 CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
1076 return the full assumed content length of the transfer in the given
1077 direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
1078 size of a HTTP download. Added descriptions to the man page as well. This
1079 was done after discussions with Bob Schader.
1081 Daniel (3 February 2001)
1082 - Ingo Ralf Blum provided another fix that makes curl build under the more
1083 recent cygwin installations. It seems they've changed the preset defines to
1084 not include WIN32 anymore.
1088 Daniel (31 January 2001)
1089 - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
1090 be able to return -1. The telnet support crashed due to this and there was a
1091 possibility to weird behaviour all over. Linus Nielsen Feltzing helped me
1094 - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
1095 I also made the configure script feature --enable-debug which sets a couple
1096 of compiler options when used. It assumes gcc.
1098 Daniel (30 January 2001)
1099 - I finally took a stab at the long-term FIXME item I've had on myself, and
1100 now libcurl will properly work when doing a HTTP range-request that follows
1101 a Location:. Previously that would make libcurl fail saying that the server
1102 doesn't seem to support range requests.
1104 Daniel (29 January 2001)
1105 - I added a test case for the HTTP PUT resume thing (test case 33).
1109 Daniel (29 January 2001)
1110 - Yet another Content-Range change. Ok now? Bob Schader checks from his end
1111 and it works for him.
1113 Daniel (27 January 2001)
1114 - So the HTTP PUT resume fix wasn't good. There should appearantly be a
1115 Content-Range header when resuming a PUT.
1117 - I noticed I broke the download-check that verifies that a resumed HTTP
1118 download is actually resumed. It got broke because my new 'httpreq' field
1119 in the main curl struct. I should get slapped. I added a test case for
1120 this now, so I won't be able to ruin this again without noticing.
1122 - Added a test case for content-length verifying when downloading HTTP.
1124 - Made the progress meter title say if the transfer is being transfered. It
1125 makes the output slightly better for resumes.
1127 - When dealing with Location: and HTTP return codes, libcurl will not attempt
1128 to follow the spirit of RFC2616 better. It means that when POSTing to a
1129 URL that is being following to a second place, the standard will judge on
1130 what to do. All HTTP codes except 303 and 305 will cause curl to make a
1131 second POST operation. 303 will make a GET and 305 is not yet supported.
1133 I also wrote two test cases for this POST/GET/Location stuff.
1137 Daniel (26 January 2001)
1138 - Lots of mails back and forth with Bob Schader finally made me add a small
1139 piece of code in the HTTP engine so that HTTP upload resume works. You can
1140 now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
1141 the ending part of the file starting at given offet to the specified URL.
1145 Daniel (25 January 2001)
1146 - I took hold of Rick Jones' question why we don't use recv() and send() for
1147 reading/writing to the sockets and I've now modified the sread() and
1148 swrite() macros to use them instead. If nothing else, they could be tested
1149 in the next beta-round coming right up.
1151 - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
1152 his research results in how to fix this. It turns out we have to invoke the
1153 function several times in some cases. The same goes for the SSL_write().
1155 I made some rather drastic changes all over libcurl to make all writes and
1156 reads get done on one single place so that this repeated-attempts thing
1157 would only have to be implemented at one point.
1159 - Rick Jones spotted that the 'total time' counter really didn't measure the
1160 total time very accurate on subsecond levels.
1162 - Johan Nilsson pointed out the need to more clearly specify that the timeout
1163 value you set for a download is for the *entire* download. There's currently
1164 no option available that sets a timeout for the connection phase only.
1166 Daniel (24 January 2001)
1167 - Ingo Ralf Blum submitted a series of patches required to get curl to compile
1168 properly with cygwin.
1170 - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
1171 that corrected a potential memory leak.
1173 - Added comments in a few files in a sudden attempt to make the sources more
1174 easy to read and understand!
1176 Daniel (23 January 2001)
1177 - Added simple IPv6 detection in the configure script and made the version
1178 string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
1179 set if curl is compiled with IPv6 support enabled.
1181 - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
1182 IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
1184 - Made the URL globbing in the client possible to fail silently if there's an
1185 error in the globbing. It makes it almost intuitive, so when you don't
1186 follow the syntax rules, globbing is simply switched off and the raw string
1189 I still think we'll get problems with IPv6-style IP-addresses when we *want*
1190 globbing on parts of the URL as the initial part of the URL will for sure
1191 seriously confuse the globber.
1193 Daniel (22 January 2001)
1194 - Björn Stenberg supplied a progress meter patch that makes it look better even
1195 during slow starts. Previously it made some silly assumptions...
1197 - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
1198 the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
1200 Daniel (19 January 2001)
1201 - Made the Location: parsers deal with any-length URLs. Thus I removed the last
1202 code that restricts the length of URLs that curl supports.
1204 - Added a --globoff test case (#28) and it quickly identified a memory problem
1205 in src/main.c that I took care of.
1209 Daniel (17 January 2001)
1210 - Made the two former files lib/download.c and lib/highlevel.c become the new
1211 lib/transfer.c which makes more sense. I also did the rename from Transfer()
1212 to Curl_Transfer() in the other source files that use the transfer function
1213 in the spirit of using Curl_ prefix for library-scoped global symbols.
1215 Daniel (11 January 2001)
1216 - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
1217 letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
1218 mention these letters to be escaped. This was posted as a feature request by
1219 Jorge Gutierrez and as a bug by Terry.
1221 - Short options to curl that requires parameters can now be specified without
1222 having the option and its parameter space separated. -ofile works as good as
1223 -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
1224 options only, verbose --long-style options still must be separated with
1225 space from their parameters.
1227 Daniel (8 January 2001)
1228 - Francis Dagenais reported that the SCO compiler still fails when compiling
1229 curl due to that getpass_r() prototype. I've now put it around #ifndef
1230 HAVE_GETPASS_R in an attempt to please the SCO systems.
1232 - Made some minor corrections to get the client to cleanup properly and I made
1233 the separator work again when getting multiple globbed URLs to stdout.
1235 - Worked with Loic Dachary to get the make dist and make distcheck work
1236 correctly. The 'maketgz' script is now using the automake generated 'make
1237 dist' when creating release archives. Loic successfully made 'make rpms'
1238 automatically build RPMs!
1240 Loic Dachary (6 January 2001)
1241 - Automated generation of rpm packages, no need to be root.
1243 - make distcheck generates a proper distribution (EXTRA_DIST
1244 in all Makefile.am modified to match FILES).
1246 Daniel (5 January 2001)
1247 - Huge client-side hack: now multiple URLs are supported. Any number of URLs
1248 can be specified on the command line, and they'll all be downloaded. There
1249 must be a corresponding -o or -O for each URL or the data will be written to
1250 stdout. This needs more testing, time to release a 7.6-pre package.
1252 - The krb4 support was broken in the release. Fixed now.
1254 - Huge internal symbol rename operation. All non-static but still lib-internal
1255 symbols should now be prefixed with 'Curl_' to prevent collisions with other
1256 libs. All public symbols should be prefixed with 'curl_' and the rest should
1257 be static and thus invisible to the outside world. I updated the INTERNALS
1258 document to say this as well.
1262 Daniel (4 January 2001)
1263 - As Kevin P Roth suggested, I've added text to the man page for every command
1264 line option and what happens when you specify that option more than
1265 once. That hasn't been exactly crystal clear before.
1267 - Made the configure script possible to run from outside the source-tree. For
1268 odd reasons I can't build curl properly outside though. It has to do with
1269 curl's dependencies on libcurl...
1271 - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
1272 The older piece is named CHANGES.0 and is added to the CVS repository in
1273 case anyone would need it.
1275 - I added another file 'CVS-INFO' to the CVS. It contains information about
1276 files in the CVS that aren't included in release archives and how to build
1277 curl when you get the sources off CVS.
1279 - Updated CONTRIBUTE and FAQ due to the new license.
1281 Daniel (3 January 2001)
1282 - Renamed README.libcurl to LIBCURL
1284 - Changed headers in all sources files to the new dual license concept of
1285 curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
1286 accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the