5 \___|\___/|_| \_\_____|
9 Changes done to curl and libcurl from 1997 to 2006. The most recent changes are
10 always kept in the CHANGES file.
12 Daniel (29 December 2006)
13 - Make curl_easy_duphandle() set the magic number in the new handle.
15 Daniel (22 December 2006)
16 - Robert Foreman provided a prime example snippet showing how libcurl would
17 get confused and not acknowledge the 'no_proxy' variable properly once it
18 had used the proxy and you re-used the same easy handle. I made sure the
19 proxy name is properly stored in the connect struct rather than the
20 sessionhandle/easy struct.
22 - David McCreedy fixed a bad call to getsockname() that wrongly used a size_t
23 variable to point to when it should be a socklen_t.
25 - When setting a proxy with environment variables and (for example) running
26 'curl [URL]' with a URL without a protocol prefix, curl would not send a
27 correct request as it failed to add the protocol prefix.
29 Daniel (21 December 2006)
30 - Robson Braga Araujo reported bug #1618359
31 (http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a
32 patch for it: when downloading 2 zero byte files in a row, curl 7.16.0
33 enters an infinite loop, while curl 7.16.1-20061218 does one additional
36 Fix: During the "Major overhaul introducing http pipelining support and
37 shared connection cache within the multi handle." change, headerbytecount
38 was moved to live in the Curl_transfer_keeper structure. But that structure
39 is reset in the Transfer method, losing the information that we had about
40 the header size. This patch moves it back to the connectdata struct.
42 Daniel (16 December 2006)
43 - Brendan Jurd provided a fix that now prevents libcurl from getting a SIGPIPE
44 during certain conditions when GnuTLS is used.
46 Daniel (11 December 2006)
47 - Alexey Simak found out that when doing FTP with the multi interface and
48 something went wrong like it got a bad response code back from the server,
49 libcurl would leak memory. Added test case 538 to verify the fix.
51 I also noted that the connection would get cached in that case, which
52 doesn't make sense since it cannot be re-use when the authentication has
53 failed. I fixed that issue too at the same time, and also that the path
54 would be "remembered" in vain for cases where the connection was about to
57 Daniel (6 December 2006)
58 - Sebastien Willemijns reported bug #1603712
59 (http://curl.haxx.se/bug/view.cgi?id=1603712) which is about connections
60 getting cut off prematurely when --limit-rate is used. While I found no such
61 problems in my tests nor in my reading of the code, I found that the
62 --limit-rate code was severly flawed (since it was moved into the lib, since
63 7.15.5) when used with the easy interface and it didn't work as documented
64 so I reworked it somewhat and now it works for my tests.
66 Daniel (5 December 2006)
67 - Stefan Krause pointed out a compiler warning with a picky MSCV compiler when
68 passing a curl_off_t argument to the Curl_read_rewind() function which takes
69 an size_t argument. Curl_read_rewind() also had debug code left in it and it
70 was put in a different source file with no good reason when only used from
73 - Sh Diao reported that CURLOPT_CLOSEPOLICY doesn't work, and indeed, there is
74 no code present in the library that receives the option. Since it was not
75 possible to use, we know that no current users exist and thus we simply
76 removed it from the docs and made the code always use the default path of
79 - Jared Lundell filed bug report #1604956
80 (http://curl.haxx.se/bug/view.cgi?id=1604956) which identified setting
81 CURLOPT_MAXCONNECTS to zero caused libcurl to SIGSEGV. Starting now, libcurl
82 will always internally use no less than 1 entry in the connection cache.
84 - Sh Diao reported that CURLOPT_FORBID_REUSE no works, and indeed it broke in
87 - Martin Skinner brought back bug report #1230118 to haunt us once again.
88 (http://curl.haxx.se/bug/view.cgi?id=1230118) curl_getdate() did not work
89 properly for all input dates on Windows. It was mostly seen on some TZ time
90 zones using DST. Luckily, Martin also provided a fix.
92 - Alexey Simak filed bug report #1600447
93 (http://curl.haxx.se/bug/view.cgi?id=1600447) in which he noted that active
94 FTP connections don't work with the multi interface. The problem is here
95 that the multi interface state machine has a state during which it can wait
96 for the data connection to connect, but the active connection is not done in
97 the same step in the sequence as the passive one is so it doesn't quite work
98 for active. The active FTP code still use a blocking function to allow the
99 remote server to connect.
101 The fix (work-around is a better word) for this problem is to set the
102 boolean prematurely that the data connection is completed, so that the "wait
103 for connect" phase ends at once.
105 The proper fix, left for the future, is of course to make the active FTP
106 case to act in a non-blocking way too.
108 - Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
109 HTTP upload was disconnected:
111 "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is
112 setting *only* POLLHUP on poll() when the conditions in my previous mail
113 occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So
114 basically what was happening, is poll() was returning immediately (with
115 POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or
116 POLLOUT was set. This still caused Curl_readwrite() to be called, which
117 quickly returned. Then the transfer() loop kept continuing at full speed
120 Daniel (1 December 2006)
121 - Toon Verwaest reported that there are servers that send the Content-Range:
122 header in a third, not suppported by libcurl, format and we agreed that we
123 could make the parser more forgiving to accept all the three found
126 Daniel (25 November 2006)
127 - Venkat Akella found out that libcurl did not like HTTP responses that simply
128 responded with a single status line and no headers nor body. Starting now, a
129 HTTP response on a persistent connection (i.e not set to be closed after the
130 response has been taken care of) must have Content-Length or chunked
131 encoding set, or libcurl will simply assume that there is no body.
133 To my horror I learned that we had no less than 57(!) test cases that did bad
134 HTTP responses like this, and even the test http server (sws) responded badly
135 when queried by the test system if it is the test system. So although the
136 actual fix for the problem was tiny, going through all the newly failing test
137 cases got really painful and boring.
139 Daniel (24 November 2006)
140 - James Housley did lots of work and introduced SFTP downloads.
142 Daniel (13 November 2006)
143 - Ron in bug #1595348 (http://curl.haxx.se/bug/view.cgi?id=1595348) pointed
144 out a stack overwrite (and the corresponding fix) on 64bit Windows when
145 dealing with HTTP chunked encoding.
147 Daniel (9 November 2006)
148 - Nir Soffer updated libcurl.framework.make:
149 o fix symlinks, should link to Versions, not to ./Versions
150 o indentation improvments
152 - Dmitriy Sergeyev found a SIGSEGV with his test04.c example posted on 7 Nov
153 2006. It turned out we wrongly assumed that the connection cache was present
154 when tearing down a connection.
156 - Ciprian Badescu found a SIGSEGV when doing multiple TFTP transfers using the
157 multi interface, but I could also repeat it doing multiple sequential ones
158 with the easy interface. Using Ciprian's test case, I could fix it.
160 Daniel (8 November 2006)
161 - Bradford Bruce reported that when setting CURLOPT_DEBUGFUNCTION without
162 CURLOPT_VERBOSE set to non-zero, you still got a few debug messages from the
163 SSL handshake. This is now stopped.
165 Daniel (7 November 2006)
166 - Olaf fixed a leftover problem with the CONNECT fix of his that would leave a
167 wrong error message in the error message buffer.
169 Daniel (3 November 2006)
170 - Olaf Stueben provided a patch that I edited slightly. It fixes the notorious
171 KNOWN_BUGS #25, which happens when a proxy closes the connection when
172 libcurl has sent CONNECT, as part of an authentication negotiation. Starting
173 now, libcurl will re-connect accordingly and continue the authentication as
176 Daniel (2 November 2006)
177 - James Housley brought support for SCP transfers, based on the libssh2 library
178 for the actual network protocol stuff.
180 Added these new curl_easy_setopt() options:
182 CURLOPT_SSH_AUTH_TYPES
183 CURLOPT_SSH_PUBLIC_KEYFILE
184 CURLOPT_SSH_PRIVATE_KEYFILE
186 Version 7.16.0 (30 October 2006)
188 Daniel (25 October 2006)
189 - Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for the
190 case when 401 or 407 are returned, *IF* no auth credentials have been given.
191 The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401
192 and 407 cases when auth credentials is given, but we've now covered this
195 You might get some amounts of headers transferred before this situation is
196 detected, like for when a "100-continue" is received as a response to a
197 POST/PUT and a 401 or 407 is received immediately afterwards.
199 Added test 281 to verify this change.
201 Daniel (23 October 2006)
202 - Ravi Pratap provided a major update with pipelining fixes. We also no longer
203 re-use connections (for pipelining) before the name resolving is done.
205 Daniel (21 October 2006)
206 - Nir Soffer made the tests/libtest/Makefile.am use a proper variable for all
207 the single test applications' link and dependences, so that you easier can
208 override those from the command line when using make.
210 - Armel Asselin separated CA cert verification problems from problems with
211 reading the (local) CA cert file to let users easier pinpoint the actual
212 problem. CURLE_SSL_CACERT_BADFILE (77) is the new libcurl error code.
214 Daniel (18 October 2006)
215 - Removed the "protocol-guessing" for URLs with host names starting with FTPS
216 or TELNET since they are practically non-existant. This leaves us with only
217 three different prefixes that would assume the protocol is anything but
218 HTTP, and they are host names starting with "ftp.", "dict." or "ldap.".
220 Daniel (17 October 2006)
221 - Bug report #1579171 pointed out code flaws detected with "prefast", and they
222 were 1 - a too small memory clear with memset() in the threaded resolver and
223 2 - a range of potentially bad uses of the ctype family of is*() functions
224 such as isdigit(), isalnum(), isprint() and more. The latter made me switch
225 to using our own set of these functions/macros using uppercase letters, and
226 with some extra set of crazy typecasts to avoid mistakingly passing in
227 negative numbers to the underlying is*() functions.
229 - With Jeff Pohlmeyer's help, I fixed the expire timer when using
230 curl_multi_socket() during name resolves with c-ares and the LOW_SPEED
231 options now work fine with curl_multi_socket() as well.
233 Daniel (16 October 2006)
234 - Added a check in configure that simply tries to run a program (not when
235 cross-compiling) in order to detect problems with run-time libraries that
236 otherwise would occur when the sizeof tests for curl_off_t would run and
237 thus be much more confusing to users. The check of course should run after
238 all lib-checks are done and before any other test is used that would run an
239 executable built for testing-purposes.
241 Dan F (13 October 2006)
242 - The tagging of application/x-www-form-urlencoded POST body data sent
243 to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously
244 included as part of the header). A message was also added to the
245 command line tool to show when data is being sent, enabled when
248 Daniel (12 October 2006)
249 - Starting now, adding an easy handle to a multi stack that was already added
250 to a multi stack will cause CURLM_BAD_EASY_HANDLE to get returned.
252 - Jeff Pohlmeyer has been working with the hiperfifo.c example source code,
253 and while doing so it became apparent that the current timeout system for
254 the socket API really was a bit awkward since it become quite some work to
255 be sure we have the correct timeout set.
257 Jeff then provided the new CURLMOPT_TIMERFUNCTION that is yet another
258 callback the app can set to get to know when the general timeout time
259 changes and thus for an application like hiperfifo.c it makes everything a
260 lot easier and nicer. There's a CURLMOPT_TIMERDATA option too of course in
261 good old libcurl tradition.
263 Jeff has also updated the hiperfifo.c example code to use this news.
265 Daniel (9 October 2006)
266 - Bogdan Nicula's second test case (posted Sun, 08 Oct 2006) converted to test
267 case 535 and it now runs fine. Again a problem with the pipelining code not
268 taking all possible (error) conditions into account.
270 Daniel (6 October 2006)
271 - Bogdan Nicula's hanging test case (posted Wed, 04 Oct 2006) was converted to
272 test case 533 and the test now runs fine.
274 Daniel (4 October 2006)
275 - Dmitriy Sergeyev provided an example source code that crashed CVS libcurl
276 but that worked nicely in 7.15.5. I converted it into test case 532 and
279 Daniel (29 September 2006)
280 - Removed a few other no-longer present options from the header file.
282 - Support for FTP third party transfers was removed. Here's why:
284 o The recent multi interface changes broke it and the design of the 3rd party
285 transfers made it very hard to fix the problems
286 o It was still blocking and thus nasty for the multi interface
287 o It was a lot of extra code for a very rarely used feature
288 o It didn't use the same code as for "plain" FTP transfers, so it didn't work
289 fine for IPv6 and it didn't properly re-use connections and more
290 o There's nobody around who's willing to work on and improve the existing
293 This does not mean that third party transfers are banned forever, only that
294 they need to be done better if they are to be re-added in the future.
296 The CURLOPT_SOURCE_* options are removed from the lib and so are the --3p*
297 options from the command line tool. For this reason, I also bumped the
298 version info for the lib.
300 Daniel (28 September 2006)
301 - Reported in #1561470 (http://curl.haxx.se/bug/view.cgi?id=1561470), libcurl
302 would crash if a bad function sequence was used when shutting down after
303 using the multi interface (i.e using easy_cleanup after multi_cleanup) so
304 precautions have been added to make sure it doesn't any more - test case 529
307 Daniel (27 September 2006)
308 - The URL in the cookie jar file is now changed since it was giving a 404.
309 Reported by Timothy Stone. The new URL will take the visitor to a curl web
310 site mirror with the document.
312 Daniel (24 September 2006)
313 - Bernard Leak fixed configure --with-gssapi-libs.
315 - Cory Nelson made libcurl use the WSAPoll() function if built for Windows
316 Vista (_WIN32_WINNT >= 0x0600)
318 Daniel (23 September 2006)
319 - Mike Protts added --ftp-ssl-control to make curl use FTP-SSL, but only
320 encrypt the control connection and use the data connection "plain".
322 - Dmitriy Sergeyev provided a patch that made the SOCKS[45] code work better
323 as it now will read the full data sent from servers. The SOCKS-related code
324 was also moved to the new lib/socks.c source file.
326 Daniel (21 September 2006)
327 - Added test case 531 in an attempt to repeat bug report #1561470
328 (http://curl.haxx.se/bug/view.cgi?id=1561470) that is said to crash when an
329 FTP upload fails with the multi interface. It did not, but I made a failed
330 upload still assume the control connection to be fine.
332 Daniel (20 September 2006)
333 - Armel Asselin fixed problems when you gave a proxy URL with user name and
334 empty password or no password at all. Test case 278 and 279 were added to
337 Daniel (12 September 2006)
338 - Added docs/examples/10-at-a-time.c by Michael Wallner
340 - Added docs/examples/hiperfifo.c by Jeff Pohlmeyer
342 Daniel (11 September 2006)
343 - Fixed my breakage from earlier today so that doing curl_easy_cleanup() on a
344 handle that is part of a multi handle first removes the handle from the
347 - Added CURLOPT_SSL_SESSIONID_CACHE and --no-sessionid to disable SSL
348 session-ID re-use on demand since there obviously are broken servers out
349 there that misbehave with session-IDs used.
351 - Jeff Pohlmeyer presented a *multi_socket()-using program that exposed a
352 problem with it (SIGSEGV-style). It clearly showed that the existing
353 socket-state and state-difference function wasn't good enough so I rewrote
354 it and could then re-run Jeff's program without any crash. The previous
355 version clearly could miss to tell the application when a handle changed
356 from using one socket to using another.
358 While I was at it (as I could use this as a means to track this problem
359 down), I've now added a 'magic' number to the easy handle struct that is
360 inited at curl_easy_init() time and cleared at curl_easy_cleanup() time that
361 we can use internally to detect that an easy handle seems to be fine, or at
362 least not closed or freed (freeing in debug builds fill the area with 0x13
363 bytes but in normal builds we can of course not assume any particular data
366 Daniel (9 September 2006)
367 - Michele Bini fixed how the hostname is put in NTLM packages. As servers
368 don't expect fully qualified names we need to cut them off at the first dot.
370 - Peter Sylvester cleaned up and fixed the getsockname() uses in ftp.c. Some
371 of them can be completetly removed though...
373 Daniel (6 September 2006)
374 - Ravi Pratap and I have implemented HTTP Pipelining support. Enable it for a
375 multi handle using CURLMOPT_PIPELINING and all HTTP connections done on that
376 handle will be attempted to get pipelined instead of done in parallell as
377 they are performed otherwise.
379 As a side-effect from this work, connections are now shared between all easy
380 handles within a multi handle, so if you use N easy handles for transfers,
381 each of them can pick up and re-use a connection that was previously used by
382 any of the handles, be it the same or one of the others.
384 This separation of the tight relationship between connections and easy
385 handles is most noticable when you close easy handles that have been used in
386 a multi handle and check amount of used memory or watch the debug output, as
387 there are times when libcurl will keep the easy handle around for a while
388 longer to be able to close it properly. Like for sending QUIT to close down
391 This is a major change.
393 Daniel (4 September 2006)
394 - Dmitry Rechkin (http://curl.haxx.se/bug/view.cgi?id=1551412) provided a
395 patch that while not fixing things very nicely, it does make the SOCKS5
396 proxy connection slightly better as it now acknowledges the timeout for
397 connection and it no longer segfaults in the case when SOCKS requires
398 authentication and you did not specify username:password.
400 Daniel (31 August 2006)
401 - Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
402 name resolves. It could get stuck in the wrong state.
404 Gisle (29 August 2006)
405 - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
406 compiler now uses the same config.dos file (renamed to config.h by
407 make). libcurl now builds fine using Watcom and Metaware's High-C
408 using the Watt-32 tcp/ip-stack.
410 Daniel (29 August 2006)
411 - David McCreedy added CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA to
412 allow applications to set their own socket options.
414 Daniel (25 August 2006)
415 - Armel Asselin reported that the 'running_handles' counter wasn't updated
416 properly if you removed a "live" handle from a multi handle with
417 curl_multi_remove_handle().
419 Daniel (22 August 2006)
420 - David McCreedy fixed a remaining mistake from the August 19 TYPE change.
422 - Peter Sylvester pointed out a flaw in the AllowServerConnect() in the FTP
423 code when doing pure ipv6 EPRT connections.
425 Daniel (19 August 2006)
426 - Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPE
427 command on subsequent requests on a re-used connection unless it has to.
429 - Armel Asselin fixed a crash in the FTP code when using SINGLECWD mode and
430 files in the root directory.
432 - Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn't
433 send the whole request at once, even though the Expect: header was disabled
434 by the application. An effect of this change is also that small (< 1024
435 bytes) POSTs are now always sent without Expect: header since we deem it
436 more costly to bother about that than the risk that we send the data in
439 Daniel (9 August 2006)
440 - Armel Asselin made the CURLOPT_PREQUOTE option work fine even when
441 CURLOPT_NOBODY is set true. PREQUOTE is then run roughly at the same place
442 in the command sequence as it would have run if there would've been a
445 Daniel (8 August 2006)
446 - Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTs
447 on a persistent connection and allowed the first to use that header, you
448 could not disable it for the second request.
450 Daniel (7 August 2006)
451 - Domenico Andreolfound a quick build error which happened because
452 src/config.h.in was not a proper duplcate of lib/config.h.in which it
453 should've been and this was due to the maketgz script not doing the cp
456 Version 7.15.5 (7 August 2006)
458 Daniel (2 August 2006)
459 - Mark Lentczner fixed how libcurl was not properly doing chunked encoding
460 if the header "Transfer-Encoding: chunked" was set by the application.
461 http://curl.haxx.se/bug/view.cgi?id=1531838
463 Daniel (1 August 2006)
464 - Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
465 an unknown error number on glibc systems.
466 http://curl.haxx.se/bug/view.cgi?id=1532289
468 Daniel (31 July 2006)
469 - *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
470 prototypes: they both now provide the number of running handles back to the
471 calling function. It makes the functions resemble the good old
472 curl_multi_perform() more and provides a nice way to know when the multi
475 ALERT2: don't use the curl_multi_socket*() functionality in anything
476 production-like until I say it's somewhat settled, as I suspect there might
477 be some further API changes before I'm done...
479 Daniel (28 July 2006)
480 - Yves Lejeune fixed so that replacing Content-Type: when doing multipart
481 formposts work exactly the way you want it (and the way you'd assume it
484 Daniel (27 July 2006)
485 - David McCreedy added --ftp-ssl-reqd which makes curl *require* SSL for both
486 control and data connection, as the existing --ftp-ssl option only requests
489 - [Hiper-related work] Added a function called curl_multi_assign() that will
490 set a private pointer added to the internal libcurl hash table for the
491 particular socket passed in to this function:
493 CURLMcode curl_multi_assign(CURLM *multi_handle,
494 curl_socket_t sockfd,
497 'sockp' being a custom pointer set by the application to be associated with
498 this socket. The socket has to be already existing and in-use by libcurl,
499 like having already called the callback telling about its existance.
501 The set hashp pointer will then be passed on to the callback in upcoming
502 calls when this same socket is used (in the brand new 'socketp' argument).
504 Daniel (26 July 2006)
505 - Dan Nelson added the CURLOPT_FTP_ALTERNATIVE_TO_USER libcurl option and curl
506 tool option named --ftp-alternative-to-user. It provides a mean to send a
507 particular command if the normal USER/PASS approach fails.
509 - Michael Jerris added magic that builds lib/curllib.vcproj automatically for
512 Daniel (25 July 2006)
513 - Georg Horn made the transfer timeout error message include more details.
515 Daniel (20 July 2006)
516 - David McCreedy fixed a build error when building libcurl with HTTP disabled,
517 problem added with the curl_formget() patch.
519 Daniel (17 July 2006)
520 - Jari Sundell did some excellent research and bug tracking, figured out that
521 we did wrong and patched it: When nodes were removed from the splay tree,
522 and we didn't properly remove it from the splay tree when an easy handle was
523 removed from a multi stack and thus we could wrongly leave a node in the
524 splay tree pointing to (bad) memory.
526 Daniel (14 July 2006)
527 - David McCreedy fixed a flaw where the CRLF counter wasn't properly cleared
528 for FTP ASCII transfers.
531 - Ates Goral pointed out that libcurl's cookie parser did case insensitive
532 string comparisons on the path which is incorrect and provided a patch that
533 fixes this. I edited test case 8 to include details that test for this.
535 - Ingmar Runge provided a source snippet that caused a crash. The reason for
536 the crash was that libcurl internally was a bit confused about who owned the
537 DNS cache at all times so if you created an easy handle that uses a shared
538 DNS cache and added that to a multi handle it would crash. Now we keep more
539 careful internal track of exactly what kind of DNS cache each easy handle
540 uses: None, Private (allocated for and used only by this single handle),
541 Shared (points to a cache held by a shared object), Global (points to the
542 global cache) or Multi (points to the cache within the multi handle that is
543 automatically shared between all easy handles that are added with private
547 - Toshiyuki Maezawa fixed a problem where you couldn't override the
548 Proxy-Connection: header when using a proxy and not doing CONNECT.
550 Daniel (24 June 2006)
551 - Michael Wallner added curl_formget(), which allows an application to extract
552 (serialise) a previously built formpost (as with curl_formadd()).
554 Daniel (23 June 2006)
555 - Arve Knudsen found a flaw in curl_multi_fdset() for systems where
556 curl_socket_t is unsigned (like Windows) that could cause it to wrongly
557 return a max fd of -1.
559 Daniel (20 June 2006)
560 - Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE and
561 CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed
562 to send or receive data. This kind of adds the the command line tool's
563 option --limit-rate to the library.
565 The rate limiting logic in the curl app is now removed and is instead
566 provided by libcurl itself. Transfer rate limiting will now also work for -d
567 and -F, which it didn't before.
569 Daniel (19 June 2006)
570 - Made -K on a file that couldn't be read cause a warning to be displayed.
572 Daniel (13 June 2006)
573 - Dan Fandrich implemented --enable-hidden-symbols configure option to enable
574 -fvisibility=hidden on gcc >= 4.0. This reduces the size of the libcurl
575 binary and speeds up dynamic linking by hiding all the internal symbols from
578 Version 7.15.4 (12 June 2006)
581 - Brian Dessent fixed the code for cygwin in three distinct ways:
583 The first modifies {lib,src}/setup.h to not include the winsock headers
584 under Cygwin. This fixes the reported build problem. Cygwin attempts as
585 much as possible to emulate a posix environment under Windows. This means
586 that WIN32 is *not* #defined and (to the extent possible) everything is done
587 as it would be on a *ix type system. Thus <sys/socket.h> is the proper
588 include, and even though winsock2.h is present, including it just introduces
589 a whole bunch of incompatible socket API stuff.
591 The second is a patch I've included in the Cygwin binary packages for a
592 while. It skips two unnecessary library checks (-lwinmm and -lgdi32). The
593 checks are innocuous and they do succeed, but they pollute LIBS with
594 unnecessary stuff which gets recorded as such in the libcurl.la file, which
595 brings them into the build of any libcurl-downstream. As far as I know
596 these libs are really only necessary for mingw, so alternatively they could
597 be designed to only run if $host matches *-*-mingw* but I took the safer
598 route of skipping them for *-*-cygwin*.
600 The third patch replaces all uses of the ancient and obsolete __CYGWIN32__
601 with __CYGWIN__. Ref: <http://cygwin.com/ml/cygwin/2003-09/msg01520.html>.
604 - Mikael Sennerholm provided a patch that added NTLM2 session response support
605 to libcurl. The 21 NTLM test cases were again modified to comply...
608 - Óscar Morales Vivó updated the libcurl.framework.make file.
611 - Olaf Stüben fixed a bug that caused Digest authentication with md5-sess to
612 fail. When using the md5-sess, the result was not Md5 encoded and Base64
616 - Michael Wallner provided a patch that allows "SESS" to be set with
617 CURLOPT_COOKIELIST, which then makes all session cookies get cleared.
620 - Tor Arntsen made test 271 run fine again since the TFTP path fix.
623 - Martin Michlmayr filed debian bug report #367954, but the same error also
624 showed up in the autobuilds. It seems a rather long-since introduced shell
625 script flaw in the configure script suddenly was detected by the bash
626 version in Debian Unstable. It had previously passed undetected by all
627 shells used so far...
629 - David McCreedy updated lib/config-tpf.h
632 - Fixed the configure's check for old-style SSLeay headers since I fell over a
633 case with a duplicate file name (a krb4 implementation with an err.h
634 file). I converted the check to manually make sure three of the headers are
635 present before considering them fine.
637 - David McCreedy provided a fix for CURLINFO_LASTSOCKET that does extended
638 checks on the to-be-returned socket to make sure it truly seems to be alive
639 and well. For SSL connection it (only) uses OpenSSL functions.
642 - Fixed DICT in two aspects:
644 1 - allow properly URL-escaped words, like using %20 for spaces
646 2 - properly escape certain letters within a word to comply to the RFC2229
649 - Andreas Ntaflos reported a bug in libcurl.m4: When configuring my GNU
650 autotools project, which optionally (default=yes) uses libcurl on a system
651 without a (usable) libcurl installation, but not specifying
652 `--without-libcurl', configure determines correctly that no libcurl is
653 available, however, the LIBCURL variable gets expanded to `LIBCURL = -lcurl'
654 in the resulting Makefiles.
656 David Shaw fixed the flaw.
658 - Robson Braga Araujo fixed two problems in the recently added non-blocking SSL
659 connects. The state machine was not reset properly so that subsequent
660 connects using the same handle would fail, and there were two memory leaks.
662 - Robson Braga Araujo fixed a memory leak when you added an easy handle to a
663 multi stack and that easy handle had already been used to do one or more
664 easy interface transfers, as then the code threw away the previously used
665 DNS cache without properly freeing it.
668 - Dan Fandrich went over the TFTP code and he pointed out and fixed numerous
671 * The received file is corrupted when a packet is lost and retransmitted
672 (this is a serious problem!)
674 * Transmitting a file aborts if a block is lost and retransmitted
676 * Data is stored in the wrong location in the buffer for uploads, so uploads
677 always fail (I don't see how it could have ever worked, but it did on x86
680 * A number of calls are made to strerror instead of Curl_strerror, making
681 the code not thread safe
683 * There are references to errno instead of Curl_sockerrno(), causing
684 incorrect error messages on Windows
686 * The file name includes a leading / which violates RFC3617. Doing something
687 similar to ftp, where two slashes after the host name means an absolute
688 reference seems a reasonable extension to fix this.
690 * Failures in EBCDIC conversion are not propagated up to the caller but are
693 - Fixed known bug #28. The TFTP code no longer assumes a packed struct and
694 thus works reliably on more platforms.
697 - Roland Blom filed bug report #1481217
698 (http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele
699 Bini and David Byron. libcurl previously wrongly used GetLastError() on
700 windows to get error details after socket-related function calls, when it
701 really should use WSAGetLastError() instead.
703 When changing to this, the former function Curl_ourerrno() is now instead
704 called Curl_sockerrno() as it is necessary to only use it to get errno from
705 socket-related functions as otherwise it won't work as intended on Windows.
708 - Mark Eichin submitted bug report #1480821
709 (http://curl.haxx.se/bug/view.cgi?id=1480821) He found and identified a
710 problem with how libcurl dealt with GnuTLS and a case where gnutls returned
711 GNUTLS_E_AGAIN indicating it would block. It would then return an unexpected
712 return code, making Curl_ssl_send() confuse the upper layer - causing random
713 28 bytes trash data to get inserted in the transfered stream.
715 The proper fix was to make the Curl_gtls_send() function return the proper
716 return codes that the callers would expect. The Curl_ossl_send() function
720 - Added a --checkfor option to curl-config to allow users to easier
721 write for example shell scripts that test for the presence of a
722 new-enough libcurl version. If --checkfor is given a version string
723 newer than what is currently installed, curl-config will return a
724 non-zero exit code and output a string about the unfulfilled
727 Daniel (26 April 2006)
728 - David McCreedy brought initial line end conversions when doing FTP ASCII
729 transfers. They are done on non-windows systems and translate CRLF to LF.
731 I modified the 15 LIST-using test cases accordingly. The downside is that now
732 we'll have even more trouble to get the tests to run on Windows since they
733 should get CRLF newlines left intact which the *nix versions don't. I figure
734 the only sane thing to do is to add some kind of [newline] macro for the test
735 case files and have them expanded to the proper native line ending when the
736 test cases are run. This is however left to implement.
738 Daniel (25 April 2006)
739 - Paul Querna fixed libcurl to better deal with deflate content encoding
740 when the stream (wrongly) lacks a proper zlib header. This seems to be the
741 case on too many actual server implementations.
743 Daniel (21 April 2006)
744 - Ale Vesely fixed CURLOPT_INTERFACE when using a hostname.
746 Daniel (19 April 2006)
747 - Based on previous info from Tor Arntsen, I made configure detect the Intel
748 ICC compiler to add a compiler option for it, in order for configure to
749 properly be able to detect function prototypes.
751 - Robson Braga Araujo provided a patch that makes libcurl less eager to close
752 the control connection when using FTP, for example when you remove an easy
753 handle from a multi stack.
755 - Applied a patch by Ates Goral and Katie Wang that corrected my bad fix
756 attempt from April 10.
758 Daniel (11 April 2006)
759 - #1468330 (http://curl.haxx.se/bug/view.cgi?id=1468330) pointed out a bad
760 typecast in the curl tool leading to a crash with (64bit?) VS2005 (at least)
761 since the struct timeval field tv_sec is an int while time_t is 64bit.
763 Daniel (10 April 2006)
764 - Ates Goral found out that if you specified both CURLOPT_CONNECTTIMEOUT and
765 CURLOPT_TIMEOUT, the _longer_ time would wrongly be used for the SSL
768 - I merged my hiper patch (http://curl.haxx.se/libcurl/hiper/) into the main
769 sources. See the lib/README.multi_socket for implementation story with
770 details. Don't expect it to work fully yet. I don't intend to blow any
771 whistles or ring any bells about it until I'm more convinced it works at
772 least somewhat reliably.
774 Daniel (7 April 2006)
775 - David McCreedy's EBCDIC and TPF changes. Three new curl_easy_setopt()
776 options (callbacks) were added:
778 CONV_FROM_NETWORK_FUNCTION
779 CONV_TO_NETWORK_FUNCTION
780 CONV_FROM_UTF8_FUNCTION
782 Daniel (5 April 2006)
783 - Michele Bini modified the NTLM code to work for his "weird IIS case"
784 (http://curl.haxx.se/mail/lib-2006-02/0154.html) by adding the NTLM hash
785 function in addition to the LM one and making some other adjustments in the
786 order the different parts of the data block are sent in the Type-2 reply.
787 Inspiration for this work was taken from the Firefox NTLM implementation.
789 I edited the existing 21(!) NTLM test cases to run fine with these news. Due
790 to the fact that we now properly include the host name in the Type-2 message
791 the test cases now only compare parts of that chunk.
793 Daniel (28 March 2006)
794 - #1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug that
795 occurred when asking libcurl to follow HTTP redirects and the original URL
796 had more than one question mark (?). Added test case 276 to verify.
798 Daniel (27 March 2006)
799 - David Byron found a problem multiple -d options when libcurl was built with
800 --enable-debug, as then curl used free() on memory allocated both with
801 normal malloc() and with libcurl-provided functions, when the latter MUST be
802 freed with curl_free() in debug builds.
804 Daniel (26 March 2006)
805 - Tor Arntsen figured out that TFTP was broken on a lot of systems since we
806 called bind() with a too big argument in the 3rd parameter and at least
807 Tru64, AIX and IRIX seem to be very picky about it.
809 Daniel (21 March 2006)
810 - David McCreedy added CURLINFO_FTP_ENTRY_PATH.
812 - Xavier Bouchoux made the SSL connection non-blocking for the multi interface
813 (when using OpenSSL).
815 - Tor Arntsen fixed the AIX Toolbox RPM spec
817 Daniel (20 March 2006)
818 - David McCreedy fixed libcurl to no longer ignore AUTH failures and now it
819 reacts properly according to the CURLOPT_FTP_SSL setting.
821 - Dan Fandrich fixed two TFTP problems: Fixed a bug whereby a received file
822 whose length was a multiple of 512 bytes could have random garbage
823 appended. Also, stop processing TFTP packets which are too short to be
826 - Ilja van Sprundel reported a possible crash in the curl tool when using
827 "curl hostwithoutslash -d data -G"
829 Version 7.15.3 (20 March 2006)
831 Daniel (20 March 2006)
832 - VULNERABILITY reported to us by Ulf Harnhammar.
834 libcurl uses the given file part of a TFTP URL in a manner that allows a
835 malicious user to overflow a heap-based memory buffer due to the lack of
838 This overflow happens if you pass in a URL with a TFTP protocol prefix
839 ("tftp://"), using a valid host and a path part that is longer than 512
842 The affected flaw can be triggered by a redirect, if curl/libcurl is told to
843 follow redirects and an HTTP server points the client to a tftp URL with the
844 characteristics described above.
846 The Common Vulnerabilities and Exposures (CVE) project has assigned the name
847 CVE-2006-1061 to this issue.
849 Daniel (16 March 2006)
850 - Tor Arntsen provided a RPM spec file for AIX Toolbox, that now is included
851 in the release archive.
853 Daniel (14 March 2006)
854 - David McCreedy fixed:
856 a bad SSL error message when OpenSSL certificates are verified fine.
858 a missing return code assignment in the FTP code
860 Daniel (7 March 2006)
861 - Markus Koetter filed debian bug report #355715 which identified a problem
862 with the multi interface and multi-part formposts. The fix from February
863 22nd could make the Curl_done() function get called twice on the same
864 connection and it was not designed for that and thus tried to call free() on
865 an already freed memory area!
867 - Peter Heuchert made sure the CURLFTPSSL_CONTROL setting for CURLOPT_FTP_SSL
870 Daniel (6 March 2006)
871 - Lots of users on Windows have reported getting the "SSL: couldn't set
872 callback" error message so I've now made the setting of that callback not be
873 as critical as before. The function is only used for additional loggging/
874 trace anyway so a failure just means slightly less data. It should still be
875 able to proceed and connect fine to the server.
877 Daniel (4 March 2006)
878 - Thomas Klausner provided a patch written by Todd Vierling in bug report
879 #1442471 that fixes a build problem on Interix.
881 Daniel (2 March 2006)
882 - FTP upload without a file name part in the URL now causes
883 curl_easy_perform() to return CURLE_URL_MALFORMAT. Previously it allowed the
884 upload but named the file "(nil)" (without the quotes). Test case 524
887 - Added a check for getprotobyname in configure so that it'll be used, thanks
888 to Gisle Vanem's change the other day.
890 Daniel (28 February 2006)
891 - Dan Fandrich prevented curl from getting stuck in an endless loop in case we
892 are out of file handles very early in curl's code where it makes sure that
893 0, 1 and 2 aren't gonna be used by the lib for transfers.
895 Daniel (27 February 2006)
896 - Marty Kuhrt pointed out that there were two VMS-specific files missing in
899 Version 7.15.2 (27 February 2006)
901 Daniel (22 February 2006)
902 - Lots of work and analysis by "xbx___" in bug #1431750
903 (http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
904 different but related bugs:
906 1) Removing an easy handle from a multi handle before the transfer is done
907 could leave a connection in the connection cache for that handle that is
908 in a state that isn't suitable for re-use. A subsequent re-use could then
909 read from a NULL pointer and segfault.
911 2) When an easy handle was removed from the multi handle, there could be an
912 outstanding c-ares DNS name resolve request. When the response arrived,
913 it caused havoc since the connection struct it "belonged" to could've
916 Now Curl_done() is called when an easy handle is removed from a multi handle
917 pre-maturely (that is, before the transfer was complteted). Curl_done() also
918 makes sure to cancel all (if any) outstanding c-ares requests.
920 Daniel (21 February 2006)
921 - Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
922 type to the already provided type CURLPROXY_SOCKS4.
924 I added a --socks4 option that works like the current --socks5 option but
925 instead use the socks4 protocol.
927 Daniel (20 February 2006)
928 - Shmulik Regev fixed an issue with multi-pass authentication and compressed
929 content when libcurl didn't honor the internal ignorebody flag.
931 Daniel (18 February 2006)
932 - Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
933 code. It should however not be the cause of any troubles. He also fixed a
934 few similar problems in the HTTP test server code.
936 Daniel (17 February 2006)
937 - Shmulik Regev provided a fix for the DNS cache when using short life times,
938 as previously it could be holding on to old cached entries longer than
941 Daniel (11 February 2006)
942 - Karl Moerder added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options
943 that an app can use to let libcurl only connect to a remote host and then
944 extract the socket from libcurl. libcurl will then not attempt to do any
945 transfer at all after the connect is done.
947 - Kent Boortz improved the configure check for GnuTLS to properly set LIBS
950 Daniel (8 February 2006)
951 - Philippe Vaucher provided a brilliant piece of test code that show a problem
952 with re-used FTP connections. If the second request on the same connection
953 was set not to fetch a "body", libcurl could get confused and consider it an
954 attempt to use a dead connection and would go acting mighty strange.
956 Daniel (2 February 2006)
957 - Make --limit-rate [num] mean bytes. It used to be that but it broke in my
958 change done in November 2005.
960 Daniel (30 January 2006)
961 - Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
962 curl tool with --local-port. Plain and simply set the range of ports to bind
963 the local end of connections to. Implemented on to popular demand.
965 - Based on an error report by Philippe Vaucher, we no longer count a retried
966 connection setup as a follow-redirect. It turns out 1) this fails when a FTP
967 connection is re-setup and 2) it does make the max-redirs counter behave
970 Daniel (24 January 2006)
971 - Michal Marek provided a patch for FTP that makes libcurl continue to try
972 PASV even after EPSV returned a positive response code, if libcurl failed to
973 connect to the port number the EPSV response said. Obviously some people are
974 going through protocol-sensitive firewalls (or similar) that don't
975 understand EPSV and then they don't allow the second connection unless PASV
976 was used. This also called for a minor fix of test case 238.
978 Daniel (20 January 2006)
979 - Duane Cathey was one of our friends who reported that curl -P [IP]
980 (CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
981 "native" IP while it works fine for ipv6-disabled builds!
983 In the process of fixing this, I removed the support for LPRT since I can't
984 think of many reasons to keep doing it and asking on the mailing list didn't
985 reveal anyone else that could either. The code that sends EPRT and PORT is
986 now also a lot simpler than before (IMHO).
988 Daniel (19 January 2006)
989 - Jon Turner pointed out that doing -P [hostname] (CURLOPT_FTPPORT) with curl
990 (built ipv4-only) didn't work.
992 Daniel (18 January 2006)
993 - As reported in bug #1408742 (http://curl.haxx.se/bug/view.cgi?id=1408742),
994 the configure script complained about a missing "missing" script if you ran
995 configure within a path whose name included one or more spaces. This is due
996 to a flaw in automake (1.9.6 and earlier). I've now worked around it by
997 including an "overloaded" version of the AM_MISSING_HAS_RUN script that'll
998 be used instead of the one automake ships with. This kludge needs to be
999 removed once we get an automake version with this problem corrected.
1000 Possibly we'll then need to convert this into a kludge depending on what
1001 automake version that is used and that is gonna be painful and I don't even
1002 want to think about that now...!
1004 Daniel (17 January 2006)
1005 - David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
1006 the latest features and protocols that libcurl supports and has a minor fix
1007 to better deal with the obscure case where someone has more than one libcurl
1008 installed at the same time.
1010 Daniel (16 January 2006)
1011 - David Shaw finally removed all traces of Gopher and we are now officially
1012 not supporting it. It hasn't been functioning for years anyway, so this is
1013 just finally stating what already was true. And a cleanup at the same time.
1015 - Bryan Henderson turned the 'initialized' variable for curl_global_init()
1016 into a counter, and thus you can now do multiple curl_global_init() and you
1017 are then supposed to do the same amount of calls to curl_global_cleanup().
1018 Bryan has also updated the docs accordingly.
1020 Daniel (13 January 2006)
1021 - Andrew Benham fixed a race condition in the test suite that could cause the
1022 test script to kill all processes in the current process group!
1024 Daniel (12 January 2006)
1027 Fixed FTP_SKIP_PASV_IP and FTP_USE_EPSV to "do right" when used on FTP thru
1030 Fixed PROXYTUNNEL to work fine when you do ftp through a proxy. It would
1031 previously overwrite internal memory and cause unpredicted behaviour!
1033 Daniel (11 January 2006)
1034 - I decided to document the "secret option" here now, as I've received *NO*
1035 feedback at all on my mailing list requests from November 2005:
1037 I'm looking for feedback and comments. I added some experimental code the
1038 other day, that allows a libcurl user to select what method libcurl should
1039 use to reach a file on a FTP(S) server.
1041 This functionality is available in CVS code and in recent daily snapshots.
1045 The current name for the option is CURLOPT_FTP_FILEMETHOD (--ftp-method for
1046 the command line tool) and you set it to a long (there are currenly no
1047 defines for the argument values, just plain numericals). You can set three
1048 different "methods" that do this:
1050 1 multicwd - like today, curl will do a single CWD operation for each path
1051 part in the given URL. For deep hierarchies this means very many
1052 commands. This is how RFC1738 says it should be done. This is the
1055 2 nocwd - no CWD at all is done, curl will do SIZE, RETR, STOR etc and give
1056 a full path to the server.
1058 3 singlecwd - make one CWD with the full target directory and then operate
1059 on the file "normally".
1061 (With the command line tool you do --ftp-method [METHOD], where [METHOD] is
1062 one of "multicwd", "nocwd" or "singlecwd".)
1064 What feedback I'm interested in:
1066 1 - Do they work at all? Do you find servers where one of these don't work?
1068 2 - What would proper names for the option and its arguments be, if we
1069 consider this feature good enough to get included and documented in
1072 3 - Should we make libcurl able to "walk through" these options in case of
1073 (path related) failures, or should it fail and let the user redo any
1076 (This option is not documented in any man page just yet since I'm not sure
1077 these names will be used or if the functionality will end up exactly like
1078 this. And for the same reasons we have no test cases for these yet.)
1080 Daniel (10 January 2006)
1081 - When using a bad path over FTP, as in when libcurl couldn't CWD into all
1082 given subdirs, libcurl would still "remember" the full path as if it is the
1083 current directory libcurl is in so that the next curl_easy_perform() would
1084 get really confused if it tried the same path again - as it would not issue
1085 any CWD commands at all, assuming it is already in the "proper" dir.
1087 Starting now, a failed CWD command sets a flag that prevents the path to be
1088 "remembered" after returning.
1090 Daniel (7 January 2006)
1091 - Michael Jahn fixed so that the second CONNECT when doing FTP over a HTTP
1092 proxy actually used a new connection and not sent the second request on the
1095 Daniel (6 January 2006)
1096 - Alexander Lazic made the buildconf run the buildconf in the ares dir if that
1097 is present instead of trying to mimic that script in curl's buildconf
1100 Daniel (3 January 2006)
1101 - Andres Garcia made the TFTP test server build with mingw.
1102 Daniel (16 December 2005)
1103 - Jean Jacques Drouin pointed out that you could only have a user name or
1104 password of 127 bytes or less embedded in a URL, where actually the code
1105 uses a 255 byte buffer for it! Modified now to use the full buffer size.
1107 Daniel (12 December 2005)
1108 - Dov Murik corrected the HTTP_ONLY define to disable the TFTP support properly
1110 Version 7.15.1 (7 December 2005)
1112 Daniel (6 December 2005)
1113 - Full text here: http://curl.haxx.se/docs/adv_20051207.html Pointed out by
1118 libcurl's URL parser function can overflow a malloced buffer in two ways, if
1119 given a too long URL.
1121 These overflows happen if you
1123 1 - pass in a URL with no protocol (like "http://") prefix, using no slash
1124 and the string is 256 bytes or longer. This leads to a single zero byte
1125 overflow of the malloced buffer.
1127 2 - pass in a URL with only a question mark as separator (no slash) between
1128 the host and the query part of the URL. This leads to a single zero byte
1129 overflow of the malloced buffer.
1131 Both overflows can be made with the same input string, leading to two single
1132 zero byte overwrites.
1134 The affected flaw cannot be triggered by a redirect, but the long URL must
1135 be passed in "directly" to libcurl. It makes this a "local" problem. Of
1136 course, lots of programs may still pass in user-provided URLs to libcurl
1137 without doing much syntax checking of their own, allowing a user to exploit
1140 There is no known exploit at the time of this writing.
1143 Daniel (2 December 2005)
1144 - Jamie Newton pointed out that libcurl's file:// code would close() a zero
1145 file descriptor if given a non-existing file.
1147 Daniel (24 November 2005)
1148 - Doug Kaufman provided a set of patches to make curl build fine on DJGPP
1149 again using configure.
1151 - Yang Tse provided a whole series of patches to clear up compiler warnings on
1154 Daniel (17 November 2005)
1155 - I extended a patch from David Shaw to make libcurl _always_ provide an error
1156 string in the given error buffer to address the flaw mention on 21 sep 2005.
1158 Daniel (16 November 2005)
1159 - Applied Albert Chin's patch that makes the libcurl.pc pkgconfig file get
1160 installed on 'make install' time.
1162 Daniel (14 November 2005)
1163 - Quagmire reported that he needed to raise a NTLM buffer for SSPI to work
1164 properly for a case, and so we did. We raised it even for non-SSPI builds
1165 but it should not do any harm. http://curl.haxx.se/bug/view.cgi?id=1356715
1167 - Jan Kunder's debian bug report
1168 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338680 identified a weird
1169 error message for when you try to upload a file and the requested directory
1170 doesn't exist on the target server.
1172 - Yang Tse fixed compiler warnings in lib/ssluse.c with OpenSSL 0.9.8 and in
1173 lib/memdebug.h that showed up in his msvc builds.
1175 Daniel (13 November 2005)
1176 - Debian bug report 338681 by Jan Kunder: make curl better detect and report
1177 bad limit-rate units:
1178 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
1179 error if a bad unit is used.
1181 - Thanks to this nice summary of poll() implementations:
1182 http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
1183 Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
1184 connectin closure so we check for that case (too) and re-enable poll for
1187 Daniel (12 November 2005)
1188 - Eugene Kotlyarov found out that cygwin's poll() function isn't doing things
1189 right: http://curl.haxx.se/mail/archive-2005-11/0045.html so we now disable
1190 poll() and use select() on cygwin too (we already do the same choice on Mac
1193 - Dima Barsky patched problem #1348930: the GnuTLS code completely ignored
1194 client certificates! (http://curl.haxx.se/bug/view.cgi?id=1348930).
1196 Daniel (10 November 2005)
1197 - David Lang fixed IPv6 support for TFTP!
1199 - Introducing range stepping to the curl globbing support. Now you can specify
1200 step counter by adding :[num] within the brackets when specifying a range:
1205 If no step counter is set, it defaults to 1 as before:
1210 Daniel (8 November 2005)
1211 - Removed the use of AI_CANONNAME in the IPv6-enabled resolver functions since
1212 we really have no use for reverse lookups of the address.
1214 I truly hope these are the last reverse lookups we had lingering in the
1217 - Dmitry Bartsevich discovered some issues in compatibilty of SSPI-enabled
1218 version of libcurl with different Windows versions. Current version of
1219 libcurl imports SSPI functions from secur32.dll. However, under Windows NT
1220 4.0 these functions are located in security.dll, under Windows 9x - in
1221 secur32.dll and Windows 2000 and XP contains both these DLLs (security.dll
1222 just forwards calls to secur32.dll).
1224 Dmitry's patch loads proper library dynamically depending on Windows
1225 version. Function InitSecurityInterface() is used to obtain pointers to all
1226 of SSPI function in one structure.
1228 Daniel (31 October 2005)
1229 - Vilmos Nebehaj improved libcurl's LDAP abilities:
1231 The LDAP code in libcurl can't handle LDAP servers of LDAPv3 nor binary
1232 attributes in LDAP objects. So, I made a quick patch to address these
1235 The solution is simple: if we connect to an LDAP server, first try LDAPv3
1236 (which is the preferred protocol as of now) and then fall back to LDAPv2.
1237 In case of binary attributes, we first convert them to base64, just like the
1238 openldap client does. It uses ldap_get_values_len() instead of
1239 ldap_get_values() to be able to retrieve binary attributes correctly. I
1240 defined the necessary LDAP macros in lib/ldap.c to be able to compile
1241 libcurl without the presence of libldap
1243 Daniel (27 October 2005)
1244 - Nis Jorgensen filed bug report #1338648
1245 (http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a
1246 feature request, but anyway. It pointed out that --max-redirs did not allow
1247 it to be set to 0, which then would return an error code on the first
1248 Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS
1249 set to 0, or -1 for infinity. Added test case 274 to verify.
1251 - tommink[at]post.pl reported in bug report #1337723
1252 (http://curl.haxx.se/bug/view.cgi?id=1337723) that curl could not upload
1253 binary data from stdin on Windows if the data contained control-Z (hex 1a)
1254 since that is treated as end-of-file when read in text mode. Gisle Vanem
1255 pointed out the fix, and I made both -T and --data-binary take advantage of
1258 - Jaz Fresh pointed out that if you used "-r [number]" as was wrongly described
1259 in the man page, curl would send an invalid HTTP Range: header. The correct
1260 way would be to use "-r [number]-" or even "-r -[number]". Starting now,
1261 curl will warn if this is discovered, and automatically append a dash to the
1262 range before passing it to libcurl.
1264 Daniel (25 October 2005)
1265 - Amol Pattekar reported a bug with great detail and a fine example in bug
1266 #1326306 (http://curl.haxx.se/bug/view.cgi?id=1326306). When using the multi
1267 interface and connecting to a host with multiple IP addresses, and one of
1268 the addresses fails to connect (the server must exist and respond, just not
1269 accept connections) libcurl leaks a socket descriptor. Thanks to the fine
1270 report, I could find and fix this.
1272 Daniel (22 October 2005)
1273 - Dima Barsky reported a problem with GnuTLS-enabled libcurl in bug report
1274 #1334338 (http://curl.haxx.se/bug/view.cgi?id=1334338). When reading an SSL
1275 stream from a server and the server requests a "rehandshake", the current
1276 code simply returns this as an error. I have no good way to test this, but
1277 I've added a crude attempt of dealing with this situation slightly better -
1278 it makes a blocking handshake if this happens. Done like this because fixing
1279 this the "proper" way (that would handshake asynchronously) will require
1280 quite some work and I really need a good way to test this to do such a
1283 Daniel (21 October 2005)
1284 - "Ofer" reported a problem when libcurl re-used a connection and failed to do
1285 it, it could then accidentally actually crash. Presumably, this concerns FTP
1286 connections. http://curl.haxx.se/bug/view.cgi?id=1330310
1288 - Temprimus improved the MSVC makefile so that the static debug SSL libs are
1289 linked to the executable and not to the libcurld.lib
1290 http://curl.haxx.se/bug/view.cgi?id=1326676
1292 - Bradford Bruce made the windows resolver code properly return
1293 CURLE_COULDNT_RESOLVE_PROXY and CURLE_COULDNT_RESOLVE_HOST on resolving
1294 errors (as documented).
1296 Daniel (20 October 2005)
1297 - Dave Dribin made libcurl understand and handle cases when the server
1298 (wrongly) sends *two* WWW-Authenticate headers for Digest. While this should
1299 never happen in a sane world, libcurl previously got into an infinite loop
1300 when this occurred. Dave added test 273 to verify this.
1302 - Temprimus improved the MSVC makefile: "makes a build option available so if
1303 you set rtlibcfg=static for the make, then it would build with /MT. The
1304 default behaviour is /MD (the original)."
1305 http://curl.haxx.se/bug/view.cgi?id=1326665
1307 Daniel (14 October 2005)
1308 - Reverted the LIBCURL_VERSION_NUM change from October 6. As Dave Dribin
1309 reported, the define is used by the configure script and is assumed to use
1310 the 0xYYXXZZ format. This made "curl-config --vernum" fail in the 7.15.0
1313 Version 7.15.0 (13 October 2005)
1315 Daniel (12 October 2005)
1316 - Michael Sutton of iDEFENSE reported and I fixed a securitfy flaw in the NTLM
1317 code that would overflow a buffer if given a too long user name or domain
1318 name. This would happen if you enable NTLM authentication and either
1320 A - pass in a user name and domain name to libcurl that together are longer
1323 B - allow (lib)curl to follow HTTP "redirects" (Location: and the
1324 appropriate HTTP 30x response code) and the new URL contains a URL with
1325 a user name and domain name that together are longer than 192 bytes
1327 See http://curl.haxx.se/docs/security.html for further details and updates
1329 Daniel (5 October 2005)
1330 - Darryl House reported a problem with using -z to download files from FTP.
1331 It turned out that if the given time stamp was exact the same as the remote
1332 time stamp, the file would still wrongly be downloaded. Added test case 272
1335 Daniel (4 October 2005)
1336 - Domenico Andreoli fixed a man page malformat and removed odd (0xa0) bytes
1337 from the configure script.
1339 - Michael Wallner reported that the date parser had wrong offset stored for
1340 the MEST and CEST time zones.
1342 Daniel (27 September 2005)
1343 - David Yan filed bug #1299181 (http://curl.haxx.se/bug/view.cgi?id=1299181)
1344 that identified a silly problem with Content-Range: headers with the 'bytes'
1345 keyword written in a different case than all lowercase! It would cause a
1348 - TJ Saunders of the proftpd project identified and pointed out problems with
1349 the modified FTPS negotiation change of August 19 2005. Thus, we revert the
1350 change back to pre-7.14.1 status.
1352 Daniel (21 September 2005)
1353 - Fixed "cut off" sentence in the libcurl-tutorial man page:
1354 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329305
1356 - Clarified in the curl_easy_setopt man page what the default
1357 CURLOPT_WRITEFUNCTION and CURLOPT_WRITEDATA mean:
1358 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329311
1360 - Clarified in the curl_easy_setopt man page that CURLOPT_ERRORBUFFER
1361 sometimes doesn't fill in the buffer even though it is supposed to:
1362 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=329313
1364 - When CURLE_URL_MALFORMAT is returned due to a missing URL, it now has an
1367 Daniel (19 September 2005)
1368 - Dmitry Bartsevich made the SSPI support work on Windows 9x as well.
1370 Daniel (15 September 2005)
1371 - Added a TFTP server to the test suite and made the test suite capable of
1374 Daniel (7 September 2005)
1375 - Ben Madsen's detailed reports that funnily enough only occurred with certain
1376 glibc versions turned out to be curl using an already closed file handle
1377 during certain conditions (like when saving FTP server "headers").
1379 - Scott Davis helped me track down a problem in the test HTTP server that made
1380 test case 56 wrongly fail at times. It turned out it was due to the server
1381 finding the end of a chunked-encoded POST too early.
1383 Daniel (6 September 2005)
1384 - Now curl warns if an unknown variable is used in the -w/--writeout argument.
1386 Daniel (4 September 2005)
1387 - I applied Nicolas François' man page patch he posted to the Debian bug
1388 tracker. It corrected two lines that started with apostrophes, which isn't
1389 legal nroff format. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=326511
1391 - Added --ftp-skip-pasv-ip to the command line tool, that sets the new
1392 CURLOPT_FTP_SKIP_PASV_IP option. It makes libcurl re-use the control
1393 connection's IP address when setting up the data connection instead of
1394 extractting the IP address from the PASV response. It has turned out this
1395 feature is frequently needed by people to circumvent silly servers and silly
1396 firewalls, especially when FTPS is used and the PASV command-response is
1399 Sponsored by CU*Answers
1401 Daniel (1 September 2005)
1402 - John Kelly added TFTP support to libcurl. A bunch of new error codes was
1403 added. TODO: add them to docs. add TFTP server to test suite. add TFTP to
1404 list of protocols whereever those are mentioned.
1406 Version 7.14.1 (1 September 2005)
1408 Daniel (29 August 2005)
1409 - Kevin Lussier pointed out a problem with curllib.dsp and how to fix it.
1411 - Igor Polyakov fixed a rather nasty problem with the threaded name resolver
1412 for Windows, that could lead to an Access Violation when the multi interface
1413 was used due to an issue with how the resolver thread was and was not
1416 - Simon Josefsson brought a patch that allows curl to get built to use GNU GSS
1417 instead of MIT/Heimdal for GSS capabilities.
1419 Daniel (24 August 2005)
1420 - Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessible
1421 from the command line tool with --ignore-content-length. This will make it
1422 easier to download files from Apache 1.x (and similar) servers that are
1423 still having problems serving files larger than 2 or 4 GB. When this option
1424 is enabled, curl will simply have to wait for the server to close the
1425 connection to signal end of transfer. I wrote test case 269 that runs a
1426 simple test to verify that this works.
1428 - (Trying hard to exclude emotions now.) valgrind version 3 suddenly renamed
1429 the --logfile command line option to --log-file, and thus the test script
1430 valgrind autodetection now has yet another version check to do and then it
1431 alters the valgrind command line accordingly.
1433 - Fixed CA cert verification using GnuTLS with the default bundle, which
1434 previously failed due to GnuTLS not allowing x509 v1 CA certs by default.
1435 Ralph Mitchell reported.
1437 Daniel (19 August 2005)
1438 - Norbert Novotny had problems with FTPS and he helped me work out a patch
1439 that made curl run fine in his end. The key was to make sure we do the
1440 SSL/TLS negotiation immediately after the TCP connect is done and not after
1441 a few other commands have been sent like we did previously. I don't consider
1442 this change necessary to obey the standards, I think this server is pickier
1443 than what the specs allow it to be, but I can't see how this modified
1444 libcurl code can add any problems to those who are interpreting the
1445 standards more liberally.
1447 Daniel (17 August 2005)
1448 - Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (with
1449 CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to
1450 write the result to a given cookie jar and then never actually call
1451 curl_easy_perform() - the given file(s) to read was never read but the
1452 output file was written and thus it caused a "funny" result.
1454 - While doing some tests for the bug above, I noticed that Firefox generates
1455 large numbers (for the expire time) in the cookies.txt file and libcurl
1456 didn't treat them properly. Now it does.
1458 Daniel (15 August 2005)
1459 - Added more verbose "warning" messages to the curl client for cases where it
1460 fails to open/read files etc to help users diagnose why it doesn't do what
1461 you'd expect it to. Converted lots of old messages to use the new generic
1462 function I wrote for this purpose.
1464 Daniel (13 August 2005)
1465 - James Bursa identified a libcurl HTTP bug and a good way to repeat it. If a
1466 site responds with bad HTTP response that doesn't contain any header at all,
1467 only a response body, and the write callback returns 0 to abort the
1468 transfer, it didn't have any real effect but the write callback would be
1469 called once more anyway.
1471 Daniel (12 August 2005)
1472 - Based on Richard Clayton's reports, I found out that using curl -d @filename
1473 when 'filename' was not possible to access made curl use a GET request
1476 - The time condition illegal syntax warning is now inhibited if -s is used.
1478 Daniel (10 August 2005)
1479 - Mario Schroeder found out that one of the debug callbacks calls that regards
1480 SSL data with the CURLINFO_TEXT type claimed that the data was one byte
1481 larger than it actually is, thus falsely telling the application that the
1482 terminating zero was part of the data.
1484 Daniel (9 August 2005)
1485 - Christopher R. Palmer fixed the offsets used for date parsings when the time
1486 zone name of a daylight savings time was used. For example, PDT vs PDS. This
1487 flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
1488 Fortunately, no web server or cookie string etc should be using such time
1489 zone names thus limiting the effect of this bug.
1491 Daniel (8 August 2005)
1492 - Jon Grubbs filed bug report #1249962
1493 (http://curl.haxx.se/bug/view.cgi?id=1249962) which identified a problem
1494 with NTLM on a HTTP proxy if an FTP URL was given. libcurl now properly
1495 switches to pure HTTP internally when an HTTP proxy is used, even for FTP
1496 URLs. The problem would also occur with other multi-pass auth methods.
1498 Daniel (7 August 2005)
1499 - When curl is built with GnuTLS, curl-config didn't include "SSL" when
1500 --features was used.
1502 Daniel (28 July 2005)
1503 - If any of the options CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST is
1504 set to 1, CURLOPT_NOBODY will now automatically be set to 0.
1506 Daniel (27 July 2005)
1507 - Dan Fandrich changes over the last week: fixed numerous minor configure
1508 option parsing flaws: --without-gnutls, --without-spnego --without-gssapi
1509 and --without-krb4. Spellfixed several error messages.
1511 - Peteris Krumins added CURLOPT_COOKIELIST and CURLINFO_COOKIELIST, which is a
1512 simple interface to extracting and setting cookies in libcurl's internal
1513 "cookie jar". See the new cookie_interface.c example code.
1515 Daniel (13 July 2005)
1516 - Diego Casorran provided patches to make curl build fine on Amiga again.
1518 Daniel (12 July 2005)
1519 - Adrian Schuur added trailer support in the chunked encoding stream. The
1520 trailer is then sent to the normal header callback/stream. I wrote up test
1521 case 266 to verify the basic functionality. Do note that test case 34
1522 contains a flawed chunked encoding stream that still works the same.
1524 Daniel (5 July 2005)
1525 - Gisle Vanem came up with a nice little work-around for bug #1230118
1526 (http://curl.haxx.se/bug/view.cgi?id=1230118). It seems the Windows (MSVC)
1527 libc time functions may return data one hour off if TZ is not set and
1528 automatic DST adjustment is enabled. This made curl_getdate() return wrong
1529 value, and it also concerned internal cookie expirations etc.
1531 Daniel (4 July 2005)
1532 - Andrew Bushnell provided enough info for me to tell that we badly needed to
1533 fix the CONNECT authentication code with multi-pass auth methods (such as
1534 NTLM) as it didn't previously properly ignore response-bodies - in fact it
1535 stopped reading after all response headers had been received. This could
1536 lead to libcurl sending the next request and reading the body from the first
1537 request as response to the second request. (I also renamed the function,
1538 which wasn't strictly necessary but...)
1540 The best fix would to once and for all make the CONNECT code use the
1541 ordinary request sending/receiving code, treating it as any ordinary request
1542 instead of the special-purpose function we have now. It should make it
1543 better for multi-interface too. And possibly lead to less code...
1545 Added test case 265 for this. It doesn't work as a _really_ good test case
1546 since the test proxy is too stupid, but the test case helps when running the
1549 Daniel (30 June 2005)
1550 - Dan Fandrich improved the configure script's ability to figure out what kind
1551 of strerror_r() API that is used when cross-compiling. If __GLIB__ is
1552 defined, it assumes the glibc API. If not, it issues a notice as before that
1553 the user needs to manually edit lib/config.h for this.
1555 Daniel (23 June 2005)
1556 - David Shaw's fix that unifies proxy string treatment so that a proxy given
1557 with CURLOPT_PROXY can use a http:// prefix and user + password. The user
1558 and password fields are now also URL decoded properly. Test case 264 added
1561 Daniel (22 June 2005)
1562 - David Shaw updated libcurl.m4
1564 Daniel (14 June 2005)
1565 - Gisle Vanem fixed a potential thread handle leak. Bug report #1216500
1566 (http://curl.haxx.se/bug/view.cgi?id=1216500). Comment in
1567 http://curl.haxx.se/mail/lib-2005-06/0059.html
1569 Daniel (13 June 2005)
1570 - Made buildconf run libtoolize in the ares dir too (inspired by Tupone's
1573 Daniel (9 June 2005)
1574 - Incorporated Tupone's findtool fix in buildconf (slightly edited)
1576 - Incorporated Tupone's head -n fix in buildconf.
1578 Daniel (8 June 2005)
1579 - Reverted Tupone's patch again, it broke numerous autobuilds. Let's apply it
1580 in pieces, one by one and see what we need to adjust to work all over.
1582 Daniel (6 June 2005)
1583 - Tupone Alfredo fixed three problems in buildconf:
1585 1) findtool does look per tool in PATH and think ./perl is the perl
1586 executable, while is just a local directory (I have . in the PATH)
1588 2) I got several warning for head -1 deprecated in favour of head -n 1
1590 3) ares directory is missing some file (missing is missing :-) ) because
1591 automake and friends is not run.
1593 Daniel (3 June 2005)
1594 - Added docs/libcurl/getinfo-times, based on feedback from 'Edi':
1595 http://curl.haxx.se/feedback/display.cgi?id=11178325798299&support=yes
1597 - Andres Garcia provided yet another text mode patch for several test cases so
1598 that they do text comparisions better on Windows (newline-wise).
1600 Daniel (1 June 2005)
1601 - The configure check for c-ares now adds the cares lib before the other libs,
1602 to make it build fine with mingw. Inspired by Tupone Alfredo's bug report
1603 and patch: http://curl.haxx.se/bug/view.cgi?id=1212940
1605 Daniel (31 May 2005)
1606 - Todd Kulesza reported a flaw in the proxy option, since a numerical IPv6
1607 address was not possible to use. It is now, but requires it written
1608 RFC2732-style, within brackets - which incidently is how you enter numerical
1609 IPv6 addresses in URLs. Test case 263 added to verify.
1611 Daniel (30 May 2005)
1612 - Eric Cooper reported about a problem with HTTP servers that responds with
1613 binary zeroes within the headers. They confused libcurl to do wrong so the
1614 downloaded headers become incomplete. The fix is now verified with test case
1615 262. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=310948
1617 Daniel (25 May 2005)
1618 - Fixed problems with the test suite, and in particular the FTP test cases
1619 since it previously was failing every now and then in a nonsense manner.
1621 - --trace-time now outputs the full microsecond, all 6 digits.
1623 Daniel (24 May 2005)
1624 - Andres Garcia provided a text mode patch for several test cases so that they
1625 do text comparisions better on Windows (newline-wise).
1627 - Any 2xx response (and not just 200) is now considered a fine response to
1628 TYPE, as some servers obviously sends a 226 there. Added test case 261 to
1629 verify. Based on a question/report by Georg Wicherski.
1631 Daniel (20 May 2005)
1632 - Improved runtests.pl to allow stdout tests to be mode=text as well, just
1633 as file comparisons already supports. Added this info to the FILEFORMAT
1636 Daniel (18 May 2005)
1637 - John McGowan identified a problem in bug report #1204435
1638 (http://curl.haxx.se/bug/view.cgi?id=1204435) with malformed URLs like
1639 "http://somehost?data" as it added a slash too much in the request ("GET
1640 /?data/"...). Added test case 260 to verify.
1642 - The configure check for strerror_r() failed to detect the proper API at
1643 times, like on HP-UX 10.20. Then lib/strerror.c badly assumed the glibc
1644 version if the posix define wasn't set (since it _had_ found a strerror_r).
1646 Daniel (16 May 2005)
1647 - The gmtime_r() function in HP-UX 10.20 is broken. About 13 test cases fail
1648 due to this. There's now a configure check that attempts to detect the bad
1649 function and not use it on such systems.
1651 Version 7.14.0 (16 May 2005)
1653 Daniel (13 May 2005)
1654 - Grigory Entin reported that curl's configure detects a fine poll() for Mac
1655 OS X 10.4 (while 10.3 or later detected a "bad" one), but the executable
1656 doesn't work as good as if built without poll(). I've adjusted the configure
1657 to always skip the fine-poll() test on Mac OS X (darwin).
1659 Daniel (12 May 2005)
1660 - When doing a second request (after a disconnect) using the same easy handle,
1661 over a proxy that uses NTLM authentication, libcurl failed to use NTLM again
1662 properly (the auth method was accidentally reset to the same as had been set
1663 for host auth, which defaults to Basic). Bug report #1200661
1664 (http://curl.haxx.se/bug/view.cgi?id=1200661) identified the the problem and
1667 - If -z/--time-cond is used with an invalid date syntax, this is no longer
1668 silently discarded. Instead a proper warning message is diplayed that
1669 informs about it. But it still continues without the condition.
1671 Version 7.14.0-pre2 (11 May 2005)
1673 Daniel (11 May 2005)
1674 - Starting now, libcurl sends a little different set of headers in its default
1677 A) Normal non-proxy HTTP:
1678 - no more "Pragma: no-cache" (this only makes sense to proxies)
1680 B) Non-CONNECT HTTP request over proxy:
1681 - "Pragma: no-cache" is used (like before)
1682 - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies)
1684 C) CONNECT HTTP request over proxy:
1685 - "Host: [name]:[port]"
1686 - "Proxy-Connection: Keep-alive"
1688 The A) case is mostly to reduce the default header size and remove a
1691 The B) is to address (rare) problems with HTTP 1.0 proxies
1693 The C) headers are both to address (rare) problems with some proxies. The
1694 code in libcurl that deals with CONNECT requests need a rewrite, but it
1695 feels like a too big a job for me to do now. Details are added in the code
1698 Updated a large amount of test cases to reflect the news.
1700 Daniel (10 May 2005)
1701 - Half-baked attempt to bail out if select() returns _only_ errorfds when the
1702 transfer is in progress. An attempt to fix Allan's problem. See
1703 http://curl.haxx.se/mail/lib-2005-05/0073.html and the rest of that thread
1706 I'm still not sure this is the right fix, but...
1708 Version 7.14.0-pre1 (9 May 2005)
1711 - Sort of "fixed" KNOWN_BUGS #4: curl now builds IPv6 enabled on AIX 4.3. At
1712 least it should no longer cause a compiler error. However, it does not have
1713 AI_NUMERICHOST so we cannot getaddrinfo() any numerical addresses with it
1714 (we use that for FTP PORT/EPRT)! So, I modified the configure check that
1715 checks if the getaddrinfo() is working, to use AI_NUMERICHOST since then
1716 it'll fail on AIX 4.3 and it will automatically build with IPv6 support
1719 - Added --trace-time that when used adds a time stamp to each trace line that
1720 --trace, --trace-ascii and --verbose output. I also made the '>' display
1721 separate each line on the linefeed so that HTTP requests etc look nicer in
1724 - Made curl recognize the environment variables Lynx (and others?) support for
1725 pointing out the CA cert path/file: SSL_CERT_DIR and SSL_CERT_FILE. If
1726 CURL_CA_BUNDLE is not set, they are checked afterwards.
1728 Like before: on windows if none of these are set, it checks for the ca cert
1731 1. application's directory
1732 2. current working directory
1733 3. Windows System directory (e.g. C:\windows\system32)
1734 4. Windows Directory (e.g. C:\windows)
1735 5. all directories along %PATH%
1738 - The runtests.pl script now starts test servers by doing fork() and exec()
1739 instead of the previous approach. This is less complicated and should
1740 hopefully lead to less "leaked" servers (servers that aren't stopped
1741 properly when the tests are stopped).
1743 - Alexander Zhuravlev found a case when you did "curl -I [URL]" and it
1744 complained on the chunked encoding, even though a HEAD should never return a
1745 body and thus it cannot be a chunked-encoding problem!
1747 Daniel (30 April 2005)
1748 - Alexander Zhuravlev found out that (lib)curl SIGSEGVed when using
1749 --interface on an address that can't be bound.
1751 Daniel (28 April 2005)
1752 - Working on fixing up test cases to mark sections as 'mode=text' for things
1753 that curl writes as text files, since then they can get different line
1754 endings depending on OS. Andrés GarcÃa helps me work this out.
1756 Did lots of other minor tweaks on the test scripts to work better and more
1757 reliably find test servers and also kill test servers.
1759 - Dan Fandrich pointed out how the runtests.pl script killed the HTTP server
1760 instead of the HTTPS server when closing it down.
1762 Daniel (27 April 2005)
1763 - Paul Moore made curl check for the .curlrc file (_curlrc on windows) on two
1764 more places. First, CURL_HOME is a new environment variable that is used
1765 instead of HOME if it is set, to point out where the default config file
1766 lives. If there's no config file in the dir pointed out by one of the
1767 environment variables, the Windows version will instead check the same
1768 directory the executable curl is located in.
1770 Daniel (26 April 2005)
1771 - Cory Nelson's work on nuking compiler warnings when building on x64 with
1774 Daniel (25 April 2005)
1775 - Fred New reported a bug where we used Basic auth and user name and password
1776 in .netrc, and when following a Location: the subsequent requests didn't
1777 properly use the auth as found in the netrc file. Added test case 257 to
1780 - Based on feedback from Cory Nelson, I added some preprocessor magic in
1781 */setup.h and */config-win32.h to build fine with VS2005 on x64.
1783 Daniel (23 April 2005)
1784 - Alex Suykov made the curl tool now assume that uploads using HTTP:// or
1785 HTTPS:// are the only ones that show output and thus motivates a switched
1786 off progress meter if the output is sent to the terminal. This makes FTP
1787 uploads without '>', -o or -O show the progress meter.
1789 Daniel (22 April 2005)
1790 - Dave Dribin's MSVC makefile fix: set CURL_STATICLIB when it builds static
1793 - Andres Garcia fixed configure to set the proper define when building static
1796 - --retry-delay didn't work.
1798 Daniel (18 April 2005)
1799 - Olivier reported that even though he used CURLOPT_PORT, libcurl clearly
1800 still used the default port. He was right. I fixed the problem and added the
1801 test cases 521, 522 and 523 to verify the fix.
1803 - Toshiyuki Maezawa reported that when doing a POST with a read callback,
1804 libcurl didn't properly send an Expect: 100-continue header. It does now.
1806 - I committed by mig change in the test suite's FTP server that moves out all
1807 socket/TCP code to a separate C program named sockfilt. And added 4 new
1808 test cases for FTP over IPv6.
1810 Daniel (8 April 2005)
1811 - Cory Nelson reported a problem with a HTTP server that responded with a 304
1812 response containing an "illegal" Content-Length: header, which was not
1813 properly ignored by libcurl. Now it is. Test case 249 verifies.
1815 Daniel (7 April 2005)
1816 - Added ability to build and run with GnuTLS as an alternative to OpenSSL for
1817 the secure layer. configure --with-gnutls enables with. Note that the
1818 previous OpenSSL check still has preference and if it first detects OpenSSL,
1819 it will not check for GnuTLS. You may need to explictly diable OpenSSL with
1822 This work has been sponsored by The Written Word.
1824 Daniel (5 April 2005)
1825 - Christophe Legry fixed the post-upload check for FTP to not complain if the
1826 upload was skipped due to a time-condition as set with
1827 CURLOPT_TIMECONDITION. I added test case 247 and 248 to verify.
1829 Version 7.13.2 (5 April 2005)
1831 Daniel (4 April 2005)
1832 - Marcelo Juchem fixed the MSVC makefile for libcurl
1834 - Gisle Vanem fixed a crash in libcurl, that could happen if the easy handle
1835 was killed before the threading resolver (windows only) still hadn't
1838 - Hardeep Singh reported a problem doing HTTP POST with Digest. (It was
1839 actually also affecting NTLM and Negotiate.) It turned out that if the
1840 server responded with 100 Continue before the initial 401 response, libcurl
1841 didn't take care of the response properly. Test case 245 and 246 added to
1844 Daniel (30 March 2005)
1845 - Andres Garcia modified the configure script to check for libgdi32 before
1846 libcrypto, to make the SSL check work fine on msys/mingw.
1848 Daniel (29 March 2005)
1849 - Tom Moers identified a flaw when you sent a POST with Digest authentication,
1850 as in the first request when curl sends a POST with Content-Length: 0, it
1851 still forcibly closed the connection before doing the next step in the auth
1854 - Jesper Jensen found out that FTP-SSL didn't work since my FTP
1855 rewrite. Fixing that was easy, but it also revealed a much worse problem:
1856 the FTP server response reader function didn't properly deal with reading
1857 responses in multiple tiny chunks properly! I modified the FTP server to
1858 allow it to produce such split-up responses to make sure curl deals with
1861 - Based on Augustus Saunders' comments and findings, the HTTP output auth
1862 function was fixed to use the proper proxy authentication when multiple ones
1863 are accepted. test 239 and test 243 were added to repeat the problems and
1866 --proxy-anyauth was added to the curl tool
1868 Daniel (16 March 2005)
1869 - Tru64 and some IRIX boxes seem to not like test 237 as it is. Their
1870 inet_addr() functions seems to use &255 on all numericals in a ipv4 dotted
1871 address which makes a different failure... Now I've modified the ipv4
1872 resolve code to use inet_pton() instead in an attempt to make these systems
1873 better detect this as a bad IP address rather than creating a toally bogus
1874 address that is then passed on and used.
1876 Daniel (15 March 2005)
1877 - Dan Fandrich made the code properly use the uClibc's version of
1878 inet_ntoa_r() when built with it.
1880 - Added test 237 and 238: test EPSV and PASV response handling when they get
1881 well- formated data back but using illegal values. In 237 PASV gets an IP
1882 address that is way bad. In 238 EPSV gets a port that is way out of range.
1884 Daniel (14 March 2005)
1885 - Added a few missing features to the curl-config --features list
1887 - Modified testcurl.pl to now offer
1888 1 - command line options for all info it previously only read from
1889 file: --name, --email, --desc and --configure
1890 2 - --nocvsup makes it not attempt to do cvs update
1891 3 - --crosscompile informs it and makes it not attempt things it can't do
1893 - Fixed numerous win32 compiler warnings.
1895 - Removed the lib/security.h file since it shadowed the mingw/win32 header
1896 with the same name which is needed for SSPI builds. The contents of the
1897 former security.h is now i krb4.h
1899 - configure --enable-sspi now enables SSPI in the build. It only works for
1900 windows builds (including cross-compiles for windows).
1902 Daniel (12 March 2005)
1903 - David Houlder added --form-string that adds that string to a multipart
1904 formpost part, without special characters having special meanings etc like
1907 Daniel (11 March 2005)
1908 - curl_version_info() returns the feature bit CURL_VERSION_SSPI if it was
1909 built with SSPI support.
1911 - Christopher R. Palmer made it possible to build libcurl with the
1912 USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the
1913 native way to do NTLM. SSPI also allows libcurl to pass on the current user
1914 and its password in the request.
1916 Daniel (9 March 2005)
1917 - Dan F improved the SSL lib setup in configure.
1919 - Nodak Sodak reported a crash when using a SOCKS4 proxy.
1921 - Jean-Marc Ranger pointed out an embarassing debug printf() leftover in the
1922 multi interface code.
1924 - Adjusted the man page for the curl_getdate() return value for dates after
1925 year 2038. For 32 bit time_t it returns 0x7fffffff but for 64bit time_t it
1926 returns either the correct value or even -1 on some systems that still seem
1927 to not deal with this properly. Tor Arntsen found a 64bit AIX system for us
1928 that did the latter. Gwenole Beauchesne's Mandrake patch put the lights on
1929 this problem in the first place.
1931 Daniel (8 March 2005)
1932 - Dominick Meglio reported that using CURLOPT_FILETIME when transferring a FTP
1933 file got a Last-Modified: header written to the data stream, corrupting the
1934 actual data. This was because some conditions from the previous FTP code was
1935 not properly brought into the new FTP code. I fixed and I added test case
1936 520 to verify. (This bug was introduced in 7.13.1)
1938 - Dan Fandrich fixed the configure --with-zlib option to always consider the
1939 given path before any standard paths.
1941 Daniel (6 March 2005)
1942 - Randy McMurchy was the first to report that valgrind.pm was missing from the
1943 release archive and thus 'make test' fails.
1945 Daniel (5 March 2005)
1946 - Dan Fandrich added HAVE_FTRUNCATE to several config-*.h files.
1948 - Added test case 235 that makes a resumed upload of a file that isn't present
1949 on the remote side. This then converts the operation to an ordinary STOR
1950 upload. This was requested/pointed out by Ignacio Vazquez-Abrams.
1952 It also proved (and I fixed) a bug in the newly rewritten ftp code (and
1953 present in the 7.13.1 release) when trying to resume an upload and the
1954 servers returns an error to the SIZE command. libcurl then loops and sends
1955 SIZE commands infinitely.
1957 - Dan Fandrich fixed a SSL problem introduced on February 9th that made
1958 libcurl attempt to load the whole random file to seed the PRNG. This is
1959 really bad since this turns out to be using /dev/urandom at times...
1961 Version 7.13.1 (4 March 2005)
1963 Daniel (4 March 2005)
1964 - Dave Dribin made it possible to set CURLOPT_COOKIEFILE to "" to activate
1965 the cookie "engine" without having to provide an empty or non-existing file.
1967 - Rene Rebe fixed a -# crash when more data than expected was retrieved.
1969 Daniel (22 February 2005)
1970 - NTLM and ftp-krb4 buffer overflow fixed, as reported here:
1971 http://www.securityfocus.com/archive/1/391042 and the CAN report here:
1972 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0490
1974 If these security guys were serious, we'd been notified in advance and we
1975 could've saved a few of you a little surprise, but now we weren't.
1977 Daniel (19 February 2005)
1978 - Ralph Mitchell reported a flaw when you used a proxy with auth, and you
1979 requested data from a host and then followed a redirect to another
1980 host. libcurl then didn't use the proxy-auth properly in the second request,
1981 due to the host-only check for original host name wrongly being extended to
1982 the proxy auth as well. Added test case 233 to verify the flaw and that the
1983 fix removed the problem.
1985 Daniel (18 February 2005)
1986 - Mike Dobbs reported a mingw build failure due to the lack of
1987 BUILDING_LIBCURL being defined when libcurl is built. Now this is defined by
1988 configure when mingw is used.
1990 Daniel (17 February 2005)
1991 - David in bug report #1124588 found and fixed a socket leak when libcurl
1992 didn't close the socket properly when returning error due to failing
1995 Daniel (16 February 2005)
1996 - Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"
1997 that picks NTLM. Thanks to David Byron letting me test NTLM against his
1998 servers, I could quickly repeat and fix the problem. It turned out to be:
2000 When libcurl POSTs without knowing/using an authentication and it gets back
2001 a list of types from which it picks NTLM, it needs to either continue
2002 sending its data if it keeps the connection alive, or not send the data but
2003 close the connection. Then do the first step in the NTLM auth. libcurl
2004 didn't send the data nor close the connection but simply read the
2005 response-body and then sent the first negotiation step. Which then failed
2006 miserably of course. The fixed version forces a connection if there is more
2007 than 2000 bytes left to send.
2009 Daniel (14 February 2005)
2010 - The configure script didn't check for ENGINE_load_builtin_engines() so it
2013 Daniel (11 February 2005)
2014 - Removed all uses of strftime() since it uses the localised version of the
2015 week day names and month names and servers don't like that.
2017 Daniel (10 February 2005)
2018 - Now the test script disables valgrind-testing when the test suite runs if
2019 libcurl is built shared. Otherwise valgrind only tests the shell that runs
2020 the wrapper-script named 'curl' that is a front-end to curl in this case.
2021 This should also fix the huge amount of reports of false positives when
2022 valgrind has identified leaks in (ba)sh and not in curl and people report
2023 that as curl bugs. Bug report #1116672 is one example.
2025 Also, the valgrind report parser has been adapted to check that at least one
2026 of the sources in a stack strace is one of (lib)curl's source files or
2027 otherwise it will not consider the problem to concern (lib)curl.
2029 - Marty Kuhrt streamlined the VMS build.
2031 Daniel (9 February 2005)
2032 - David Byron fixed his SSL problems, initially mentioned here:
2033 http://curl.haxx.se/mail/lib-2005-01/0240.html. It turned out we didn't use
2034 SSL_pending() as we should.
2036 - Converted lots of FTP code to a statemachine, so that the multi interface
2037 doesn't block while communicating commands-responses with an FTP server.
2039 I've added a comment like BLOCKING in the code on all spots I could find
2040 where we still have blocking operations. When we change curl_easy_perform()
2041 to use the multi interface, we'll also be able to simplify the code since
2042 there will only be one "internal interface".
2044 While doing this, I've now made CURLE_FTP_ACCESS_DENIED separate from the
2045 new CURLE_LOGIN_DENIED. The first one is now access denied to a function,
2046 like changing directory or retrieving a file, while the second means that we
2049 The CVS tag 'before_ftp_statemachine' was set just before this went in, in
2050 case of future need.
2052 - Gisle made the DICT code send CRLF and not just LF as the spec says so.
2054 Daniel (8 February 2005)
2055 - Gisle fixed problems when libcurl runs out of memory, and worked on making
2056 sure the proper error code is returned for those occations.
2058 Daniel (7 February 2005)
2059 - Maruko pointed out a problem with inflate decompressing exactly 64K
2062 Daniel (5 February 2005)
2063 - Eric Vergnaud found a use of an uninitialised variable in the ftp when doing
2064 PORT on ipv6-enabled hosts.
2066 - David Byron pointed out we could use BUFSIZE to read data (in
2067 lib/transfer.c) instead of using BUFSIZE -1.
2069 Version 7.13.0 (1 February 2005)
2071 Daniel (31 January 2005)
2072 - Added Lars Nilsson's htmltitle.cc example
2074 Daniel (30 January 2005)
2075 - Fixed a memory leak when using the multi interface and the DO operation
2076 failed (as in test case 205).
2078 - Fixed a valgrind warning for file:// operations.
2080 - Fixed a valgrind report in the url globbing code for the curl command line
2083 - Bugfixed the parser that scans the valgrind report outputs (in runtests.pl).
2084 I noticed that it previously didn't detect and report the "Conditional jump
2085 or move depends on uninitialised value(s)" error. When I fixed this, I
2086 caught a few curl bugs with it. And then I had to spend time to make the
2087 test suite IGNORE these errors when OpenSSL is used since it produce massive
2088 amounts of valgrind warnings (but only of the "Conditional..." kind it
2089 seems). So, if a test that requires SSL is run, it ignores the
2090 "Conditional..." errors, and you'll get a "valgrind PARTIAL" output instead
2093 Daniel (29 January 2005)
2094 - Using the multi interface, and doing a requsted a re-used connection that
2095 gets closed just after the request has been sent failed and did not re-issue
2096 a request on a fresh reconnect like the easy interface did. Now it does!
2098 - Define CURL_MULTIEASY when building libcurl (lib/easy.c to be exact), to use
2099 my new curl_easy_perform() that uses the multi interface to run the
2100 request. It is a great testbed for the multi interface and I believe we
2101 shall do it this way for real in the future when we have a successor to
2102 curl_multi_fdset(). I've used this approach to detect and fix several of the
2103 recent multi-interfaces issues.
2105 - Adjusted the KNOWN_BUGS #17 fix a bit more since the FTP code also did some
2108 - multi interface: when a request is denied due to "Maximum redirects
2109 followed" libcurl leaked the last Location: URL.
2111 - Connect failures with the multi interface was often returned as "connect()
2112 timed out" even though the reason was different.
2114 Daniel (28 January 2005)
2115 - KNOWN_BUGS #17 fixed. A DNS cache entry may not remain locked between two
2116 curl_easy_perform() invokes. It was previously unlocked at disconnect, which
2117 could mean that it remained locked between multiple transfers. The DNS cache
2118 may not live as long as the connection cache does, as they are separate.
2120 To deal with the lack of DNS (host address) data availability in re-used
2121 connections, libcurl now keeps a copy of the IP adress as a string, to be
2122 able to show it even on subsequent requests on the same connection.
2124 The problem could be made to appear with this stunt:
2126 1. create a multi handle
2127 2. add an easy handle
2128 3. fetch a URL that is persistent (leaves the connection alive)
2129 4. remove the easy handle from the multi
2130 5. kill the multi handle
2131 6. create a multi handle
2132 7. add the same easy handle to the new multi handle
2133 8. fetch a URL from the same server as before (re-using the connection)
2135 - Stephen More pointed out that CURLOPT_FTPPORT and the -P option didn't work
2136 when built ipv6-enabled. I've now made a fix for it. Writing test cases for
2137 custom port hosts turned too tricky so unfortunately there's none.
2139 Daniel (25 January 2005)
2140 - Ian Ford asked about support for the FTP command ACCT, and I discovered it
2141 is present in RFC959... so now (lib)curl supports it as well. --ftp-account
2142 and CURLOPT_FTP_ACCOUNT set the account string. (The server may ask for an
2143 account string after PASS have been sent away. The client responds
2144 with "ACCT [account string]".) Added test case 228 and 229 to verify the
2145 functionality. Updated the test FTP server to support ACCT somewhat.
2147 - David Shaw contributed a fairly complete and detailed autoconf test you can
2148 use to detect libcurl and setup variables for the protocols the installed
2149 libcurl supports: docs/libcurl/libcurl.m4
2151 Daniel (21 January 2005)
2152 - Major FTP third party transfer overhaul.
2154 These four options are now obsolete: CURLOPT_SOURCE_HOST,
2155 CURLOPT_SOURCE_PATH, CURLOPT_SOURCE_PORT (this option didn't work before)
2156 and CURLOPT_PASV_HOST.
2158 These two options are added: CURLOPT_SOURCE_URL and CURLOPT_SOURCE_QUOTE.
2160 The target-side didn't use the proper path with RETR, and thus this only
2161 worked correctly in the login path (i.e without doing any CWD). The source-
2162 side still uses a wrong path, but the fix for this will need to wait. Verify
2163 the flaw by using a source URL with included %XX-codes.
2165 Made CURLOPT_FTPPORT control weather the target operation should use PORT
2166 (or not). The other side thus uses passive (PASV) mode.
2168 Updated the ftp3rdparty.c example source to use the updated options.
2170 Added support for a second FTP server in the test suite. Named... ftp2.
2171 Added test cases 230, 231 and 232 as a few first basic tests of very simple
2172 3rd party transfers.
2174 Changed the debug output to include 'target' and 'source' when a 3rd party
2175 is being made, to make it clearer what commands/responses came on what
2178 Added three new command line options: --3p-url, --3p-user and --3p-quote.
2180 Documented the command line options and the curl_easy_setopt options related
2181 to third party transfers.
2183 (Temporarily) disabled the ability to re-use an existing connection for the
2184 source connection. This is because it needs to force a new in case the
2185 source and target is the same host, and the host name check is trickier now
2186 when the source is identified with a full URL instead of a plain host name
2189 TODO (short-term) for 3rd party transfers: quote support. The options are
2190 there, we need to add test cases to verify their functionality.
2192 TODO (long-term) for 3rd party transfers: IPv6 support (EPRT and EPSV etc)
2193 and SSL/TSL support.
2195 Daniel (20 January 2005)
2196 - Philippe Hameau found out that -Q "+[command]" didn't work, although some
2197 code was written for it. I fixed and added test case 227 to verify it.
2198 The curl.1 man page didn't mention the '+' so I added it.
2200 Daniel (19 January 2005)
2201 - Stephan Bergmann made libcurl return CURLE_URL_MALFORMAT if an FTP URL
2202 contains %0a or %0d in the user, password or CWD parts. (A future fix would
2203 include doing it for %00 as well - see KNOWN_BUGS for details.) Test case
2204 225 and 226 were added to verify this
2206 - Stephan Bergmann pointed out two flaws in libcurl built with HTTP disabled:
2208 1) the proxy environment variables are still read and used to set HTTP proxy
2210 2) you couldn't disable http proxy with CURLOPT_PROXY (since the option was
2211 disabled). This is important since apps may want to disable HTTP proxy
2212 without actually knowing if libcurl was built to disable HTTP or not.
2214 Based on Stephan's patch, both these issues should now be fixed.
2216 Daniel (18 January 2005)
2217 - Cody Jones' enhanced version of Samuel DÃaz GarcÃa's MSVC makefile patch was
2220 Daniel (16 January 2005)
2221 - Alex aka WindEagle pointed out that when doing "curl -v dictionary.com", curl
2222 assumed this used the DICT protocol. While guessing protocols will remain
2223 fuzzy, I've now made sure that the host names must start with "[protocol]."
2224 for them to be a valid guessable name. I also removed "https" as a prefix
2225 that indicates HTTPS, since we hardly ever see any host names using that.
2227 Daniel (13 January 2005)
2228 - Inspired by Martijn Koster's patch and example source at
2229 http://www.greenhills.co.uk/mak/gentoo/curl-eintr-bug.c, I now made the
2230 select() and poll() calls properly loop if they return -1 and errno is
2231 EINTR. glibc docs for this is found here:
2232 http://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html
2234 This last link says BSD doesn't have this "effect". Will there be a problem
2235 if we do this unconditionally?
2237 Daniel (11 January 2005)
2238 - Dan Torop cleaned up a few no longer used variables from David Phillips'
2239 select() overhaul fix.
2241 - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when
2242 using a custom Host: header and curl fails to send a request on a re-used
2243 persistent connection and thus creates a new connection and resends it. It
2244 then sent two Host: headers. Cyrill's analysis was posted here:
2245 http://curl.haxx.se/mail/archive-2005-01/0022.html
2247 - Bruce Mitchener identified (bug report #1099640) the never-ending SOCKS5
2248 problem with the version byte and the check for bad versions. Bruce has lots
2249 of clues on this, and based on his suggestion I've now removed the check of
2250 that byte since it seems to be able to contain 1 or 5.
2252 Daniel (10 January 2005)
2253 - Pavel Orehov reported memory problems with the multi interface in bug report
2254 #1098843. In short, a shared DNS cache was setup for a multi handle and when
2255 the shared cache was deleted before the individual easy handles, the latter
2256 cleanups caused read/writes to already freed memory.
2258 - Hzhijun reported a memory leak in the SSL certificate code, that leaked the
2259 remote certificate name when it didn't match the used host name.
2261 Gisle (8 January 2005)
2262 - Added Makefile.Watcom files (src/lib). Updated Makefile.dist.
2264 Daniel (7 January 2005)
2265 - Improved the test script's valgrind log parser to actually work! Also added
2266 the ability to disable the log scanner for specific test cases. Test case
2267 509 results in numerous problems and leaks in OpenSSL and has to get it
2270 Daniel (6 January 2005)
2271 - Fixed a single-byte read out of bounds in test case 39 in the curl tool code
2272 (i.e not in the library).
2274 - Bug report #1097019 identified a problem when doing -d "data" with -G and
2275 sending it to two URLs with {}. Added test 199 to verify the fix.
2277 Daniel (4 January 2005)
2278 - Marty Kuhrt adjusted a VMS build script slightly
2280 - Kai Sommerfeld and Gisle Vanem fixed libcurl to build with IPv6 support on
2283 Daniel (2 January 2005)
2284 - Alex Neblett updated the MSVC makefiles slightly.
2285 Daniel (25 December 2004)
2286 - Removed src/config.h.in from CVS, it is now copied from the (generated)
2287 lib/config.h.in instead, as they can very well be the same. This removes a
2288 "manual hassle". You may want to re-run buildconf now.
2290 - Werner Koch filed Debian bug report #286794, mentioning that curl contained
2291 non-free (by Debian's view) source code. This was Angus Mackay's
2292 src/getpass.c source code. I tried to contact him about it to quickly solve
2293 this issue, but his email addresses bounce and I got some time "over" and
2294 reimplemented the functionality once brought by Angus. We no longer use any
2295 of Angus' original code and the new function is much simpler (IMO). Issue
2298 Daniel (24 December 2004)
2299 - David Shaw added --protocols to curl-config, so that it now lists all
2300 protocols libcurl was built to support. --feature no longer lists disabled
2303 Daniel (23 December 2004)
2304 - David Shaw fixed the configure --disable-[protocol] variables so that
2305 curl-config --feature now works correctly!
2307 Daniel (22 December 2004)
2308 - Rune Kleveland fixed a minor memory leak for received cookies with the
2309 (rare) version attribute set.
2311 - Marcin Konicki provided two configure fixes and a source fix to make curl
2312 build out-of-the-box on BeOS.
2314 Daniel (21 December 2004)
2315 - Added test case 217 that verified CURLINFO_HTTP_CONNECTCODE, and I made the
2316 -w option support 'http_connect' to make it easier to verify!
2318 - Fixed lib/select.c include order to build fine on FreeBSD
2320 - Fixed failf()'s reuse of the va_list variable that crashed on FreeBSD.
2321 Pointed out by Peter Pentchev.
2323 Version 7.12.3 (20 December 2004)
2325 Daniel (19 December 2004)
2326 - I investigated our PKCS12 build problem on Solaris 2.7 with OpenSSL 0.9.7e,
2327 and it turned out to be the fault of the zlib 1.1.4 headers doing a typedef
2328 named 'free_func' and the OpenSSL headers have a prototype that uses
2329 'free_func' in one of its arguments. This is why the compile errors out.
2331 In other words, we need to include the openssl/pkcs12.h header before the
2332 zlib.h header and it builds fine. The configure script now checks for this
2333 file and it then gets included early in lib/urldata.h.
2335 Daniel (18 December 2004)
2336 - Samuel Listopad added support for PKCS12 formatted certificates.
2338 - Samuel Listopad fixed -E to support "C:/path" (with forward slash) as well.
2340 Daniel (16 December 2004)
2341 - Gisle found and fixed a problem in the directory re-use for FTP.
2343 I added test case 215 and 216 to better verify the functionality.
2345 - Dinar in bug report #1086121, found a file handle leak when a multipart
2346 formpost (including a file upload part) was aborted before the whole file
2349 Daniel (15 December 2004)
2350 - Tom Lee found out that globbing of strings with backslashes didn't work as
2351 you'd expect. Backslashes are such a central part of windows file names that
2352 forcing backslashes to have to be escaped with backslashes is a bit too
2353 awkward to users. Starting now, you only need to escape globbing characters
2354 such as the five letters: "[]{},". Added test case 214 to verify this.
2356 Daniel (14 December 2004)
2357 - Harshal Pradhan patched a HTTP persistent connection flaw: if the user name
2358 and/or password were modified between two requests on a persistent
2359 connection, the second request were still made with the first setup!
2361 I added test case 519 to verify the fix.
2363 Daniel (13 December 2004)
2364 - Gisle added CURLINFO_SSL_ENGINES to curl_easy_getinfo() to allow an app
2365 to list all available crypto ENGINES.
2367 - Gisle fixed bug report #1083542, which pointed out a problem with resuming
2368 large file (>4GB) file:// transfers on windows.
2370 Daniel (11 December 2004)
2371 - Made the test suite HTTP server (sws) capable of using IPv6, and then
2372 extended the test environment to support that and also added three test
2373 cases (240, 241, 242) that run tests using IPv6. Test 242 uses a URL that
2374 didn't work before the 10 dec fix by Kai Sommerfeld.
2376 - Made a failed file:// resume output an error message
2378 - Corrected the CURLE_BAD_DOWNLOAD_RESUME error message in lib/strerror.c
2382 simplified and consolidated the SSL checks in configure and the usage of the
2383 defines in lib/setup.h
2385 provided a first libcurl.pc.in file for pkg-config (but the result is not
2386 installed anywhere at this point)
2388 extended the cross compile section in the docs/INSTALL file
2390 Daniel (10 December 2004)
2391 - When providing user name in the URL and a IPv6-style IP-address (like in
2392 "ftp://user@[::1]/tmp"), the URL parser didn't get the host extracted
2393 properly. Reported and fixed by Kai Sommerfeld.
2395 Daniel (9 December 2004)
2396 - Ton Voon provided a configure fix that should fix the notorious (mostly
2397 reported on Solaris) problem where the size_t check fails due to the SSL
2398 libs being found in a dir not searched through by the run-time linker.
2399 patch-tracker entry #1081707.
2401 - Bryan Henderson pointed out in bug report #1081788 that the curl-config
2402 --vernum output wasn't zero prefixed properly (as claimed in documentation).
2403 This is fixed in maketgz now.
2405 Daniel (8 December 2004)
2406 - Matt Veenstra updated the mach-O framework files for Mac OS X.
2408 - Rene Bernhardt found and fixed a buffer overrun in the NTLM code, where
2409 libcurl always and unconditionally overwrote a stack-based array with 3 zero
2410 bytes. This is not an exploitable buffer overflow. No need to get alarmed.
2412 Daniel (7 December 2004)
2413 - Fixed so that the final error message is sent to the verbose info "stream"
2414 even if no errorbuffer is set.
2416 Daniel (6 December 2004)
2417 - Dan Fandrich added the --disable-cookies option to configure to build
2418 libcurl without cookie support. This is mainly useful if you want to build a
2419 minimalistic libcurl with no cookies support at all. Like for embedded
2422 - Richard Atterer fixed libcurl's way of dealing with the EPSV
2423 response. Previously, libcurl would re-resolve the host name with the new
2424 port number and attempt to connect to that, while it should use the IP from
2425 the control channel. This bug made it hard to EPSV from an FTP server with
2426 multiple IP addresses!
2428 Daniel (3 December 2004)
2429 - Bug report #1078066: when a chunked transfer was pre-maturely closed exactly
2430 at a chunk boundary it was not considered an error and thus went unnoticed.
2431 Fixed by Maurice Barnum.
2433 Added test case 207 to verify.
2435 Daniel (2 December 2004)
2436 - Fixed the CONNECT loop to default timeout to 3600 seconds.
2438 Added test case 206 that makes CONNECT with Digest.
2440 Fixed a flaw that prepended "(nil)" to the initial CONNECT rqeuest's user-
2443 Daniel (30 November 2004)
2444 - Dan Fandrich's fix for libz 1.1 and "extra field" usage in a gzip stream
2446 - Dan also helped me with input data to create three more test cases for the
2447 --compressed option.
2449 Daniel (29 November 2004)
2450 - I improved the test suite to enable binary contents in the tests (by proving
2451 it base64 encoded), like for testing decompress etc. Added test 220 and 221
2452 for this purpose. Tests can now also depend on libz to run.
2454 - As reported by Reinout van Schouwen in Mandrake's bug tracker bug 12285
2455 (http://qa.mandrakesoft.com/show_bug.cgi?id=12285), when connecting to an
2456 IPv6 host with FTP, --disable-epsv (or --disable-eprt) effectively disables
2457 the ability to transfer a file. Now, when connected to an FTP server with
2458 IPv6, these FTP commands can't be disabled even if asked to with the
2459 available libcurl options.
2461 Daniel (26 November 2004)
2462 - As reported in Mandrake's bug tracker bug 12289
2463 (http://qa.mandrakesoft.com/show_bug.cgi?id=12289), curl would print a
2464 newline to "finish" the progress meter after each redirect and not only
2465 after a completed transfer.
2467 Daniel (25 November 2004)
2470 If EPSV, EPRT or LPRT is tried and doesn't work, it will not be retried on
2471 the same server again even if a following request is made using a persistent
2474 If a second request is made to a server, requesting a file from the same
2475 directory as the previous request operated on, libcurl will no longer make
2476 that long series of CWD commands just to end up on the same spot. Note that
2477 this is only for *exactly* the same dir. There is still room for improvements
2478 to optimize the CWD-sending when the dirs are only slightly different.
2480 Added test 210, 211 and 212 to verify these changes. Had to improve the
2481 test script too and added a new primitive to the test file format.
2483 Daniel (24 November 2004)
2484 - Andrés GarcÃa fixed the configure script to detect select properly when run
2485 with Msys/Mingw on Windows.
2487 Daniel (22 November 2004)
2488 - Made HTTP PUT and POST requests no longer use HEAD when doing multi-pass
2489 auth negotiation (NTLM, Digest and Negotiate), but instead use the request
2490 keyword "properly". Details in lib/README.httpauth. This also introduces
2491 CURLOPT_IOCTLFUNCTION and CURLOPT_IOCTLDATA, to be used by apps that use the
2492 "any" auth alternative as then libcurl may need to send the PUT/POST data
2493 more than once and thus may need to ask the app to "rewind" the read data
2496 See also the new example using this: docs/examples/anyauthput.c
2498 - David Phillips enhanced test 518. I made it depend on a "feature" so that
2499 systems without getrlimit() won't attempt to test 518. configure now checks
2500 for getrlimit() and setrlimit() for this test case.
2502 Daniel (18 November 2004)
2503 - David Phillips fixed libcurl to not crash anymore when more than FD_SETSIZE
2504 file descriptors are in use. Test case 518 added to verify.
2506 Daniel (15 November 2004)
2507 - To test my fix for the CURLINFO_REDIRECT_TIME bug, I added time_redirect and
2508 num_redirects support to the -w writeout option for the command line tool.
2510 - Wojciech Zwiefka found out that CURLINFO_REDIRECT_TIME didn't work as
2513 Daniel (12 November 2004)
2514 - Gisle Vanem modigied the MSVC and Netware makefiles to build without
2517 - Dan Fandrich added the --disable-crypto-auth option to configure to allow
2518 libcurl to build without Digest support. (I figure it should also explicitly
2519 disable Negotiate and NTLM.)
2521 - *** Modified Behaviour Alert ***
2523 Setting CURLOPT_POSTFIELDS to NULL will no longer do a GET.
2525 Setting CURLOPT_POSTFIELDS to "" will send a zero byte POST and setting
2526 CURLOPT_POSTFIELDS to NULL and CURLOPT_POSTFIELDSIZE to zero will also make
2527 a zero byte POST. Added test case 515 to verify this.
2529 Setting CURLOPT_HTTPPOST to NULL makes a zero byte post. Added test case 516
2532 CURLOPT_POSTFIELDSIZE must now be set to -1 to signal "we don't know".
2533 Setting it to zero simply says this is a zero byte POST.
2535 When providing POST data with a read callback, setting the size up front
2536 is now made with CURLOPT_POSTFIELDSIZE and not with CURLOPT_INFILESIZE.
2538 Daniel (11 November 2004)
2539 - Dan Fandrich added --disable-verbose to the configure script to allow builds
2540 without verbose strings in the code, to save some 12KB space. Makes sense
2541 only for systems with very little memory resources.
2543 - Jeff Phillips found out that a date string with a year beyond 2038 could
2544 crash the new date parser on systems with 32bit time_t. We now check for
2545 this case and deal with it.
2547 Daniel (10 November 2004)
2548 - I installed Heimdal on my Debian box (using the debian package) and noticed
2549 that configure --with-gssapi failed to create a nice build. Fixed now.
2551 Daniel (9 November 2004)
2552 - Gisle Vanem marked all external function calls with CURL_EXTERN so that now
2553 the Windows, Netware and other builds no longer need libcurl.def or similar
2556 Daniel (8 November 2004)
2557 - Made the configure script check for tld.h if libidn was detected, since
2558 libidn 0.3.X didn't have such a header and we don't work with anything
2559 before libidn 0.4.1 anyway! Suse 9.1 apparently ships with a 0.3.X version
2560 of libidn which makes the curl 7.12.2 build fail. Jean-Philippe
2561 Barrette-LaPierre helped pointing this out.
2563 - Ian Gulliver reported in debian bug report #278691: if curl is invoked in an
2564 environment where stderr is closed the -v output will still be sent to file
2565 descriptor 2 which then might be the network socket handle! Now we have a
2566 weird hack instead that attempts to make sure that file descriptor 2 is
2567 opened (with a call to pipe()) before libcurl is called to do the transfer.
2568 configure now checks for pipe() and systems without pipe don't get the weird
2571 Daniel (5 November 2004)
2572 - Tim Sneddon made libcurl send no more than 64K in a single first chunk when
2573 doing a huge POST on VMS, as this is a system limitation. Default on general
2576 Daniel (4 November 2004)
2577 - Andres Garcia made it build on mingw againa, my --retry code broke the build.
2579 Daniel (2 November 2004)
2580 - Added --retry-max-time that allows a maximum time that may not have been
2581 reached for a retry to be made. If not set there is no maximum time, only
2582 the amount of retries set with --retry.
2584 - Paul Nolan provided a patch to make libcurl build nicely on Windows CE.
2586 Daniel (1 November 2004)
2587 - When cross-compiling, the configure script no longer attempts to use
2588 pkg-config on the build host in order to detect OpenSSL compiler options.
2590 Daniel (27 October 2004)
2593 An improvement to the gzip handling of libcurl. There were two problems with
2594 the old version: it was possible for a malicious gzip file to cause libcurl
2595 to leak memory, as a buffer was malloced to hold the header and never freed
2596 if the header ended with no file contents. The second problem is that the
2597 64 KiB decompression buffer was allocated on the stack, which caused
2598 unexpectedly high stack usage and overflowed the stack on some systems
2599 (someone complained about that in the mailing list about a year ago).
2601 Both problems are fixed by this patch. The first one is fixed when a recent
2602 (1.2) version of zlib is used, as it takes care of gzip header parsing
2603 itself. A check for the version number is done at run-time and libcurl uses
2604 that feature if it's present. I've created a define OLD_ZLIB_SUPPORT that
2605 can be commented out to save some code space if libcurl is guaranteed to be
2606 using a 1.2 version of zlib.
2608 The second problem is solved by dynamically allocating the memory buffer
2609 instead of storing it on the stack. The allocation/free is done for every
2610 incoming packet, which is suboptimal, but should be dwarfed by the actual
2611 decompression computation.
2613 I've also factored out some common code between deflate and gzip to reduce
2614 the code footprint somewhat. I've tested the gzip code on a few test files
2615 and I tried deflate using the freshmeat.net server, and it all looks OK. I
2616 didn't try running it with valgrind, however.
2618 - Added a --retry option to curl that takes a numerical option for the number
2619 of times the operation should be retried. It is retried if a transient error
2620 is detected or if a timeout occurred. By default, it will first wait one
2621 second between the retries and then double the delay time between each retry
2622 until the delay time is ten minutes which then will be the delay time
2623 between all forthcoming retries. You can set a static delay time with
2624 "--retry-delay [num]" where [num] is the number of seconds to wait between
2627 Daniel (25 October 2004)
2628 - Tomas Pospisek filed bug report #1053287 that proved -C - and --fail on a
2629 file that was already completely downloaded caused an error, while it
2630 doesn't if you don't use --fail! I added test case 194 to verify the fix.
2631 Grrr. CURLOPT_FAILONERROR is now added to the list stuff to remove in
2632 libcurl v8 due to all the kludges needed to support it.
2634 - Mohun Biswas found out that formposting a zero-byte file didn't work very
2637 Daniel (19 October 2004)
2638 - Alexander Krasnostavsky made it possible to make FTP 3rd party transfers
2639 with both source and destination being the same host. It can be useful if
2640 you want to move a file on a server or similar.
2642 - Guillaume Arluison added CURLINFO_NUM_CONNECTS to allow an app to figure
2643 out how many new connects a previous transfer required.
2645 I added %{num_connects} to the curl tool and added test case 192 and 193
2646 to verify the new code.
2648 Daniel (18 October 2004)
2649 - Peter Wullinger pointed out that curl should call setlocale() properly to
2650 initiate the specific language operations, to make the IDN stuff work
2653 Version 7.12.2 (18 October 2004)
2655 Daniel (16 October 2004)
2656 - Alexander Krasnostavsky made the CURLOPT_FTP_CREATE_MISSING_DIRS option work
2657 fine even for third party transfers.
2659 - runekl at opoint.com found out (and provided a fix) that libcurl leaked
2660 memory for cookies with the "max-age" field set.
2662 Gisle (16 October 2004)
2663 - Issue 50 in TODO-RELEASE; Added Traian Nicolescu's patches for threaded
2664 resolver on Windows. Plugged some potential handle and memory leaks.
2666 Daniel (14 October 2004)
2667 - Eric Vergnaud pointed out that libcurl didn't treat ?-letters in the user
2668 name and password fields properly in URLs, like
2669 ftp://us?er:pass?word@site.com/. Added test 191 to verify the fix.
2671 Daniel (11 October 2004)
2672 - libcurl now uses SO_NOSIGPIPE for systems that support it (Mac OS X 10.2 or
2673 later is one) to inhibit the SIGPIPE signal when writing to a socket while
2674 the peer dies. The same effect is provide by the MSG_NOSIGNAL parameter to
2675 send() on other systems. Alan Pinstein verified the fix.
2677 Daniel (10 October 2004)
2678 - Systems with 64bit longs no longer use strtoll() or our strtoll- replacement
2679 to parse 64 bit numbers. strtol() works fine. Added a configure check to
2680 detect if [constant]LL works and if so, use that in the strtoll replacement
2681 code to work around compiler warnings reported by Andy Cedilnik.
2683 Gisle (6 October 2004)
2684 - For USE_LIBIDN builds: Added Top-Level-Domain (TLD) check of host-name
2685 used in fix_hostname(). Checks if characters in 'host->name' (indirectly
2686 via 'ace_hostname') are legal according to the TLD tables in libidn.
2688 Daniel (6 October 2004)
2689 - Chih-Chung Chang reported that if you use CURLOPT_RESUME_FROM and enabled
2690 CURLOPT_FOLLOWLOCATION, libcurl reported error if a redirect happened even
2691 if the new URL would provide the resumed file. Test case 188 added to verify
2692 the fix (together with existing test 99).
2694 - Dan Fandrich fixed a configure flaw for systems that need both nsl and socket
2695 libs to use gethostbyname().
2697 - Removed tabs and trailing whitespace from lots of source files.
2699 Daniel (5 October 2004)
2700 - Made configure --with-libidn=PATH try the given PATH before the default
2701 paths to make it possible to override.
2703 - If idna_strerror() is present in libidn, we can use that instead of our
2704 internal replacement. This function was added by Simon in libidn 0.5.6 and
2705 is detected by configure.
2707 - It seems basename() on IRIX is in the libgen library and since we don't use
2708 that, configure finds libgen.h but not basename and then we get a compiler
2709 error because our basename() replacement doesn't match the proto in
2710 libgen.h. Starting now, we don't include the file if basename wasn't found
2713 Daniel (4 October 2004)
2714 - Chris found a race condition resulting in CURLE_COULDNT_RESOLVE_HOST and
2715 potential crash, in the windows threaded name resolver code.
2717 Daniel (3 October 2004)
2718 - Replaced the use of isspace() in cookie.c with our own version instead since
2719 we have most data as 'char *' and that makes us pass in negative values if
2720 there is 8bit data in the string. Changing to unsigned causes too much
2721 warnings or too many required typecasts to the normal string functions.
2722 Harshal Pradhan identified this problem.
2724 Daniel (2 October 2004)
2725 - Bertrand Demiddelaer found a case where libcurl could read already freed
2726 data when CURLOPT_VERBOSE is used and a (very) persistent connection. It
2727 happened when the dns cache entry for the connection was pruned while the
2728 connection was still alive and then again re-used. We worked together on
2731 - Gisle Vanem provided code that displays an error message when the (libidn
2732 based) IDN conversion fails. This is really due to a missing suitable
2733 function in the libidn API that I hope we can remove once libidn gets a
2736 Daniel (1 October 2004)
2737 - Aleksandar Milivojevic reported a problem in the Redhat bugzilla (see
2738 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134133) and not to
2739 anyone involved in the curl project! This happens when you try to curl a
2740 file from a proftpd site using SSL. It seems proftpd sends a somewhat
2741 unorthodox response code (232 instead of 230). I relaxed the response code
2742 check to deal with this and similar cases.
2744 - Based on Fedor Karpelevitch's formpost path basename patch, file parts in
2745 formposts no longer include the path part. If you _really_ want them, you
2746 must provide your preferred full file name with CURLFORM_FILENAME.
2748 Added detection for libgen.h and basename() to configure. My custom
2749 basename() replacement function for systems without it, might be a bit too
2752 Updated 6 test cases to make them work with the stripped paths.
2754 Daniel (30 September 2004)
2755 - Larry Campbell added CURLINFO_OS_ERRNO to curl_easy_getinfo() that allows an
2756 app to retrieve the errno variable after a (connect) failure. It will make
2757 sense to provide this for more failures in a more generic way, but let's
2760 - Günter Knauf and Casey O'Donnell worked out an extra #if condition for the
2761 curl/multi.h header to work better in winsock-using apps.
2763 - Jean-Philippe Barrette-LaPierre made buildconf run better on Mac OS X by
2764 properly using glibtoolize instead of plain libtoolize. (This is made if
2765 glibtool was found and used instead of plain libtool.)
2767 Daniel (29 September 2004)
2768 - Bertrand Demiddelaer fixed curl_easy_reset() so that it doesn't mistakingly
2769 enable the progress meter.
2771 Daniel (28 September 2004)
2772 - "Mekonikum" found out that if you built curl without SSL support, although
2773 your current SSL installation supports Engine, the compile fails.
2775 Daniel (27 September 2004)
2776 - When --with-ssl=PATH is used to the configure script, it no longer uses
2777 pkg-config to figure out extra details. That is now only done if no PATH is
2778 included or if SSL is checked for by default without the --with-ssl option.
2780 Daniel (25 September 2004)
2781 - Peter Sylvester pointed out that CURLOPT_SSLENGINE couldn't even be set to
2782 NULL when no engine was supported. It can now.
2784 Daniel (22 September 2004)
2785 - Dan Fandrich fixed three test cases to no longer use "localhost" but instead
2786 use "127.0.0.1" to avoid requiring that localhost resolves nicely.
2788 - Jean-Claude Chauve fixed an LDAP crash when more than one record was
2791 Daniel (19 September 2004)
2792 - Andreas Rieke pointed out that when attempting to connect to a host without
2793 a service on the specified port, curl_easy_perform() didn't properly provide
2794 an error message in the CURLOPT_ERRORBUFFER buffer.
2796 Daniel (16 September 2004)
2797 - Daniel at touchtunes uses the FTP+SSL server "BSDFTPD-SSL from
2798 http://bsdftpd-ssl.sc.ru/" which accordingly doesn't properly work with curl
2799 when "AUTH SSL" is issued (although the server responds fine and everything)
2800 but requires that curl issues "AUTH TLS" instead. See
2801 http://curl.haxx.se/feedback/display.cgi?id=10951944937603&support=yes
2803 Introducing CURLOPT_FTPSSLAUTH that allows the application to select which
2804 of the AUTH strings to attempt first.
2806 - Anonymous filed bug report #1029478 which identified a bug when you 1) used
2807 a URL without properly seperating the host name and the parameters with a
2808 slash. 2) the URL had parameters to the right of a ? that contains a slash
2809 3) curl was told to follow Location:s 4) the request got a response that
2810 contained a Location: to redirect to "/dir". curl then appended the new path
2811 on the wrong position of the original URL.
2813 Test case 187 was added to verify that this was fixed properly.
2815 Daniel (11 September 2004)
2816 - Added parsedate.c that contains a rewrite of the date parser currently
2817 provided by getdate.y. The new one is MUCH smaller and will allow us to run
2818 away from the yacc/bison jungle. It is also slightly lacking in features
2819 compared to the old one, but it supports parsing of all date formats HTTP
2820 involves (and a fair bunch of others).
2822 Daniel (10 September 2004)
2823 - As found out by Jonas Forsman, curl didn't allow -F to set Content-Type on
2824 text-parts. Starting now, we can do -F "name=daniel;type=text/extra". Added
2825 test case 186 to verify.
2827 - Bug report #1025986. When following a Location: with a custom Host: header
2828 replacement, curl only replaced the Host: header on the initial request
2829 and didn't replace it on the following ones. This resulted in requests with
2832 Now, curl checks if the location is on the same host as the initial request
2833 and then continues to replace the Host: header. And when it moves to another
2834 host, it doesn't replace the Host: header but it also doesn't make the
2835 second Host: header get used in the request.
2837 This change is verified by the two new test cases 184 and 185.
2839 Daniel (8 September 2004)
2840 - Modified the test suite to be able to use and run with customized port
2841 numbers. This was always intended but never before possible. Now a simple
2842 change in the runtests.pl script can make all tests use different ports.
2843 The default ports in use from now on are 8990 to 8993.
2845 Daniel (2 September 2004)
2846 - Minor modification of an SSL-related error message.
2848 Daniel (31 August 2004)
2849 - David Tarendash found out that curl_multi_add_handle() returned
2850 CURLM_CALL_MULTI_PERFORM instead of CURLM_OK.
2852 Daniel (30 August 2004)
2853 - Make "Proxy-Connection: close" close the current proxy connection, as Roman
2856 Daniel (24 August 2004)
2857 - Fixed a getdate problem by post-replacing the getdate.c file after the
2858 bison/yacc process to add the fix Harshal Pradhan suggested. The problem
2859 caused a crash on Windows when parsing some dates.
2861 Daniel (23 August 2004)
2862 - Roman Koifman pointed out that libcurl send Expect: 100-continue on POSTs
2863 even when told to use HTTP 1.0, which is not correct. Test case 180 and
2866 - Added test case 182 to verify that zero byte transfers call the callback
2869 Daniel (20 August 2004)
2870 - Alexander Krasnostavsky made the write callback get called even when a zero
2871 byte file is downloaded.
2873 Daniel (18 August 2004)
2874 - Ling Thio pointed out that when libcurl is built ipv6-enabled, it still did
2875 reverse DNS lookups when fed with a numerical IP-address (like
2876 http://127.0.0.1/), although it doesn't when built ipv6-disabled. libcurl
2877 should never do reverse lookups.
2879 Daniel (17 August 2004)
2880 - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
2881 empty file, libcurl would return with the file still open.
2883 - Alexander Krasnostavsky pointed out that the configure script needs to define
2884 _THREAD_SAFE for AIX systems to make libcurl built really thread-safe.
2886 Also added a check for the xlc compiler on AIX, and if that is detect we use
2887 the -qthreaded compiler option
2889 Daniel (16 August 2004)
2890 - libcurl now allows a custom "Accept-Encoding:" header override the
2891 internally set one that gets set with CURLOPT_ENCODING. Pointed out by Alex.
2893 - Roland Krikava found and fixed a cookie problem when using a proxy (the
2894 path matching was wrong). I added test case 179 to verify that we now do
2897 Daniel (15 August 2004)
2898 - Casey O'Donnell fixed some MSVC makefile targets to link properly.
2900 Daniel (11 August 2004)
2901 - configure now defines _XOPEN_SOURCE to 500 on systems that need it to build
2902 warning-free (the only known one so far is non-gcc builds on 64bit SGI
2903 IRIX). (Reverted this change later as it caused compiler errors.)
2905 - the FTP code now includes the server response in the error message when the
2906 server gives back a 530 after the password is provided, as it isn't
2907 necessary because of a bad user name or password.
2909 Version 7.12.1 (10 August 2004)
2911 Daniel (10 August 2004)
2912 - In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input is
2913 already UTF-8 encoded. This made the certificate verification fail if the
2914 remote server used a certificate with the name UTF-8 encoded.
2916 Work-around brought by Alexis S. L. Carvalho.
2918 Daniel (9 August 2004)
2919 - I fixed the configure script for krb4 to use -lcom_err as well, as I started
2920 to get link problems with it unless I did that on my Solaris 2.7 box. I
2921 don't understand why I started to get problems with this now!
2923 Daniel (5 August 2004)
2924 - Enrico Scholz fixed the HTTP-Negotiate service name to be uppercase as
2925 reported in bug report #1004105
2927 Daniel (4 August 2004)
2928 - Gisle Vanem provided a fix for the multi interface and connecting to a host
2929 using multiple IP (bad) addresses.
2931 - Dylan Salisbury made libcurl no longer accept cookies set to a TLD only (it
2932 previously allowed that on the seven three-letter domains).
2934 Daniel (31 July 2004)
2935 - Joel Chen reported that the digest code assumed quotes around the contents a
2938 Daniel (28 July 2004)
2939 - Bertrand Demiddelaer fixed the host name to get setup properly even when a
2940 connection is re-used, when a proxy is in use. Previously the wrong Host:
2941 header could get sent when re-using a proxy connection to a different target
2944 - Fixed Brian Akins' reported problems with duplicate Host: headers on re-used
2945 connections. If you attempted to replace the Host: header in the second
2946 request, you got two such headers!
2948 - src/Makefile.am now includes the Makefile.inc file to get info about files
2950 Daniel (26 July 2004)
2951 - Made "curl [URL] -o name#2" work as expected. If there's no globbing for the
2952 #-number, it will simply be used as #2 in the file name.
2954 - Bertrand Demiddelaer fixed testing with valgrind 2.1.x and added two missing
2955 newlines in the cookie informationals.
2957 Daniel (24 July 2004)
2958 - I fixed the autobuilds with ares, since they now need to have buildconf run
2959 in the ares dir before the configure script is run.
2961 - Added Casey O'Donnell's curl_easy_reset() function. It has a proto in
2962 curl/curl.h but we have no man page yet.
2964 Daniel (20 July 2004)
2965 - Added buildconf and buildconf.bat to the release archives, since they are
2966 handy for rebuilding curl when using a daily snapshot (and not a pure CVS
2969 Daniel (16 July 2004)
2970 - As suggested by Toby Peterson, libcurl now ignores Content-Length data if the
2971 given size is a negative number. Test case 178 verifies this.
2973 Daniel (14 July 2004)
2974 - Günter Knauf has made the Netware builds do without the config-netware.h
2975 files, so they are now removed from the dist packages.
2977 - Günter Knauf made curl and libcurl build with Borland again.
2979 - Andres Garcia fixed the common test 505 failures on windows.
2981 Daniel (6 July 2004)
2982 - Andrés GarcÃa found out why the windows tests failed on file:// "uploads".
2984 Daniel (2 July 2004)
2985 - Andrés GarcÃa reported a curl_share_cleanup() crash that occurs when no
2986 lock/unlock callbacks have been set and the share is cleaned up.
2988 Daniel (1 July 2004)
2989 - When using curl --trace or --trace-ascii, no trace messages that were sent
2990 by curl_easy_cleanup() were included in the trace file. This made the
2991 message "Closing connection #0" never appear in trace dumps.
2993 Daniel (30 June 2004)
2994 - Niels van Tongeren found that setting CURLOPT_NOBODY to TRUE doesn't disable
2995 a previously set POST request, making a very odd request get sent (unless
2996 you disabled the POST) a HEAD request with a POST request-body. I've now
2997 made CURLOPT_NOBODY enforce a proper HEAD. Added test case 514 for this.
2999 Daniel (29 June 2004)
3000 - Günter Knauf made the testcurl.pl script capable of using a custom setup
3001 file to easier run multiple autobuilds on the same source tree.
3003 - Gisle fixed the djgpp build and fixed a memory problem in some of the
3004 reorged name resolved code.
3006 - Fixed code to allow connects done using the multi interface to attempt the
3007 next IP when connecting to a host that resolves to multiple IPs and a
3008 connect attempt fails.
3010 Daniel (27 June 2004)
3011 - Based on Rob Stanzel's bug report #979480, I wrote a configure check that
3012 checks if poll() can be used to wait on NULL as otherwise select() should be
3013 used to do it. The select() usage was also fixed according to his report.
3015 Mac OS X 10.3 says "poll() functionality for Mac OS X is implemented via an
3016 emulation layer on top of select(), not in the kernel directly. It is
3017 recommended that programs running under OS X 10.3 prefer select() over
3018 poll(). Configure scripts should look for the _POLL_EMUL_H_ define (instead
3019 of _POLL_H_ or _SYS_POLL_H_) and avoid implementations where poll is not
3020 implemented in the kernel."
3022 Yes, we can probably use select() on most platforms but today I prefered to
3023 leave the code unaltered.
3025 Daniel (24 June 2004)
3026 - The standard curl_version() string now only includes version info about
3027 involved libraries and not about particular features. Thus it will no longer
3028 include info about ipv6 nor GSS. That info is of course still available in
3029 the feature bitmask curl_version_info() offers.
3031 - Replaced all occurances of sprintf() with snprintf(). This is mostly because
3032 it is "A Good Thing" rather than actually fixing any known problem. This
3033 will help preventing future possible mistakes to cause buffer overflows.
3035 - Major reorganization in the host resolve code (again). This time, I've
3036 modified the code to now always use a linked list of Curl_addrinfo structs
3037 to return resolved info in, no matter what resolver method or support that
3038 is available on the platform. It makes it a lot easier to write code that
3039 uses or depends on resolved data.
3041 Internally, this means amongst other things that we can stop doing the weird
3042 "increase buffer size until it works" trick when resolving hosts on
3043 ipv4-only with gethostbyname_r(), we support socks even on libcurls built
3044 with ipv6 enabled (but only to socks servers that resolve to an ipv4
3045 address) and we no longer deep-copy or relocate hostent structs (we create
3046 Curl_addrinfo chains instead).
3048 The new "hostent to Curl_addrinfo" converter function is named Curl_he2ai()
3049 and is slightly naive and simple, yet I believe it is functional enough to
3052 Daniel (22 June 2004)
3053 - David Cohen pointed out that RFC2109 says clients should allow cookies to
3054 contain least 4096 bytes while libcurl only allowed 2047. I raised the limit
3055 to 4999 now and made the used buffer get malloc()ed instead of simply
3056 allocated on stack as before. Extended test case 46 to include a cookie with
3057 very huge content to verify the fix.
3059 - Günter Knauf fixed getdate.y to remove a few warnings. I removed the
3060 ifdef'ed test we never ever use anyway.
3062 - Gisle Vanem fixed the certificate wildcard checks to support a '*'-letter
3063 anywhere in the wildcard string, support multiple '*'-letters in the
3064 wildcard and to allow the '*'-letter to match a string that includes a dot.
3066 Daniel (21 June 2004)
3067 - testcurl.sh is now removed completely, tests/testcurl.pl is the script to
3068 use when autobuilding curl!
3070 - Kjetil Jacobsen brought my attention to the fact that you cannot properly
3071 abort an upload with the readfunction callback, since returning 0 or -1 only
3072 stops the upload and libcurl will continue waiting for downloaded data and
3073 the server often waits for the rest of the upload data to arrive.
3075 Thus, I've now added the ability for read callbacks to return
3076 CURL_READFUNC_ABORT to abort an upload from a read callback. This will stop
3077 the transfer immediately with a CURLE_ABORTED_BY_CALLBACK return code.
3079 Test case 513 was added to verify that it works. I had to improve the test
3080 HTTP server too to dump the request to a file even when the client
3081 disconnects prematurely.
3083 Daniel (19 June 2004)
3084 - Luca Alteas provided a test case with a failing curl operation: when we POST
3085 to a site with --digest (or similar) set, and the server responded with a 302
3086 Location: to the "authprobe" request, it was not treated correctly. We still
3087 will behave badly if FOLLOWLOCATION is enabled for this case, but I'm not
3088 in the mood to dive into this right now and will leave it as-is for now.
3089 Verified my fix with test case 177.
3091 Daniel (18 June 2004)
3092 - Gisle Vanem's patch that provides more details from the SSL layers (if you
3093 use an OpenSSL version that supports it). It also introduces two new types
3094 of data that can be sent to the debug callback: CURLINFO_SSL_DATA_IN and
3095 CURLINFO_SSL_DATA_OUT.
3097 - With David Byron's test server I could repeat his problem and make sure that
3098 POSTing over HTTPS:// with NTLM works fine now. There was a general problem
3099 with multi-pass authentication with non-GET operations with CONNECT.
3101 Daniel (16 June 2004)
3102 - Modified to keep the upload byte counter in an curl_off_t, not an int as
3103 before. 32bits is not enough. This is most likely the bug Jean-Louis Lemaire
3104 reported that makes 2GB FTP uploads to report error ("unaligned file sizes")
3107 Daniel (15 June 2004)
3108 - Luca Alteas reported a problem that I fixed: if you did a POST with
3109 CURLAUTH_DIGEST set but the server didn't require any authentication,
3110 libcurl would repeatedly send HEAD lots of times until it gives up. This was
3111 actually the case for all multi-pass authentications. Added test case 174,
3112 175 and 176 to verify this.
3114 Daniel (14 June 2004)
3115 - Multipart formposts uploading files no longer inserts the files themselves
3116 into the huge prebuilt chunk. This enables libcurl to formpost files that is
3117 larger than the amount of system memory. When the file given is passed on
3118 stdin, libcurl still uses the old method of reading the full fill before the
3119 upload takes place. This approach was selected in order to not alter the
3120 behavior for existing applications, as when using stdin libcurl can't know
3121 the size of the upload and chunked transfer-encoding can only be used on
3124 Daniel (13 June 2004)
3125 - Gisle found out that we did wildcard cert name checks wrong, so that parts
3126 of the check wrongly was case sensitive.
3128 Daniel (11 June 2004)
3129 - Tim Sneddon brought a minor VMS fix to make curl build properly on his VMS
3130 machine. He also had some interesting libcurl patches... they might be able
3131 to do in a slightly nicer way. Discussions are in progress.
3133 Daniel (10 June 2004)
3134 - Gisle Vanem brought code cleanupsm better verbose output and better connect
3135 timeout handling when attempting to connect to a host that resolves to
3136 multiple IP addresses.
3138 - Steven Bazyl and Seshubabu Pasam pointed out a bug on win32 when freeing the
3139 path after a file:// transfer.
3141 Daniel (9 June 2004)
3142 - Alexander Krasnostavsky made 'configure --disable-http' work to build libcurl
3143 without HTTP support. I added a new return code for curl_formadd() in case
3144 libcurl is built with HTTP disable: CURL_FORMADD_DISABLED.
3146 - Alexander Krasnostavsky pointed out a missing file in the generated
3147 curllib.dsp file, and now people building with this should get a libcurl.lib
3148 file generated as it used to do before we generated this file.
3150 Daniel (8 June 2004)
3151 - Marty Kuhrt fixed a minor build problem for VMS.
3153 Daniel (7 June 2004)
3154 - Reverted the configure check from the 4th since it obviously didn't work.
3155 Remade it in a different manner that hopefully works better.
3157 Daniel (4 June 2004)
3158 - Günter Knauf brought patches to make curl build fine on NetWare again.
3160 - Made the configure checks for strerror_r() not exit the configure script
3161 when built for cross-compiling.
3163 Daniel (3 June 2004)
3164 - Chris Gaukroger pointed out that 'make test' attempts to run the tests even
3165 if curl is built cross-compiled. I've now made it output a short message
3166 instead, saying it isn't possible to do.
3168 - Alexander Krasnostavsky brought FTP 3rd party transfer support to libcurl.
3169 You can now use libcurl to transfer files between two remote hosts using
3170 FTP. There are a bunch of new options to control this with:
3172 CURLOPT_SOURCE_USERPWD
3176 CURLOPT_SOURCE_PREQUOTE
3177 CURLOPT_SOURCE_POSTQUOTE
3179 (They still remain to be documented properly in the curl_easy_setopt man
3182 When using this, the ordinary CURLOPT_URL specifies the target URL, and you
3183 specify the source data with these additional options. ftp3rdparty.c is a
3184 new example source code showing how to use this.
3186 - Vincent Bronner fixed the HTTP Digest code to use the proxy user name and
3187 password when doing proxy authentication, it previously always used the host
3188 user name and password!
3190 Daniel (2 June 2004)
3191 - CURLOPT_UPLOAD and CURLOPT_PUT now do the exact same thing internally, which
3192 fixes some old confusions on when which of these should be used and what the
3195 - Applied Gisle's fixes to make curl build fine with lcc-win32
3197 Version 7.12.0 (2 June 2004)
3199 Daniel (1 June 2004)
3200 - I clarified the --create-dirs option somewhat in the curl man page.
3202 - Renaud Duhaut corrected the curl_unescape man page.
3204 - David Byron modified one of Massimiliano Ziccardi's recent MSVC makefile
3205 changes to now again use the mm lib by default.
3207 Daniel (26 May 2004)
3208 - Mohun Biswas added release-zlib and debug-zlib targets to the MSVC libcurl
3211 - David Byron reported a problem with proxy authentication when doing CONNECT,
3212 like when accessing HTTPS sites wiht a proxy. This probably broke when I
3213 rewrote the auth stuff recently.
3215 - I added fileupload.c in the examples directory, showing how an upload to a
3216 file:// URL is made.
3218 Daniel (25 May 2004)
3219 - Massimiliano Ziccardi updated the MSVC makefiles.
3221 Daniel (24 May 2004)
3222 - libcurl now supports "uploading" to file:// URLs. Test 204 and 205 were
3225 - Simon Josefsson added a idn_free() function in libidn 0.4.5 as a reaction to
3226 Gisle's previous mail. We now use this function, and thus we require libidn
3227 0.4.5 or later. No earlier version will do.
3229 - Robert D. Young reported that CURLOPT_COOKIEFILE and CURLOPT_COOKIE could
3230 not be used both in one request. Fixed it and added test case 172 to verify.
3232 Daniel (21 May 2004)
3233 - While talking to host a.b.c, libcurl did wrongly not accept cookies that
3234 were set to the domain .a.b.c (that is with a dot prefix). This is now fixed
3235 and test case 171 verifies it.
3237 Daniel (20 May 2004)
3238 - Jesse Noller reported that the upload speed info reported by libcurl was
3239 wrong. The same was true for the download speed. Fixed now.
3241 Daniel (19 May 2004)
3242 - David Byron added test case 170 - this used to crash the previous version of
3245 Daniel (17 May 2004)
3246 - Peter Sylvester's patch that addresses two flaws in the peer certificate
3248 o when multiple common names are used (as in the curl tests), the last name
3249 needs to be selected.
3250 o allow comparing with encoded values, at least with BMP and ISO latin1
3253 - All 191 test cases run through the torture test OK! 'make test-torture' is
3254 now available in the root makefile (on configure-based environments).
3256 Daniel (14 May 2004)
3257 - With a slightly modified ftpserver.pl I've now run almost all tests through
3258 with runtests.pl -t. This is goodness!
3260 - Since I have been unable to contact the CVS admins for several months, I've
3261 decided that the current CVS hosting was not good enough. I've now moved the
3262 CVS repo once again, see README for updated cvs checkout instructions.
3264 Daniel (13 May 2004)
3265 - runtests.pl -t now runs fine all the way to test 100. I believe test case
3266 100 fails because of an FTP server problem.
3268 Daniel (12 May 2004)
3269 - General cleanups all over to make libcurl survive and do well when a memory
3270 function returns NULL. runtests.pl -t now works fine for the first 26 test
3273 Daniel (11 May 2004)
3274 - Seshubabu Pasam provided a patch that introduces curl_global_init_mem() -
3275 like normal curl_global_init() but allows the app to replace all memory
3276 functions with its own set. I modified it slightly.
3278 - Based on Luca Alteas' comments, I modified the curllib.dsp generation code.
3280 Daniel (10 May 2004)
3281 - Gisle mailed Simon Josefsson (of libidn fame) about the benefits of a
3282 separate free()-function by that lib to make sure the memory is freed by the
3283 same memory subsystem that allocated it. He responded positively and this
3284 will likely cause us to require a newer version of libidn as soon as Simon
3285 releases one with such a libidn_free() function.
3287 - James Bursa made runtests.pl's -t option work for any given test case, and I
3288 edited to allow -g too. Not even test case 1 worked...
3290 - Luca Altea made the nc= field not use quotes in outgoing HTTP Digest headers.
3292 - Andrés GarcÃa fixed a problem in the test script that made it fail to
3293 recognize our own running HTTP server.
3296 - James Bursa fixed the memanalyze.pl script to conder malloc(0) areas OK to
3297 free() and he made two failed-resolve error messages use the new display-
3298 name instead of the internally-used name.
3300 - Gisle Vanem tried curl with
3301 www.etdomenenavnkanmaksimaltinneholdesekstitrebokstaversliksomdette.com
3302 which caused problems, and I fixed the single zero byte buffer overwrite
3303 that occurred (due to a stupid protocol buffer size and parser).
3305 - Made the lib/curllib.dsp file get generated automaticly when a distribution
3306 package is made, with the msvcproj.* files as templates and all
3307 win32-sources added. I think this can be made to work better than the always
3308 lagging-behind previous approach. I'm not sure this builds a working project
3309 file right now though!
3312 - Michael Benedict brought a fix that fills in the errorbuffer properly when
3313 ares fails to resolve a name for a case not previously dealt with like this.
3316 - Joe Halpin fixed the annoying typecast warning in lib/ldap.c
3318 - Gisle Vanem fixes:
3319 o memdebug to not access NULL on several places
3320 o libcurl.def; curl_formparse is gone.
3321 o progress.c; fixed the percent values being trunced to 0.
3322 o if2ip.*; constified the 'interface' argument.
3324 - Tor Arntsen reported that many of his autobuilds froze and I found and fixed
3325 a problem introduced with the HTTP auth overhaul that could lead to a
3326 never-ending internal request-loop due to un-initialized variables!
3328 - Removed several compiler warnings on various compilers/platforms.
3331 - curl_formparse() has been removed from the library. It has been marked and
3332 mentioned as deprecated for several years.
3335 - Rewritten HTTP authentication code. The previous code could not properly
3336 deal with the added test cases 167, 168 and 169. I've now rewritten the code
3337 to better separate host and proxy authentication and not re-use the same
3338 variables as much as before as it proved non working in the more involved
3339 cases. All the current tests run OK now, and so do the new ones. The curl
3340 tool got a new option named --proxy-digest to enable HTTP Digest
3341 authentication with the proxy. I also made the library support it.
3343 - Gisle Vanem made the LDAP code work with wldap32.dll as supplied with
3344 Win-98/ME/2000/XP, so no extra .dlls are required when curl/libcurl is used
3345 on these Windows versions.
3347 Daniel (30 April 2004)
3348 - runtests.pl now scans the valgrind log for valgrind-detected memory leaks
3349 after each test case if valgrind was found and used.
3351 - I modified the app-code in curl to include the new lib/curlx.h and only
3352 access those functions using the curlx_-prefix in preparation for the future
3353 removal of several curl_-functions from the public libcurl API.
3355 - Introduced lib/curlx.h as a single header to provide the curlx_-functions
3358 - Added notices in the man pages for curl_getenv, curl_mprintf, curl_strequal
3359 and curl_strnequal that they are subject for removal in a future release.
3360 STOP USING THESE FUNCTIONS.
3362 - Mihai Ionescu noticed he couldn't do formposts with whitespace in the file
3363 names and yes, I broke that on April 23. Sigh. I fixed it now and added
3364 test case 166 to verify it.
3366 - Luca Altea pointed out a mistake left from the Digest patch of yesterday.
3368 Daniel (29 April 2004)
3369 - Made IDN domains work when sending requsts over HTTP proxy as well. Added
3370 test case 165 to verify the functionality.
3372 - Fixed a bug in the new internal host name setup when re-using connections.
3374 - James Bursa found out that curl_easy_duphandle() with ares-built libcurl
3375 created a bad handle that would crash in the first name resolve attempt. This
3376 is now fixed and test case 512 was added to verify it.
3378 - Luca Altea provided a major HTTP Digest code fix and cleanup. We now follow
3379 the Digest RFC a lot better.
3381 - Gisle Vanem made the SSL code use ERR_error_string_n() where applicable.
3383 Daniel (27 April 2004)
3384 - I remodeled Gisle's IDN code slightly and now we convert both the host name
3385 and proxy name to the ACE encoded version to use internally for resolves and
3386 cookies etc. They are now using one 'struct hostname' each that keep both
3387 the original name and the possibly encoded name. IDN resolves work for me
3388 now using ipv6, ipv4 and ares resolving. Even cookies on IDN sites seem to
3389 do right. I got some failures at first when CHARSET wasn't set at all which
3390 confused libidn completely and it decided by encoding of choice was
3393 - made 'configure --without-libidn' work
3395 Daniel (25 April 2004)
3396 - Fixed the src/hugehelp.c file to include "setup.h" instead of "config.h" to
3397 make the problems with USE_MANUAL on windows go away.
3399 - configure --without-ssl could still wrongly include some OpenSSL info in the
3400 Makefiles if pkg-config had info about OpenSSL. Bug #941762 reported by
3403 - Since we can now build and use quite a large set of 3rd party libraries, I
3404 decided I would make configure produce a summary at the end showing what
3405 libraries it uses and if not, what option to use to make it use that. I also
3406 added some other random info that is nice in a "configure summary" output.
3408 - Applied TommyTam's patch that now make curl work with telnet and stdin
3409 properly on Windows.
3411 - The changes for today below were made by me and Gisle Vanem.
3413 The file previously known as hostip.c has now undergone a huge cleanup and
3419 The main COMPILE-TIME DEFINES to keep in mind when reading the host*.c
3420 source file are these:
3422 CURLRES_IPV6 - this host has getaddrinfo() and family, and thus we use
3423 that. The host may not be able to resolve IPv6, but we don't really have to
3424 take that into account. Hosts that aren't IPv6-enabled have CURLRES_IPV4
3427 CURLRES_ARES - is defined if libcurl is built to use c-ares for asynchronous
3428 name resolves. It cannot have ENABLE_IPV6 defined at the same time, as
3429 c-ares has no ipv6 support. This can be Windows or *nix.
3431 CURLRES_THREADED - is defined if libcurl is built to run under (native)
3432 Windows, and then the name resolve will be done in a new thread, and the
3433 supported asynch API will be the same as for ares-builds.
3435 If any of the two previous are defined, CURLRES_ASYNCH is defined too. If
3436 libcurl is not built to use an asynchronous resolver, CURLRES_SYNCH is
3439 The host*.c sources files are split up like this:
3441 hostip.c - method-independent resolver functions and utility functions
3442 hostasyn.c - functions for asynchronous name resolves
3443 hostsyn.c - functions for synchronous name resolves
3444 hostares.c - functions for ares-using name resolves
3445 hostthre.c - functions for threaded name resolves
3446 hostip4.c - ipv4-specific functions
3447 hostip6.c - ipv6-specific functions
3449 The hostip.h is the single united header file for all this. It defines the
3450 CURLRES_* defines based on the config*.h and setup.h defines.
3452 - Added function header comments to many functions in an attempt to better
3453 explain the purpose of them all.
3455 - configure --with-libidn is now supported. It makes the configure script
3456 check for libidn libs and include files in the prefix path given. If you
3457 say --with-libidn=/usr/local, it will check for the lib in /usr/local/lib
3458 and the includes in /usr/local/include etc.
3460 - curl_version_info() now returns a struct aged CURLVERSION_THIRD including
3461 libidn version info. The string curl_version() returns also includes libidn
3462 version info, if available.
3464 Version 7.11.2 (26 April 2004)
3466 Daniel (25 April 2004)
3467 - Erwin Authried pointed out that configure --disable-manual didn't do right
3468 if you already had a src/hugehelp.c source file present (which most people
3469 do I guess). It now uses the USE_MANUAL define properly.
3471 Daniel (23 April 2004)
3472 - Gisle Vanem found and fixed a memory leak when doing (failing) Windows
3473 threaded name resolves.
3475 - I also added test case 163 just to make sure -F "var=<file" works fine and
3476 can pass on characters such as newlines, carriage-return and tabs.
3478 - When we added test case 162 without adding the necessary requirement field
3479 in the test meta data we could see that curl didn't complain if you used
3480 --proxy-ntlm even if the underlying libcurl it uses has no NTLM support! I
3481 now made it check this first, and it now exists with a "the installed
3482 libcurl version doesn't support this" message if it happens again.
3484 Daniel (22 April 2004)
3485 - David Byron found and fixed a small bug with the --fail and authentication
3486 stuff added a few weeks ago. Turns out that if you specify --proxy-ntlm and
3487 communicate with a proxy that requires basic authentication, the proxy
3488 properly returns a 407, but the failure detection code doesn't realize it
3489 should give up, so curl returns with exit code 0. Test case 162 added to
3490 verify the functionality.
3492 - allow newlines in the contents when doing -F "var=[contents]"
3493 Robert Marlow reported.
3495 - If a transfer is found out to be only partial, libcurl will now treat that
3496 as a problem serious enough to skip the final QUIT command before closing
3497 the control connection. To avoid the risk that it will "hang" waiting for
3498 the QUIT response. Added test case 161 to verify this.
3500 Daniel (21 April 2004)
3501 - Modified the heuristics for dealing with the test 160 scenario. When a
3502 connection is re-used and nothing at all is received from it (because the
3503 server closes the connection), we will now retry the request on a fresh new
3504 connection. The previous ECONNRESET stuff from January 30 was removed again
3505 as it didn't detect the situation good enough.
3507 Daniel (20 April 2004)
3508 - Added test case 160 to verify that curl works correctly when it gets a
3509 connection reset when trying to re-use a connection. It should then simply
3510 create a new connection and resend the request.
3512 Daniel (19 April 2004)
3513 - No more 512 byte limit for host name (inclusing name + password) in libcurl.
3514 An added bonus is that we use less memory for the typical (shorter URL)
3517 - Cleaned up the sources to better use the terms 'hostname' and 'path'
3518 internally when referring to that data. The buffers used for keep that info
3519 is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
3520 than the previous mess.
3522 Daniel (15 April 2004)
3523 - Modified runtests.pl again to remove all log files in the log/ dir between
3524 each test, and then made -p display all non-zero byte files in the log dir.
3525 It should make that data more usable and contain less rubbish.
3527 - ftpserver.pl now produces log files more similar to how the sws ones look
3528 and they now also contains a bit more details to help debugging ftp
3531 - Removed the fixed maximum amount of dir levels the FTP code supported.
3532 Previously we had a fixed array for 100 levels, now we save space in each
3533 handle by allocating only for a few level by default and then enlarging that
3534 in case of need (with no maximum depth). Adjusted test case 142 to verify
3535 that 150 dir levels work fine. An added bonus is that we use less memory
3536 for the typical (not very deep) case.
3538 Daniel (14 April 2004)
3539 - Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
3540 now cause the resolve function to return NULL immediately. This flaw was
3541 pointed out by Gisle Vanem.
3543 - Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.
3545 - runtests.pl now has a new option (-p) that will display "interesting" log
3546 files to stdout in case of a test failure. This is primarily intended to be
3547 used in the 'full-test' make target that is used by the autobuild tests, as
3548 we then get a much better chance to understand (remote) test failures based
3549 on autobuild logs alone.
3551 Daniel (13 April 2004)
3552 - Gisle Vanem made the multi interface work again on Windows even when built
3553 without ares. Before this, select() would return -1 during the name resolve
3554 phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
3557 - curl_easy_duphandle() now duplicates the tcp_nodelay info as well.
3559 Daniel (11 April 2004)
3560 - Applied David Byron's patch for the MSVC libcurl makefile for builds with
3563 Daniel (9 April 2004)
3564 - Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
3565 be down to usec if the system sypports it.
3567 Daniel (7 April 2004)
3568 - A request that sends "Expect: 100-continue" and gets nothing but a single
3569 100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.
3571 - The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
3574 Daniel (6 April 2004)
3575 - Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
3576 made libcurl on Windows leak a small amount of memory in each name resolve
3577 when not used as a DLL.
3579 - New authentication code added, particularly noticable when doing POST or PUT
3580 with Digest or NTLM. libcurl will now use HEAD to negotiate the
3581 authentication and when done perform the requested POST. Previously libcurl
3582 sent POST immediately and expected the server to reply a final status code
3583 with an error and then libcurl would not send the request-body but instead
3584 send then next request in the sequence.
3586 The reason for this change is due to IIS6 barfing on libcurl when we attempt
3587 to POST with NTLM authentication. The reason for the problems is found in
3588 RFC2616 section 8.2.3 regarding how servers should deal with the 100
3589 continue request-header:
3591 If it responds with a final status code, it MAY close the transport
3592 connection or it MAY continue to read and discard the rest of the
3595 Previous versions of IIS clearly did close the connection in this case,
3596 while this newer version decided it should "read and discard". That would've
3597 forced us to send the whole POST (or PUT) data only to have it discarded and
3598 then be forced to send it again. To avoid that huge penality, we switch to
3599 using HEAD until we are authenticated and then send the POST.
3601 The only actual drawback I can think of (except for the odd sites that might
3602 treat HEAD differently than they would treat POST/PUT when given the same
3603 URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
3604 authentication, libcurl will still use a HEAD in a first round and then do a
3607 If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
3608 an un-authenticated request at once, which then is the only request if the
3609 site requires no auth.
3611 Alan Pinstein helped me work out the protocol details by figuring out why
3612 libcurl failed and what IIS6 expects.
3614 - The --limit-rate logic was corrected and now it works a lot better for
3615 higher speeds, such as '10m' or similar. Reported in bug report #930249.
3617 - Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
3618 #include "timeval.h" from the lib dir to get the protos etc. Note that
3619 these are NOT part of the libcurl API. The curl app simply uses the same
3620 source files as the library does and therefore the file needs to be compiled
3621 and linked with curl too, not just when creating libcurl.
3623 - lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
3624 isn't portable enough
3626 Daniel (2 April 2004)
3627 - In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
3628 name to work better. As pointed out by Robin Kay.
3630 - Andrés GarcÃa updated the mingw makefiles.
3632 - Dirk Manske fixed a problem I recently added in the progress meter code that
3633 broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
3634 mistake in the code that produces the final update of the progress meter
3635 that would often prevent it from actually being updated that final time.
3637 Daniel (1 April 2004)
3638 - Dirk Manske fixed a memory leak that happened when we use ares for name
3639 resolves and decides to time-out before ares does it. This fix uses the
3640 brand new ares_cancel() function which is not present in c-ares 1.1.0.
3642 When told to enable ares, the configure script now checks for presence of
3643 the ares_cancel function to alert users if they attempt to use a too old
3646 Daniel (31 March 2004)
3647 - Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!
3649 - Dirk Manske found out that libcurl timed out waiting for resolves far too
3650 easy when libcurl was built to use (c-)ares for name resolving.
3652 - Further Digest fixing and a successful test case 153 now makes me believe
3653 Mitz Wark's problems are fixed.
3655 - Andres Garcia figured out that test case 63, while working, only proved a
3656 flaw in libcurl's 'http_proxy' parser when a user name and password is
3657 provided. The user name was not extracted properly (and 'http' was always
3660 - Andrés GarcÃa fixed compiler warnings in our ioctlsocket() usage.
3662 Daniel (30 March 2004)
3663 - Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
3664 particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel. I've now
3665 written a configure test that checks for a working NI_WITHSCOPEID
3666 implemenation. No code uses the result from this test yet, it is still
3667 experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
3668 (5006623) -- it's not supported and shouldn't be in the header file."
3670 - I provided Mitz Wark with a first patch in order to fix libcurl's problems
3671 to re-negotiate Digest authentication (when 'stale=true' is included in the
3674 - Roy Shan discovered that the multi interface didn't properly timeout name
3675 lookups which could make handles get stuck in that state and thus never get
3676 completed. I've produced a first test patch that attempts to correct this.
3678 - David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
3679 even with authentcations such as NTLM or Digest enabled. Test cases 150, 151
3680 and 152 were added to verify the functionality.
3682 Daniel (29 March 2004)
3683 - Gisle Vanem updated files for the djgpp/MS-DOS build.
3685 - Andrés GarcÃa helped me work out a fix for the runtests.pl script to make
3686 the file:// tests run fine when tested with the mingw-built version of curl.
3688 - Fixed an include issue with netinet/tcp.h on AIX, based on input by Tor.
3689 This also required a minor fix of the configure script.
3691 - The postit2.c source example used the wrong struct name for the post data.
3693 Daniel (26 March 2004)
3694 - Gisle Vanem improved ipv6 support on windows by making the curl build to use
3695 the correct getaddrinfo() function.
3697 Daniel (25 March 2004)
3698 - It turned out that AIX, despite having a "thread-safe libc", doesn't offer
3699 all traditional functions thread-safe. This URL is informative on this
3702 http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
3703 genprogc/thread_quick_ref.htm
3705 As a result of this, we now check for three *_r() functions on recent AIX
3706 versions as well that the URL mentions aren't thread-safe in AIX 5.1.
3708 - renamed curl_strerror.[ch] to strerror.[ch]
3710 - Joe Halpin added CURLOPT_TCP_NODELAY and --tcp-nodelay to make it possible
3711 for users to disable the Nagle algorthim-usage.
3713 - Tor Arntsen provided some interesting strerror_r() knowledge. glibc has its
3714 own API which differs from the POSIX one. Daniel adjusted the configure
3715 script to detect the version in use, and the code now uses the new defines
3718 - Fixed some build flaws with the new lib/curl_strerror.c source file.
3720 Daniel (24 March 2004)
3721 - Gisle Vanem's fix to replace the bad use of strerror(). This introduces
3722 Curl_strerror() that attempts to be thread-safe _and_ works on Windows too!
3724 - Tor Arntsen spell-fixed lots of libcurl man pages.
3726 - Tor Arntsen made testcurl.pl work with older perl 5 versions, and Daniel
3727 made it not use chdir .. to go back, as that isn't very good when you've
3728 setup a testdir containing symlinks.
3730 - Added a check for strerror_r() in the configure script.
3732 Daniel (23 March 2004)
3733 - Added Greg Hewgill's testcurl.pl script to CVS. We have not moved over to
3734 use this script for the real distributed testing just yet, but it is only
3737 - Gisle Vanem provided code that makes curl report a better error message
3738 if --interface fails on windows.
3740 - The regular progress meter is now fixed to never wrap due to long lines. All
3741 fields are now static sized. If the time in the time fields get a time value
3742 that would represent a time that is 100 hours or more (if not, it remains
3743 using a HH:MM:SS display), it switches first to a "NNNd NNh" display (for
3744 days and hours) and if that isn't enough it switches to a "NNNd" display if
3745 it is more than 999 days.
3747 Several of the calculations were also moved to fixed-point math instead of
3750 Daniel (22 March 2004)
3751 - Glen Nakamura noticed CURLINFO_CONTENT_LENGTH_DOWNLOAD didn't work as it
3752 used to do if CURLOPT_NOBODY is set TRUE.
3754 - Kevin Roth patched the cygwin package makefile and README to adjust to
3755 new cygwin packaging guidelines.
3757 - Enabled "NT responses" in the NTLM authentication. Doing this simply means
3758 that we provide an extra chunk of data in each "type-3 message". The only
3759 reason for doing this is that it seems that using only the "Lanmanager hash"
3760 (as we've been doing until now) doesn't support passwords longer than 14
3761 characters and it turns out there are users out there who want to use
3762 libcurl and NTLM with such passwords! ;-) Seven NTLM-related test cases were
3763 updated accordingly. Mentioned as issue 29 in TODO-RELEASE, bug report
3766 - Moved the generated libcurl version info to a new header file, named
3767 curl/curlver.h. Now interested parties can include ONLY version info, should
3768 anyone want that (and it seems at least some windows resource files would).
3769 Mentioned as issue 27 in TODO-RELEASE.
3771 Daniel (21 March 2004)
3772 - Fixed the root Makefile to use tabs for the netware target. Günter Knauf
3775 - Marty Kuhrt's VMS cleanup
3777 - Thomas Schwinge made buildconf recognize ACLOCAL_FLAGS to invoke aclocal
3778 with particular pre-determined options.
3780 Version 7.11.1 (19 March 2004)
3782 Daniel (18 March 2004)
3783 - Tor Arntsen brought some info about SGI IRIX:
3785 IRIX supports 3 different executable/object formats, -32, -n32 and -64.
3786 -n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
3787 the 64-bit format. Libraries for the different formats are in lib, lib32
3788 and lib64 respectively.
3790 We've now adjusted the configure script to adapt to this when scanning for
3791 3rd party libs, such as OpenSSL.
3793 Daniel (17 March 2004)
3794 - Watz pointed out a few missing files in the MSVC project description file.
3796 - Günter Knauf brought patches, code and makefiles to build curl on Novell
3799 Daniel (15 March 2004)
3800 - Lots of libcurl man pages were updated to contain references to other man
3801 pages the recognized way so that they appear as nice hyperlinks in the HTML
3804 - buildconf now checks the m4 version too, since autoconf requires a GNU m4
3805 version to build proper configure scripts.
3807 Daniel (12 March 2004)
3808 - Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
3809 CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
3811 - David Byron fixed an uninitialized variable case/crash.
3813 Daniel (10 March 2004)
3814 - Jeff Lawson fixed the SSL connection to deal with received signals during the
3817 - Changed the OS string for win32 to become "i386-pc-win32".
3819 Daniel (9 March 2004)
3820 - Changed the internals to use curl_socket_t for socket variable type. This
3821 should enable us to build with less warnings on Windows, where SOCKET is
3822 used which is an unsigned int, while most other platforms use a mere int.
3824 - Modified lib/config-win32.h to build fine on MSVC again.
3826 Version 7.11.1-pre1 (8 March 2004)
3828 Daniel (8 March 2004)
3829 - Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
3830 larger than 4 bytes.
3832 Daniel (4 March 2004)
3833 - Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
3835 - Modified the test HTTP server a lot to work with the upcoming changes for
3836 PUT/POST with NTLM/Digest authentication (like test case 88). Added Andrés
3837 GarcÃa's win32-changes. Improved the logging.
3839 - Fixed the file:-related progress/getinfo stuff a bit more.
3841 Daniel (4 March 2004)
3842 - I corrected a problem with the multi interface when following a Location:
3843 header or when doing multiple-request authentications. A subsequent request
3844 could erroneously re-use a previous connection that was sent with
3845 Connection: close. Christopher R. Palmer reported.
3847 - Andrés GarcÃa patched curl to prevent warnings while compiling with mingw,
3848 mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
3851 - When transferring files from a file: URL, the progress meter and other
3852 transfer metrics were not updated properly.
3854 - David Byron provided a "version resource" file to the curl executable for
3857 Daniel (3 March 2004)
3858 - David Byron's work on making libcurl only require winsock 1.1 on Windows
3861 - More variable cleanups based on compiler warnings generated by Tor Arntsen's
3862 autobuilds with MIPSPro.
3864 - Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
3866 - Applied Tom Bates' patch to build on nsr-tandem-nsk.
3868 - Dan Fandrich corrected some flaws in the configure GSS detection.
3870 Daniel (2 March 2004)
3871 - Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
3872 curl_off_t types internally.
3874 Daniel (1 March 2004)
3875 - Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
3876 response, that signals if this libcurl supports >2GB files. curl -V now
3877 outputs 'Largefile' in the Features: field if this is the case. Most systems
3878 are likely to support this.
3880 - We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
3881 to printf() curl_off_t variables. We also modified the libcurl sources to
3882 use this define instead of the previous %Od approach (although I've left the
3883 O-flag functional in the code). This should also prevent compilers to warn
3884 on the home-grown option.
3886 - Fixed the resume-check code to test for a working resume at the end of the
3887 headers and not at the first body-byte.
3889 - CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
3890 you need a global DNS cache for whatever reason, use the share interface and
3891 you'll get a global cache that works the way it should work. You can even
3892 have any number of global caches, all at your command. This is now also
3893 mentioned in the docs.
3895 - Made the *printf code support the z-flag to enable size_t printf() in a
3896 manner similar to how glibc allows it. To make printfing of this work on
3897 platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
3899 - Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
3900 CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
3901 loop without succeeding to authenticate due to the new connection that was
3902 made for all round-trips in the authentication. Now, the FRESH_CONNECT is
3903 remade to only matter for the first connection made with curl_easy_perform()
3904 and all the rest that might follow due to FOLLOWLOCATION or HTTP
3905 authentication are now ignoring that option.
3907 - Adjusted the QUIT code slightly since it could core-dump.
3909 - Corrected the test suite's FTP server to provide a correct size to the
3910 'verifiedserver' request.
3912 Daniel (27 February 2004)
3913 - Joe Halpin made the FTP code send QUIT on the control connection before
3914 disconnecting the TCP connection. This is what good-behaving ftp clients
3917 Daniel (26 February 2004)
3918 - David Byron updated several files to make curl build fine on MSVC 6. He
3919 also added the 'buildconf.bat' that works like the 'buildconf + configure'
3920 combo does on unixes.
3922 - Gisle Vanem made the memdebug stuff support calloc() as well.
3924 - Tor Arntsen pointed out that testcurl.sh needed to remove the generated
3925 files in order to have them re-generated in each build.
3927 - Andy Serpa found out that the share interface did not enjoy life when not
3928 having the lock and unlock callbacks set, even though documented to be
3929 OK. It still is OK, and now the code won't segfault anymore!
3931 Daniel (25 February 2004)
3932 - Based on a patch by Greg Hewgill I modified how long long is used in the
3933 mprintf code, as we can use a 64bit type with MSVC that is a long long
3934 equivalent. This corrects some weird large file behaviors on windows.
3936 - Tor Arntsen helped me work out --enable-debug to work better with different
3937 versions of the gcc and icc compilers.
3939 - Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
3941 Daniel (22 February 2004)
3942 - Applied the final pieces of Gisle Vanem's patch that brings a working name
3943 resolve timeout to the windows versions of curl!
3945 Daniel (21 February 2004)
3946 - David Byron's fix to allow the speed-limit logic work even if you set
3947 limit-rate. It does work on the expense of the rate limiter.
3949 Daniel (20 February 2004)
3950 - configure --enable-debug with gcc now also tries to detect the icc compiler
3951 (which somehow gets treated as if it is a gcc) to stop using all the gcc
3952 options with it, and we also provide -isystem options for each extra -I
3953 option the configure script has figured out (for OpenSSL, kerberos, zlib,
3954 Heimdal etc). This of course to prevent warnings on headers we don't have
3957 Daniel (19 February 2004)
3958 - Doug Porter made libcurl use the HOME environment variable before the
3959 getpwuid results when looking for .netrc files.
3961 - If 'configure --enable-debug' is used with gcc, it now checks which gcc
3962 version it is and uses as picky compiler options as possible for the
3965 - Code that can be used in both the lib and in the curl app is now made to use
3966 the curlx_ prefix. The first function to be available like this is the
3967 curlx_strtoll() function. This is made to allow the app to use existing code,
3968 but without polluting the libcurl API. Further explanations posted here:
3970 http://curl.haxx.se/mail/lib-2004-02/0215.html
3972 Daniel (18 February 2004)
3973 - Fixed buildconf to not use "which" as AIX and Tru64 have what have been
3974 referred to as "horribly broken 'which' programs".
3976 - Made sure dns cache timeout set to -1 really means caching forever.
3978 Daniel (17 February 2004)
3979 - Made it possibly to build c-ares with the libcurl memdebug system to better
3982 Daniel (16 February 2004)
3983 - When using ares, we now initialize the ares 'channel' in curl_easy_init()
3984 and re-use that same handle during the entire curl handle's life-time. It
3985 improves performance.
3987 - Fixed a problem when displaying verbose for ipv6-enabled libcurls and
3988 re-used connections. Problem reported and fix verified by Grigory Entin.
3990 - Jeff Lawson fixed the version-check in the SOCKS5 code.
3992 Daniel (15 February 2004)
3993 - Fixed a case where a host cache entry was not flagged in-use properly when a
3994 cached entry was used.
3996 - Andrés GarcÃa's patch that checks for winmm in the configure script was
3999 Daniel (13 February 2004)
4000 - Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
4001 specific network interface.
4003 - Greg Hewgill found out that the variable holding 'contentlength' wasn't big
4004 enough to hold a large file!
4006 - Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
4007 department, and there was another potential problem in the name resolve code
4010 Daniel (11 February 2004)
4011 - Removed a few variables that were only set but never used, as some compilers
4012 warn about that and we do not like compiler warnings!
4014 - Removed the need for symlinks in the tests/data directory if curl is built
4015 outside of the source directory and the 'make test' is used. This was done
4016 by providing a "source dir path" to the scripts/servers.
4018 - Now, if the configure script can't find an nroff tool or an option to nroff
4019 to use to convert man pages with, it will completely switch off the built-in
4022 - 'configure --disable-manual' completely disables the built-in manual from
4023 the curl command tool.
4025 - Andrés GarcÃa fixed the configure script and a minor source edit, and now
4026 he has managed to get msys/mingw to run configure and then build!
4028 Daniel (9 February 2004)
4029 - The default HTTP Accept: header was modified to the much simpler
4032 - P R Schaffner updated the curl-ssl spec file for RPMs.
4034 - Dominick Meglio brought lots of documentation for the share interface's man
4035 pages that were previously missing.
4037 - Tor Arntsen provided a patch that makes libcurl work-around a bug in the
4038 AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
4039 ipv6-enabled AIX builds.
4041 - Ken Rastatter provided portability fixes for the curlgtk.c example, and now
4042 it runs on windows with GTK as well!
4044 Daniel (6 February 2004)
4045 - Andrés GarcÃa made the configure script find gethostbyname() fine when run
4046 with mingw on windows.
4048 - Modified the ldap code to use proper function pointers all over (instead of
4049 mixed data and function pointers) to work-around the picky MIPSPro compiler
4052 - A custom Host: header is only considered if the request is not made by
4053 following a location. After discussions with Tim Baker.
4055 Daniel (5 February 2004)
4056 - The libz part of the configure script now only set the two libz-related
4057 define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
4058 If one is missing, none of the defines is set.
4060 - Andrés GarcÃa fixed the Mingw makefiles.
4062 - Len Krause reported that curl 7.9.X could do uploading from stdin without
4063 doing chunked encoding, which current curl cannot do even if you disable
4064 the transfer-encoding chunked header. Now it can again, and test case 98
4065 verifies this functionality.
4067 - Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
4068 the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
4069 messages when bailing out in the that function.
4071 - Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
4072 compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
4073 numerous minor quirks to make less warnings appear.
4075 Daniel (4 February 2004)
4076 - Based on a patch by Gilad, we now use the custom timeouts when waiting for a
4077 server to connect when using FTP PORT. Previously we always waited 10
4078 seconds, no more no less. We now also changed the default (if no timeout is
4079 set) to wait 60 seconds for the connect before we fail.
4081 Daniel (3 February 2004)
4082 - Modified to link with c-ares instead of ares.
4084 Daniel (2 February 2004)
4085 - Added a configure test to check for which option the (g)nroff tool wants
4086 to extract plain text from the man pages. Tor Arntsen told us the AIX
4087 version of GNU gnroff doesn't support -man!
4089 - Added an undef of accept in memdebug.h to make curl build with --enable-debug
4090 on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
4092 - curl_version() now includes c-ares version info, and curl_version_info() now
4093 returns a struct with version SECOND that also includes that info.
4095 - We are now officially using c-ares for asynch name resolves. c-ares is the
4096 new library, based on the existing ares but with an extended and slightly
4099 - Dirk improved the ares timeout code, and now we also include the ares error
4100 string when we fail to resolve a name.
4102 - Another tweak to make test case 91 run fine. Now we have another bit on a
4103 connection that is set true if the connection is marked for 'retry'. That
4104 makes the connection get closed and re-opened and the HTTP-done code must
4105 not complain on the fact that no data was received.
4107 - Based on Dirk Manske's patch, I modified the name resolving with ares to
4108 feature a timeout for really slow lookups. It now defaults to 300 seconds,
4109 but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
4112 - Fixed the inclusion of ca-bundle.h to really use the one in the build dir
4113 before the one in the source dir. Domenico Andreoli found out and reported.
4115 - Added test case 97, a simple POST with a custom Content-Type header
4116 replacing the original application/x-www-form-urlencoded one.
4118 Daniel (30 January 2004)
4119 - Added code that attempts to fix the test 91 failure. As has been figured out
4120 by Patrick Smith, the error happens because we re-use a connection that the
4121 server is just about to close and we even manage to send away the request
4122 without seeing an error. On the first read attempt we get a ECONNRESET.
4123 Starting now, we attempt to detect this and if so, we retry the request on a
4126 - I added test case 510 which is a custom program that does a POST using a
4127 read callback, with chunked transfer-encoding.
4129 - Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
4131 - Added --socks as a recognized option. It works just like --proxy but sets a
4132 SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
4133 while, just not provided by the curl tool. This does not currently work for
4134 IPv6-enabled libcurls.
4136 Daniel (29 January 2004)
4137 - Stadler Stephan pointed out that src/hugehelp.c included config.h without
4138 checking the define if its present...
4140 - Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
4143 - Dan Fandrich compiled curl with lots of aggressively pedantic compiler
4144 options and thus found a few minor errors and did some general cleanups to
4147 - Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
4150 Daniel (28 January 2004)
4151 - Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
4152 CRLF combo properly.
4154 Daniel (27 January 2004)
4155 - Made the response-headers during a CONNECT request to a proxy get passed on
4156 as regular headers, so they appear with -i/-I options and similar.
4158 - Based on a patch by Gisle Vanem, I've made the progress meter display
4159 properly switch to a GB-display when more than 9999MB have been transfered.
4161 Daniel (23 January 2004)
4162 - Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
4163 required didn't have one and was on the last line of a file.
4165 - More Windows fixes for large files. We now build and link with
4166 ../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
4167 libcurl function... Perhaps we should consider a 'common' dir or similar
4168 where we put source code used in both the lib and the client. Or perhaps
4169 we'll just make this function available in the library...
4171 - Vincent Bronner found out the socks5 code crashed when no username was
4174 - Vincent Bronner spotted a problem with proxy username/password when re-using
4175 a persistent connection.
4177 - Fixed the progress meter display for files larger than 2^31 bytes. Gisle
4180 Daniel (22 January 2004)
4181 - Gisle Vanem made strtoll() get used when curl is built with the mingw
4184 - Gisle Vanem fixed the compressed help text code to display properly.
4186 - Removed the '#define HttpPost' from the public header file, as curl_httppost
4187 is the proper name and it has been for quite some time now. Fixes another
4188 name space pollution.
4190 - Added 'curl_off_t' typedef in the public header file, to be used to provide
4191 large file sizes to the *_LARGE options. Adjusted the code all over to use
4192 this variable type instead of 'off_t'. This is an attempt to make the large
4193 file support work on more platforms. The configure script now checks the
4194 size of the curl_off_t instead of the plain off_t.
4196 Version 7.11.0 (22 January 2004)
4198 Daniel (21 January 2004)
4199 - Removed the defines in the public header file with TIMECOND_ prefixes. They
4200 have been obsolete since April 22nd 2002, and if this causes anyone any
4201 problems now it is very easy to just add CURL_ to the names. This corrects
4202 this name space pollution.
4204 Daniel (19 January 2004)
4205 - David Byron cleaned up how --trace with no option was treated, and also
4206 arguments in a config file without a required parameter!
4208 Daniel (16 January 2004)
4209 - Gisle Vanem fixed a few issues where compilers warned about variables
4210 possibly being used unassigned.
4212 - Minor Interix build problem fixed.
4214 Daniel (15 January 2004)
4215 - Peter Sylvester pointed out some necessary escaping needed in the
4216 acinclude.m4 file when automake 1.8 or later is used.
4218 Daniel (14 January 2004)
4219 - Vincent Bronner fixed the Curl_resolv() return code. This extends the fix
4220 Steve Green provided on december 3...
4222 Daniel (13 January 2004)
4223 - Luke Call made the win32 version of the password prompting function support
4226 - Dan Fandrich fixed the hugehelp source file to contain both a compressed and
4227 an uncompressed version in the distribution, so that more people easier can
4228 build curl with the compressed version.
4230 - Diego Casorran brought another AmigaOS build patch for native Amiga builds.
4232 - Matt Veenstra updated the Mac OS X framework files.
4234 - Brian R Duffy brought a section to the INSTALL file on how to build a
4235 SSL-enabled curl using the free Borland C++ compiler. He also updated the
4236 Borland lib/Makefile.b32.
4238 - I fixed the test case 509 which I broke yesterday. Now the libtest are
4239 compiled with an include path that points to the library's source dir, so
4240 that the libtests can include files from the source tree. This was made to
4241 make it possible to use the USE_SSLEAY define in the library test files.
4243 Daniel (12 January 2004)
4244 - Peter Sylvester brought code that now allows a callback to modified the URL
4245 even when the multi interface is used, and then libcurl will simulate a
4246 "follow location" to that new URL. Test 509 was added to test this feature.
4248 - Extended the time we retry servers in the test script, and I also made it
4249 retry the https and ftps servers before they are considered bad. I believe
4250 the previous approach could turn problematic on really slow hosts.
4252 Version 7.11.0-pre1 (12 January 2004)
4254 Daniel (11 January 2004)
4255 - Dominick Meglio pointed out FTPS should use default port 990 according to
4258 Daniel (8 January 2004)
4259 - Fixed the SPNEGO configure check to not use -R or other non-portable options
4260 in the LDFLAGS. Reported by Pierre in bug report #872930.
4262 Daniel (5 January 2004)
4263 - Dan Fandrich provided a fix on our zlib usage.
4265 - David J Meyer's patch that introduce large file support to libcurl was
4266 applied. New curl_easy_setopt options that accept 'off_t' arguments are:
4272 Daniel (4 January 2004)
4273 - Based on Dominick Meglio's comments, I made our private version of
4274 gettimeofday() declared static. This would otherwise collide with the same
4275 function in other libs (like ares for example).
4277 - Added Dominick Meglio's description on how to build libcurl with ares
4279 Daniel (19 December)
4280 - CURLOPT_IPRESOLVE was not possible to set.
4282 - Gisle Vanem updated the djgpp build files.
4284 Daniel (18 December)
4285 - John McGowan reported a redirect-problem that happened if a site used a URL
4286 like "url.com?var=content" (without a proper slash) and from that address
4287 redirected the user-agent to an absolute directory.
4289 - David Byron made libcurl build fine with both the .NET and VC6 versions of
4292 Daniel (16 December)
4293 - Updated test 506 since it started to fail after the cache prune change
4294 yesterday. I also changed it slightly to feature a counter in each debug
4295 output for easier tracing.
4297 Daniel (15 December)
4298 - Old DNS cache entries are now only pruned after curl is done with a request,
4299 and not in the actual name resolve call.
4301 - corrected the --enable-ares patch
4303 - Giuseppe Attardi found and fixed a problem within libcurl that re-used
4304 already freed memory.
4306 Daniel (10 December)
4307 - Gisle Vanem reported that the dict support was broken. I broke it during my
4308 ftps-changes overhaul. I've now added a 'curlassert' function that can be
4309 used to verify expressions, to prevent future errors of the same
4310 kind. They're only present in debug-builds.
4312 - Diego Casorran made curl and libcurl possible to build natively (no more
4313 need for the ixemul library) on AmigaOS.
4315 - Dominick Meglio made configure --enable-ares support a given path to the
4316 installed ares lib, instead of always using it in the curl source tree.
4317 This also fixed the curl-config --libs output.
4319 - Eric S. Raymond patched a very minor man page format error in
4323 - Fixed the flaw that made -lz appear twice on the link command line.
4325 - After correspondence with Gisle Vanem, I changed the 'connection aborted'
4326 error text when the FTP response reader failed to more specificly identify
4327 what the problem is.
4329 - Based on a patch from Dominick Meglio, curl-config --feature now outputs
4330 'AsynchDNS' as a feature if libcurl was built with ares. The feature name
4331 is the same that 'curl -V' outputs, for simplicity.
4334 - Marty Kuhrt made the build up-to-date on VMS, and moved most of the VMS-
4335 specific stuff in the client code to a separate header file.
4337 - Steve Green fixed a return code bug in Curl_resolv(), that made the socks5
4340 - swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
4341 when Transfer-Encoding: chunked is used, as mandated by RFC2616.
4344 - --ftp-pasv was added, which serves the only purpose of overriding a
4345 previously set --ftpport option. Starting now, --ftp-port is a recognized
4346 alias for --ftpport for consistency.
4348 - Giuseppe Attardi pointed out that we should use MSG_NOSIGNAL when we use
4349 send() and recv(). I added checks for the define in the configure script and
4350 adjusted the code accordingly. If the symbol is present, we won't attempt
4351 to ignore the SIGPIPE signal.
4354 - Mathias Axelsson set up a bsdftpd-ssl server for me and I could make curl
4355 run fine against its FTPS implementation. Now these FTPS-related things
4357 o explicit and implicit FTPS
4358 o active (PORT) and passive (PASV)
4359 o upload and download
4360 o verified against bsdftpd-ssl and RaidenFTPD
4362 Daniel (27 November)
4363 - James Clancy made the Borland Makefiles up to date.
4365 - Markus Moeller improved the SPNEGO detection in the configure script.
4367 Daniel (25 November)
4368 - Dave May filed bug report #848371, identifying that if you'd do POST over a
4369 proxy to a https server, libcurl didn't POST at all, it just made a GET! It
4370 turned out to be because libcurl wrongly didn't consider the authentication
4371 "negotiation phase" to be complete yet.
4373 I added test case 95 to verify my fix for this.
4375 Daniel (24 November)
4376 - Thanks to Mathias Axelsson, I've been able to work on FTPS for libcurl and it
4377 seems to work somewhat fine now.
4379 The FTPS stuff is based on RFC2228 and the murray-auth-ftp-ssl draft
4380 (version 12). There seems to exist quite a few servers that have implemented
4381 the server side of this.
4383 We can now use ftps:// URLs to explicitly switch on SSL/TSL for the control
4384 connection and the data connection (dealing with two SSL connections forced
4385 me to change a lot of stuff in libcurl).
4387 Alternatively, and what seems to be the recommended way, we can set the new
4388 option CURLOPT_FTP_SSL to one of these values:
4390 CURLFTPSSL_NOPE, - do not attempt to use SSL
4391 CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
4392 CURLFTPSSL_CONTROL - SSL for the control connection or fail
4393 CURLFTPSSL_ALL - SSL for all communication or fail
4395 Any failure to set the desired level will make libcurl fail with the error
4396 code CURLE_FTP_SSL_FAILED. This new option makes a "normal" ftp:// transfer
4397 attempt to be made securely.
4399 I've been able to login and get files (passively) from Mathias' server using
4400 both ftps:// and CURLOPT_FTP_SSL. (I've made 'curl' understand the --ftp-ssl
4401 option that sets CURLFTPSSL_TRY.)
4403 - Gaz Iqbal fixed a range string memory leak.
4405 - Gisle Vanem fixed the Windows builds.
4407 - Added the new FTPSSL defines in curl/curl.h
4409 Daniel (20 November)
4410 - Josh Kapell filed bug report #845247 as he found an endless loop when
4411 getting a 407 back from a proxy when no user+password was given. Added test
4412 case 94 to verify the fix.
4414 Daniel (19 November)
4415 - Kevin Roth fixed a progress-bar problem on Windows.
4417 - While working with Nicolas Croiset's bug report #843739, I noticed two minor
4418 problems related to ftp partial downloads: if a partial transfer is
4419 detected, we must close the connection as we cannot know in what state it is
4420 anymore. This looks like a ProFTPD bug:
4421 http://curl.haxx.se/mail/lib-2003-11/0079.html
4423 Daniel (17 November)
4424 - Maciej W. Rozycki made the configure script use a cache variable for the
4425 writable argv test. This way, the default can be overridden better (for
4428 Daniel (15 November)
4429 - Mathias Axelsson found out libcurl sometimes freed the server certificate
4430 twice, leading to crashes!
4432 Daniel (14 November)
4433 - Siddhartha Prakash Jain found a case with a bad resolve that we didn't
4434 properly bail out from, when using ares.
4436 Daniel (13 November)
4437 - Default Content-Type for parts in multipart formposts has changed to
4438 "application/octet-stream". This seems more appropriate, and I believe
4439 mozilla and the likes do this. In the same area: .html files now get
4440 text/html as Content-Type. (Pointed out in bug report #839806)
4442 - Gisle Vanem corrected the --progress-bar output by doing a flush of the
4443 output, which apparently makes it look better on at least windows, but
4444 possibly other platforms too.
4446 - Peter Sylvester identified a problem in the connect code, which made the
4447 multi interface on a ipv6-enabled solaris box do bad. Test case 504 to be
4448 specific. I've spent some time to clean-up the Curl_connecthost() function
4449 now to use less duplicated code for the two different sections: ipv6 and
4452 Daniel (11 November)
4453 - Added CURLOPT_NETRC_FILE. Use this to tell libcurl which file to use instead
4454 of trying to find a .netrc in the current user's home directory. The
4455 existing .netrc file finder is somewhat naive and is far from perfect on
4456 several platforms that aren't unix-style. If this option isn't set when
4457 CURLOPT_NETRC is set, the previous approach will still be used.
4459 The current .netrc check code now also support longer than 256 bytes path
4462 Daniel (10 November)
4463 - Kang-Jin Lee pointed out that the generated ca-bundle.h file shouldn't be
4464 written in the source dir if a different build dir is used.
4466 - After Sébastien Willemijns' bug report, we now check the separators properly
4467 in the 229-reply servers respond on a EPSV command and bail out better if
4468 the reply string is not RFC2428-compliant.
4471 - Based on Gisle Vanem's patch, I made curl try harder to get the home
4472 directory of the current user, in order to find the default .curlrc file.
4473 We're also considering moving out the HOME-dir code from libcurl, and
4474 instead have the app pass in the path to the .netrc file (which is the only
4475 logic left in libcurl that uses the HOME dir). Then curl can use the home
4476 dir for that purpose too.
4478 - Ralph Mitchell's updated testcurl.sh to the script to take an existing
4479 directory name and build/run/test curl in there instead of trying to update
4480 from CVS. Using this approach, the script can now be used to test daily
4483 - Gisle Vanem added a "resource file" to the Windows DLL builds, to contain
4484 information such as version number, library name, copyright info etc.
4487 - curl checks if the existing libcurl supports things like --ntlm, --negotiate
4488 and --krb4 and returns error if not.
4490 - I added three new global defines in the curl/curl.h header:
4491 LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. They
4492 are the three numbers in the library's version number, separated for easier
4493 usage. 'maketgz' was updated accordingly to generate these numbers properly
4494 when building release-archives.
4496 - Uninitialized variable fix, reported by both Marty Kuhrt and Benjamin
4499 - Matt Veenstra provided build files to build libcurl as a "framework" under
4500 Mac OS X. See the lib/libcurl.framework.make for details.
4502 - Removed the defines of TRUE and FALSE from the curl/curl.h header file.
4503 They're not in our name space so we should not fiddle with them.
4506 - Replaced the man page to HTML converter program with a new one: roffit.
4507 Makes nicer web pages.
4510 - Troels Walsted Hansen fixed the MSVC makefiles to let them build curl fine
4513 - Kevin Roth corrected the cygwin package generator and spell-fixed the
4514 comment in the ca-bundle.h file.
4516 Version 7.10.8 (1 November 2003)
4519 - Assume that MDTM on an FTP server returns the timestamp using the UTC time
4520 zone. This changes the time CURLINFO_FILETIME returns for a given file over
4521 FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make
4522 the functionality more similar to how the HTTP one is already working.
4524 - Command line options that take numerical parameters (such as -y, -Y, -C etc)
4525 now report error and exit if the parameter isn't truly a number greater than
4526 or equal to zero. This helps users to notice bad usage earlier. Before, when
4527 a user forgot or missed to add a numerical parameter to an option, the
4528 command line parser would simply "eat" the following option and it would
4529 cause great confusion.
4532 - David Hull made libcurl deal with NOBODY and HEADER for file:// the same way
4533 it already does for FTP: it provides HTTP-looking headers that provide info
4534 only about the file, without doing the actual transfer. The curl tool then
4535 lets --head do this.
4538 - runtests.pl now checks for and use valgrind if present. It will redirect the
4539 valgrind results in log/valgrind[num] but it currently doesn't scan that
4540 file for any errors or anything, that is still only made manually.
4542 - David Hull made the file: URL parser also accept the somewhat sloppy file
4543 syntax: file:/path. I added test case 203 to verify this.
4546 - Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
4547 function for some specific versions (reported on 2.2.5 and 2.1.1), and
4548 provided a fix. On Linux machines with these glibc versions, non-ipv6
4549 builds of libcurl would often fail to resolve perfectly resolvable host
4553 - James Bursa found out that curl_msnprintf() could write the trailing
4554 zero-byte outside its given buffer size. This could happen if you generated
4555 a very long error message as then libcurl would overwrite the ERRORBUFFER
4556 with one byte. Using a non-existing very long local file:// name is one case
4557 that could make this occur.
4560 - David Hull filed bug report #829827. It identified a problem with -C - if
4561 the full file already was downloaded and thus the server responded with a
4562 416. libcurl would then wrongly use the Content-Length: header and expect
4563 that size to get transfer, causing a "hang" until the server closed the
4564 connection and then an error 18 ("still N bytes data left of the transfer").
4566 Now we don't return any error at all, but I think libcurl should perhaps
4567 return some kind of info since the requested range was out of the size of
4570 - Based on David Hull's fix in bug report #804599, we now check for solaris and
4571 gcc in configure and set the -mimpure-text link flag for linking the lib
4574 - I've introduced a -t option to the runtests.pl script. With that option set,
4575 the script runs special "memory torture" tests. For each test command line
4576 in that section, the script first runs the command line and counts the total
4577 amount of allocations made. It then runs the exact same command line again,
4578 forcing allocation number N to fail. It will try every N from 1 to the total
4579 number of amounts made. For every invoke, it checks that no memory was
4580 leaked as that would indicate a bad cleanup somewhere in the code.
4582 This is just beginning to work, and I've already made some corrections in
4583 libcurl code. When this code works somewhat fine, I'll make sure 'make test'
4584 in the root dir will run these tests as well.
4587 - Georg Horn fixed how the CA verification is made. Verifications can now be
4588 made while at the same time the result of it can be ignored. This also
4589 affects the curl tool as -k can now be used together with --cacert or
4593 - Gisle Vanem found out --disable-eprt didn't work and patched it.
4595 - Test case 91 was modified and could now repeat the problem Kevin Roth has
4596 reported, and the bug was fixed.
4598 - Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile
4599 to build a static libcurl that links with a shared OpenSSL using MSVC.
4602 - Andrés GarcÃa updated the mingw32 makefiles.
4604 Version 7.10.8-pre5 (21 October 2003)
4607 - Georg Horn made libcurl output more info on SSL failures when receiving
4610 Version 7.10.8-pre4 (18 October 2003)
4613 - Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize.
4615 - Made libcurl show verbose info about what auth type and user name that is
4616 being sent in its HTTP request-headers.
4619 - Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl
4620 no longer prompt for passwords under any circumstances. Password prompting
4621 was instead moved to curl, which now prompts for password if -u or -U lack
4622 it. This solves the problem Kevin Roth reported when curl prompted for
4623 password twice when doing NTLM authentication.
4625 - I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP-
4626 licensed derivate code.
4629 - Avoid doing getsockopt() on Windows to verify connects. It seems that this
4630 hogs Windows machines when libcurl is being used multi-threaded (with > ~50
4631 threads). Andrew Fuller helped us verify and test this.
4634 - Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set.
4636 - Gisle Vanem made libcurl build and work with IPv6 on Windows.
4639 - Giuseppe Attardi reported yet another segfault with ares and the multi
4640 interface. Me fixed.
4642 - Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am
4643 that was reported about in the debian bug report #212086.
4645 Domenico also fixed two makefiles where we used 'gnroff' instead of the more
4649 - Dirk Manske made the share locking around DNS lookups slightly different to
4650 allow the share system's DNS lookups to run somewhat more
4654 - Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform
4655 an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download
4656 still has a Range header with a garbage value." bug report #820502
4658 - Dominick Meglio made the inet_pton.c file build fine using MSVC.
4660 - The 'sws' test suite web server now #include setup.h from the lib directory.
4661 This makes it more portable easier.
4663 Version 7.10.8-pre3 (8 October 2003)
4666 - Frank Ticheler provided a patch that fixes how libcurl connects to multiple
4667 addresses, if one of them fails (ipv4-code).
4670 - Neil Dunbar provided a patch that now makes libcurl check SSL
4671 subjectAltNames when matching certs. This is apparently detailed in RFC2818
4672 as the right thing to do. I had to add configure checks for inet_pton() and
4673 our own (strictly speaking, code from BIND written by Paul Vixie) provided
4674 code for the function for platforms that miss it.
4676 - HTTP POST using the read callback didn't work, as Florian Schoppmann
4680 - Shared provided a few fixes to make libcurl build on BeOS
4681 out-of-the-box. New code for BeOS-style non-blocking sockets, provided by
4682 Shard and Jeremy Friesner. Modified the autoconf check for non-blocking
4683 sockets to check for this kind too.
4686 - Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer
4687 and then set it to NULL in a subsequent one, the previous cookie was still
4690 - Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due
4691 to a bad path, it would cause the next transfer to use a bad path as well.
4693 - Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
4694 when working on IP-only names as we then could return "wait" status when the
4695 name in fact already was resolved. I edited the patch slightly to not expose
4696 asynch details to non-ares aware source code.
4699 - Neil Spring posted the debian bug report #213180, and pointed out that using
4700 the name 'access' in a function prototype is not very wise as some compilers
4703 - Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source
4704 code that shows how they use ssl and callbacks.
4707 - James MacMillan's patch makes curl build on QNX 6.2.x.
4709 Daniel (26 September)
4710 - My daughter was born!
4712 Daniel (23 September)
4713 - Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that
4714 particular IP version. They only work for IPv6-enabled libcurls.
4716 - curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to
4719 Version 7.10.8-pre2 (22 September 2003)
4721 Daniel (22 September)
4722 - Giuseppe Attardi found a segfault in libcurl when using the multi interface
4723 with ares and doing repeated operations against a non-resolving host name.
4725 Daniel (19 September)
4726 - Added the CURLOPT_IPRESOLVE option, that allows an application to select
4727 what kind of IP addresses he wants to use when resolving host names. This
4728 is only interesting when using host names that resolve addresses using more
4729 than one version of IP.
4731 - Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
4732 is built with the FBopenssl libraries. curl_version_info() now returns
4733 info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
4734 with the MIT GSS-library (the Heimdal one still works too).
4736 Daniel (16 September)
4737 - Doing PUT with --digest failed, as reported in bug report #805853.
4739 - Using --anyauth that picked NTLM, and then a redirect closed the connection
4740 and took curl to a second NTLM page made curl fail. Bug report #806328
4741 identified the problem, test case 90 was added to verify the fix.
4743 Daniel (14 September)
4744 - codemastr brought a patch for ares to make the Windows portions of it work
4745 properly on NT4. I uploaded a new diff and updated the docs on where to get
4748 - Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a
4749 cached DNS entry even though it may be in use, which caused "random" memory
4750 to get overwritten and thus "random" crashes.
4752 Daniel (12 September)
4753 - Based on a bug report by David Kimdon, I made the runtests.pl script clear
4754 all possible proxy environment variables before the tests are run.
4756 - By default, easy handles within a multi handle now share DNS cache.
4758 - Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for
4759 Microsoft's "Negotiate" authentication as well.
4761 Daniel (11 September)
4762 - A zero-length proxy string confused FTP transfers.
4764 - Bjorn Reese found a case with an uninitialized pointer, only present when
4767 Version 7.10.8-pre1 (8 September 2003)
4769 Daniel (7 September)
4770 - Jurij Smakov found out that the non-OpenSSL MD5 code was not working on
4771 Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects
4774 Daniel (5 September)
4775 - Kevin Fisk reported that configure --enable-thread didn't work. I fixed.
4777 - De-macrofied the lib/hash.c source code somewhat.
4779 Daniel (4 September)
4780 - CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg
4781 Mueller-Tolk's patch,
4784 - Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout
4785 requirements on the FTP server's ability to respond to individual commands
4786 without placing global requirements on transfer or connect time. Files
4788 - include/curl/curl.h
4789 Added option CURLOPT_FTP_RESPONSE_TIMEOUT
4791 Added branch inside Curl_GetFTPResponse to check for
4792 data->set.ftp_response_timeout
4794 Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT
4796 Added ftp_response_timeout to struct UserDefined
4798 Daniel (3 September)
4799 - Peter Pentchev found and fixed two problems in the test suite's web server
4800 code, that made it segfault at times.
4802 - Jörg Mueller-Tolk improved the proxy user+password handling, especially
4803 when providing a blank password.
4805 Daniel (2 September)
4806 - Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest
4807 and similar to work.
4809 Daniel (1 September)
4810 - Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current).
4812 - Jeff Pohlmeyer added a proper error message for non-resolving hosts when
4813 using ares for lookups.
4816 - John McGowan reported that curl -k still failed if the HTTPS server's CN
4817 field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being
4818 set to 1, and libcurl failed if the CN was missing. Starting now, having it
4819 set to 1 will simply output a warning if no CN could be obtained (as having
4823 - Vincent Sanders provided a fix for name resolving when linked with uClibc.
4826 - Gerd v. Egidy provided a patch that makes libcurl store the FTP response
4827 code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE
4828 returns that data. The option is therefore now also known as
4829 CURLINFO_RESPONSE_CODE.
4831 - Antoine Calando found a segfault when doing multi-part/formpost using
4832 the multi interface.
4834 - Antoine Calando pointed out that curl_multi_info_read() didn't set the
4835 msgs_in_queue to 0 properly when returning NULL.
4838 - I made curl support multiple -T options, as well as -T "{file1,file2}"
4839 style globbing. One -T for each URL is supported.
4841 - Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the
4842 multi interface when trying a non-existing host name.
4844 - Made the libcurl printf code support long longs if available.
4846 - Loren Kirkby pointed out that we did not clean up all SSL-allocated memory
4847 in curl_global_cleanup().
4850 - Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make
4851 them get the internal defaults restored. Previously this could cause a
4852 segfault. We should aim at having all pointer-related options get restored
4853 to default/safe values when set to NULL.
4855 Version 7.10.7 (15 August 2003)
4858 - I modified the memdebug system to return failure on memory allocation
4859 functions after a set amount of successful ones. This enables us to test
4860 out-of-memory situations in a controlled manner and we can make sure that
4861 curl/libcurl behaves good in those.
4863 This made me find and fix several spots where we did not cleanup properly
4864 when bailing out due to errors (low memory).
4866 - Corrected test case 74. Made using -o with bad #[num] codes complain and
4867 bail out. Made #[num] support numbers larger than 9 as well. Added test
4868 case 86 for a proper range globbing test as well.
4870 Version 7.10.7-pre4 (12 August 2003)
4873 - curl_version_info() now returns a flag if libcurl was built with asynch DNS
4874 support, and this is now also displayed with 'curl -V'.
4876 - Added a few new man pages to the docs/libcurl dir: curl_share_init,
4877 curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share.
4880 - Mike Cherepov made the local binding code work for Windows, which makes
4881 the option CURLOPT_INTERFACE work on Windows as well.
4883 - Vincent Sanders updated the fopen.c example code a lot.
4885 - --proxy-ntlm is now supported by the curl tool. It forces the proxy
4886 authentication to be made using NTLM. It does not yet work for HTTPS over
4887 proxies (or other proxy-tunneling options). Test case 81 and 82 do some
4888 simple initial ntlm testing.
4890 - Found and fixed a minor memory leak on re-used connections with
4891 proxy-authentication.
4893 - I removed -@ and -Z as valid short options. They were very rarely used (@
4894 wasn't even documented).
4896 - Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to
4897 CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH,
4898 but is for the proxy connection only, and HTTPAUTH is for the remote host.
4900 - Fixed loading of cookies with blank contents from a cookie jar. Also made the
4901 cookie functions inform on added and skipped cookies (for cookie debugging).
4903 Version 7.10.7-pre3 (8 August 2003)
4906 - Applied David Byron's fix for file:// URLs with drive letters included.
4908 - I added the --ftp-create-dirs to the client code, which activates Early's
4909 CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify
4910 it. Added the option to the curl.1 man page too. Added the option to the
4911 curl_easy_setopt.3 man page too.
4914 - Test case 60 failed on ia64 and AMD Opteron. Fixed now.
4916 - Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the
4917 debian bug tracker). Added test case 74 to verify the fix and to discover if
4918 this breaks in the future.
4920 - "make distcheck" works again.
4922 Version 7.10.7-pre2 (6 August 2003)
4925 - Duncan Wilcox helped me verify that the latest incarnation of my ares patch
4926 builds fine on Mac OS X (see the new lib/README.ares) file for all details.
4928 - Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
4929 bug report to the libcurl list, both identifying a problem with FTP
4930 persistent connections and how the dir hierarchy was not properly reset
4933 - David Byron's thoughts on a fixed Makefile in tests/ were applied.
4935 - Jan Sundin reported a case where curl ignored a cookie that browsers don't,
4936 which turned up to be due to the number of dots in the 'domain'. I've now
4937 made curl follow the the original netscape cookie spec less strict on that
4941 - Dirk Manske added cookie support for the experimental, hidden and still
4942 undocumented share feature!
4944 - Mark Fletcher provided an excellent bug report that identified a problem
4945 with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not
4946 properly ignore the body contents of 3XX response that included the
4950 - Added option CURLOPT_FTP_CREATE_MISSING_DIRS
4951 This option will force the target file's path to be created if it
4952 does not already exist on the remote system.
4955 - include/curl/curl.h
4956 Added option CURLOPT_FTP_CREATE_MISSING_DIRS
4958 Added function ftp_mkd, which issues a MKD command
4959 Added function ftp_force_cwd, which attempts a CWD,
4960 and does a MKD and retries the CWD if the original CWD
4962 Modified ftp_perform() to call its change directory function
4963 through a pointer. The pointer points to ftp_cwd by default,
4964 and is modified to point to ftp_force_cwd IFF
4965 data->set.ftp_create_missing_dirs is not 0.
4967 Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS
4969 Added ftp_create_missing_dirs to struct UserDefined
4971 - Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not
4972 present to do the time comparison, it would fail.
4975 In ftp_perform(), the call to ftp_getfiletime() used to be followed
4979 And then by the code that actually did the time comparison.
4980 The code that did the comparison handled the case where the filetime
4981 was not available (as indicated by info.filetime < 0 or set.timevalue
4982 < 0), so I replaced the if (result) return result with a switch(result)
4983 that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the
4984 normal time comparison.
4987 - When proxy authentication is used in a CONNECT request (as used for all SSL
4988 connects and otherwise enforced tunnel-thru-proxy requests), the same
4989 authentication header is also wrongly sent to the remote host.
4991 This is a rather significant info leak. I've fixed it now and mailed a patch
4992 and warning to the mailing lists.
4995 - David Byron provided a patch to make 7.10.6 build correctly with the
4996 compressed hugehelp.c source file.
4998 Version 7.10.7-pre1 (31 July 2003)
5001 - Jörg Müller-Tolk updated the VC makefile.
5003 - Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar
5004 style like other faked HTTP headers when NOBODY and HEADER are used. I
5005 updated two corresponding test cases too.
5007 - Marty Kuhrt pointed out a compilation problem on VMS due to my having
5008 changed a type from long to time_t, and I'm now changing it back to work
5011 He also indicated that distributing the src/hugehelp.c in a compressed state
5012 like I accidentally did may not be the smartest move... I've now fixed the
5013 distribute procedure to automatically generate an uncompressed version when I
5014 make release archives.
5017 - Gisle Vanem brought changes to the mkhelp script for the generation of the
5018 compressed help text on some platforms.
5020 Version 7.10.6 (28 July 2003)
5023 - François Pons brought a patch that once again made curl deal with ftp and
5024 "double slash" as indicating the root directory. In the RFC1738-fix of April
5025 30, that ability was removed (since it is not the "right" way). So, starting
5026 now we can list the root dir of an ftp server both these ways:
5028 curl ftp://server.com/%2f as well as
5029 curl ftp://server.com//
5032 - Henry Bland pointed out that we included sys/resource.h without good reason
5033 in several source files. Without it included, QNX builds better...
5035 - Andrés GarcÃa updated the mingw makefiles.
5038 - Tracy Boehrer experienced DNS cache problems and did some nice debugging
5039 and tracking which made it easy for me to correct the problem and Tracy
5040 could verify that it did cure the problem! When re-using a connection we
5041 now make sure we don't re-use the 'connect_addr' struct.
5043 - Daniel Kouril corrected the GSS-Negotiate code.
5045 - Juan F. Codagnone provided fixes to allow curl to build fine on Windows
5049 - Edited the curl/curl.h include file to build on Windows properly.
5052 - Moved the proxy credentials from the SessionHandle struct to the connectdata
5053 struct, to make multiple proxy connections with differerent user names work.
5055 - Adjusted the NTLM code to support proxy functionality.
5057 - Made the krb4 stuff compile with the user+password fields moved.
5059 Version 7.10.6-pre4 (21 July 2003)
5062 - David Gardner pointed out in bug report 770755 that using the FTP command
5063 CWD with a blank argument is a bad idea and I made libcurl skip empty path
5064 segments starting now.
5067 - Cris pointed out that my fix on July 16th didn't work fully. His pointing
5068 out this (and his patch) also made me realize that we have a very similar
5069 bug in the FTP connection re-use code. We must store a separate user and
5070 password field for each connection we keep (at least for FTP and HTTP+NTLM
5071 connections, so I made us do this unconditionally).
5073 - Since NTLM authenticates connections instead of single requests, I had to
5074 re-arrange how we store the NTLM data and I had to improve the test suite to
5075 finally work properly with persistency to make the NTLM tests run fine
5076 again. This also forced me to have to update lots of HTTP test cases.
5079 - Cris Bailiff's bug report 768275 pointed out that using Basic auth with
5080 wrong user+password caused an endless loop. Fixed now. He also found out that
5081 we didn't properly authenticate connections with NTLM. Fixed too.
5083 - Dan Winship provided fixes for the NTLM code.
5086 - Doug Kaufman provided additional fixes for the DOS port.
5089 - Rick Richardson pointed out that using setvbuf() to achieve non-buffering
5090 on output is no-good for SCO Xenix and other unixes. We switched over to
5091 using plain fflush() instead.
5093 - Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in
5094 the configure script, and I had to change some build stuff to make the new
5097 - Peter Sylvester's patch was applied that introduces the following:
5099 CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the
5100 OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If
5101 anything but CURLE_OK is returned, that will also be returned by libcurl
5102 all the way back. If this function changes the CURLOPT_URL, libcurl will
5103 detect this and instead go use the new URL.
5105 CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set
5106 with CURLOPT_SSL_CTX_FUNCTION.
5109 - David Byron provided a patch that allows a client to quit the test suite's
5112 - Gisle Vanem found and patched a lib handle leak in the ldap code.
5115 - More NTLM-improvements. Less code. Smaller packets back and forth.
5118 - Eric Glass provided us with a better doc on NTLM details, and I added more
5119 comments and clarified the current code more. Using the new knowledge, we
5120 should be able to make the NTLM stuff work even better.
5121 Eric's original URL: http://davenport.sourceforge.net/ntlm.html
5122 Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html
5124 - Fixed the minor compile problems pre3 had if built without GSSAPI and/or
5127 Version 7.10.6-pre3 (19 June 2003)
5130 - Made curl use curl_free() on memory returned by curl_getenv(), as this
5131 should theoreticly make it possibly to build and run curl and libcurl with
5132 different memory allocation schemes with no problems.
5135 - Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to
5136 include a better comment in the top for the gzip compressed version.
5139 - CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication
5140 type(s) you want to use. If more than one is set, libcurl will use one of
5141 the selected one and the one it considers is more secure. Test case 67 and
5142 68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
5143 fetches, and test case 69 and 70 were added for testing authentication
5144 "picking". --anyauth is the new command line tool option, and I also added
5145 --basic for completeness (that's the default type).
5147 - Fixed the runtests.pl script to use the info provided by the new curl -V
5150 - --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it
5151 is meant to be a generic debug conditional.
5153 - curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to
5154 indicate that the library was built with CURLDEBUG set.
5156 - Ralph Mitchell found out that some web applications very badly uses white
5157 spaces in Location: redirects, and apparently IE is a browser (the only
5158 one?) that supports this abomination. Based on Ralph's patch, I added code
5159 that now attempts to replace white spaces with the proper "%20" or "+".
5160 Test case 40 and 42 were added to verify my changes.
5162 - curl -V now also outputs a list of features the available library offers (if
5165 - The curl_version() string now includes "GSS" if libcurl is built with GSSAPI
5168 - David Orrell reported that libcurl still crashed when sending HUGE requests
5169 over HTTPS... I fixed.
5171 Version 7.10.6-pre2 (16 June 2003)
5174 - curl_version_info() now returns bitmasked information weather NTLM and
5175 GSSNEGOTIATE are supported, since it is doomed to vary on different
5178 - I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
5179 that is present, and only use our own MD5-code if it isn't.
5182 - More NTLM help, fixes and patches from Cris Bailiff.
5184 - Marty Kuhrt brought include fixes for making VMS builds warning-free.
5187 - NTLM authentication works somewhat against the test servers provided by
5188 Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to
5189 CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68
5190 were added for this. NTLM-support requires OpenSSL.
5192 - Dan Fandrich provided a patch, that granted that gzip and libz are available
5193 at build-time, compresses the hugehelp text in the curl command line and
5194 uncompresses it at request. Saves some ~60K in the final output executable.
5197 - Long day of fighting the NTLM demons.
5200 - Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead,
5201 and pick method. Supported ones currently are:
5202 CURLAUTH_BASIC - default selection
5203 CURLAUTH_DIGEST - formerly CURLOPT_HTTPDIGEST
5204 CURLAUTH_GSSNEGOTIATE
5206 - Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in
5207 the IETF draft draft-brezak-spnego-http-04.txt. In use already by various
5208 Microsoft web applications. --negotiate is the new family member. To take
5209 advantage of this, you need one of these packages:
5211 o Heimdal Kerberos5 http://www.pdc.kth.se/heimdal/heimdal.html
5212 o GSSAPI from Globus http://www.globus.org/
5213 o GSSAPI libraries from MIT Kerberos5 http://web.mit.edu/kerberos/www/
5215 - A missing ending bracket (']') while doing URL globbing could lead to a
5216 segfault. While fixing this, I also introduced better error reporting in the
5217 globbing code. (All this is application code outside libcurl.)
5220 - David Orrell found out that sending a huge GET request over HTTPS could
5221 make libcurl fail and return an error code.
5224 - Richard Bramante found out that "Content-Length: 0" was not properly used by
5225 libcurl if the response-headers indicated that the connection would be
5228 - David Byron's patch was applied, that makes the --progress-bar take the
5229 local size into account when doing resumed downloads.
5231 - Feedback from Serge Semashko made me change the error message returned when
5232 CURLE_HTTP_RETURNED_ERROR is returned.
5234 - Anonymous in bug report #745122 pointed out that we should really be using
5235 SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL
5239 - Andreas Ley and Rich Gray helped me point out that no version of HP-UX has
5240 the sys/select.h header file so including it unconditionally in curl/multi.h
5241 is not a good thing. Now we check for HPUX and avoid using that header on
5244 - Rudy Koento experienced problems with curl's recent habit of POSTing data in
5245 two separate send() calls, first the headers and then the data. I've now
5246 made a fix that for static and known content that is less than 100K in size,
5247 everything is now sent in one single system call again. This is also better
5248 for network performance reasons.
5250 - I modified the main makefile to not build the test suite and a few other
5251 unnecessary things by default. Now, the test suite is built when 'make test'
5252 is run. This reduces build time for those who don't care for the test
5253 suite, and it also reduces confusion for people using platforms where the
5254 test suite build fails!
5257 - Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows,
5258 which is now corrected.
5260 - Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5
5261 proxy a little too much like as if it was a http proxy.
5264 - Ricardo Cadime found a socket leak when listing directories without
5265 contents. Test cases 144 and 145 were added to verify the fix.
5267 - Rudy Koento found yet another problem when a HTTP server returns only a
5268 single-line of contents without any headers at all. libcurl then failed to
5269 count the data, thus returning error 52 "no contents". Test case 66 was
5270 added to verify that we now do right.
5272 Version 7.10.6-pre1 (23 May 2003)
5275 - Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code.
5278 - David Remahl set up a test-server for me providing Digest authentication,
5279 and I wrote the first working code that support it. The test suite was
5280 modified slightly as well to work better for it and --digest was added to
5281 the command line options (and CURLOPT_HTTPDIGEST to the library)... RFC2617
5282 has all the gory details.
5285 - David Balazic pointed out that curl_unescape() didn't check that %-codes
5286 were correctly followed by two hexadecimal digits when it unescape strings.
5287 Now, we do the check and only %XX codes are unescaped if the X letters are
5290 - Gisle Vanem made curl build with djgpp on DOS.
5292 - Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is
5296 - Gisle Vanem provided a fix that makes libcurl more conservative, not
5297 expecting h_aliases of the hostent struct to always be non-NULL.
5300 - As requested by Martin Michlmayr in Debian bug report #193630, libcurl now
5301 supports user name and password in the proxy environment variables. Added
5302 test case 63 to verify this.
5304 Version 7.10.5 (19 May 2003)
5307 - Changed the order for the in_addr_t testing, as 'unsigned long' seems to be
5308 a very common type inet_addr() returns.
5311 - George Comninos provided a fix that calls the progress meter when waiting
5312 for FTP command responses take >1 second. It'll make applications more
5313 "responsive" even when dealing with very slow ftp servers.
5316 - George Comninos pointed out that libcurl uploads had two quirks:
5317 o when using FTP PORT command, it used blocking sockets!
5318 o it could loop a long time without doing progress meter updates
5319 Both items are fixed now.
5322 - Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if
5323 set to "". This frees the application from having to know which encodings
5324 the library supports.
5326 - Dan Fandrich pointed out we had three unnecessary files in CVS that is
5327 generated with libtoolize, so they're now removed and libtoolize is invoked
5328 accordingly in the buildconf script.
5330 - Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the
5331 given name is a network interface gave a real performance penalty on Linux,
5332 so now we more appropriately first check if it is an IP number and if so
5333 we don't check for a network interface with that name.
5335 - CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts
5336 to use EPRT and LPRT before the traditional PORT command. The command line
5337 tool sets this option with '--disable-eprt'.
5339 Version 7.10.5-pre2 (6 May 2003)
5342 - Kevin Delafield reported another case where we didn't correctly check for
5343 EAGAIN but only EWOULDBLOCK, which caused badness on HPUX.
5346 - Ben Greear noticed that the check for 'writable argv' exited the configure
5347 script when run for cross-compiling, which wasn't nice. Now it'll default to
5348 no and output a warning about the fact that it was not checked for.
5351 - Added test case 62 and fixed some more on the cookie sending with a custom
5355 - Andy Cedilnik fixed a few compiler warnings.
5357 - Made the "SSL read error: 5" error message more verbose, by adding code that
5358 queries the OpenSSL library to fill in the error buffer.
5361 - Added sys/select.h include in the curl/multi.h file, after having been
5362 reminded about this by Rich Gray.
5364 - I made each test set its own server requirements, thus abandoning the
5365 previous system where the test number implied what server(s) to use for a
5368 - David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so
5369 that libcurl now uses one CWD command for each path part. A bunch of test
5370 cases were fixed to work accordingly.
5374 A. Save domains in jars like Mozilla does. It means all domains set in
5375 Set-Cookie: headers are dot-prefixed.
5376 B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars
5377 (the second column).
5378 C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns
5379 both domains with too few dots or domains that are outside the currently
5380 operating server host's domain.
5381 D. Set the path part by default to the one used in the request, if none was
5382 set in the Set-Cookie line.
5384 To make item C really good, I also made libcurl notice custom Host: headers
5385 and extract the host name set in there and use that as the host name for the
5386 site we're getting the cookies from. This allows user to specify a site's
5387 IP-address, but still be able to receive and send its cookies properly if
5388 you provide a valid Host: name for the site.
5391 - Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine
5392 when using the multi interface (too).
5394 Version 7.10.5-pre1 (23 Apr 2003)
5397 - Upgraded to libtool 1.5.
5400 - Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly)
5401 return CURLE_OK no matter what happens.
5403 - Dan Fandrich fixed some gzip decompression bugs and flaws.
5406 - Fixed minor typo in man page, reported in the Debian bug tracker.
5409 - Fixed some FTP tests in the test suite that failed on my Solaris host, due
5410 to the config.h not being included before the system headers. When done that
5411 way, it did get a mixed sense of if big files are supported or not and then
5412 stat() and fstat() (as used in test case 505) got confused and failed to
5413 return a proper file size.
5415 - Formposting a file using a .html suffix is now properly set to Content-Type: text/html.
5418 - Fixed the SSL error handling to return proper SSL error messages again, they
5419 broke in 7.10.4. I also attempt to track down CA cert problems and then
5420 return the CURLE_SSL_CACERT error code.
5422 - The curl tool now intercepts the CURLE_SSL_CACERT error code and displays
5423 a fairly big and explanatory error message. Kevin Roth helped me out with
5427 - Nic Hines provided a second patch for gzip decompression, and fixed a bug
5428 when deflate or gzip contents were downloaded using chunked encoding.
5430 - Dan Fandrich made libcurl support automatic decompression of gzip contents
5431 (as an addition to the previous deflate support).
5433 - I made the CWD command during FTP session consider all 2xy codes to be OK
5437 - Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash
5438 after the host name, but still had "?" and parameters appended, as in
5439 "http://hostname.com?foobar=moo", were not properly parsed by libcurl.
5442 - Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as
5443 for HTTP. This then made -z work for ftp transfers too. Added test case 139
5444 and 140 for verifying this.
5446 - Getting the file date of an ftp file used the wrong time zone when
5447 displayed. It is supposedly always GMT. Added test case 141 for this.
5449 - Made the test suite's FTP server support MDTM.
5451 - The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs
5452 CURLINFO_HEADER_IN data as well. The most notable effect from this is that
5453 using curl -v, you get to see the incoming "headers" as well. This is
5454 perhaps most useful when doing ftp.
5457 - James Bursa fixed a flaw in the Content-Type extraction code, which missed
5458 the first letter if no space followed the colon.
5460 - Magnus Nilsson pointed out that share.c was missing in the MSVC project
5464 - Ryan Weaver provided a patch that makes the CA cert bundle not get installed
5465 anymore when 'configure --without-ssl' has been used.
5468 - Martijn Broenland found another cases where a server application didn't
5469 like the boundary string used by curl when doing a multi-part/formpost. We
5470 modified the boundary string to look like the one IE uses, as this is
5471 probably gonna make curl work with more applications.
5474 - Kevin Roth reported that a bunch of tests fails on cygwin. One set fails
5475 when using perl 5.8 (and they run fine with perl 5.6), and another set
5476 failed because of an artifact in the test suite's FTP server that I
5477 corrected. It turned out the FTP server code was still having a file opened
5478 while the main test script removed it and invoked the HTTP server that
5479 attempted to create the same file name of the file the FTP server kept open.
5480 This operation works fine on unix, but not on cygwin.
5482 Version 7.10.4 (2 Apr 2003)
5485 - Added test case 505 to exercise FTP upload with rename done with libcurl,
5486 and for that I had to extend the test suite's FTP server to deal with the
5487 RNFR and RNTO commands.
5490 - Even more SSL config check modifications after Richard's testing.
5492 Version 7.10.4-pre6 (31 Mar 2003)
5495 - More fixes for the SSL session ID cache checks when SSL configs are changed
5496 between connections. Based on tests and talks with Richard Bramante.
5498 - Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH.
5499 When enabled, it will prevent libcurl from limiting to which host it sends
5500 user+password to when following locations. By default, libcurl only sends
5501 name and password to the original host used in the first URL, but with this
5502 option set it will send the auth info to all hosts it follows location
5503 headers to. The new tool command line option for this is named
5504 "--location-trusted".
5506 - Frankie Fong reported a problem with libcurl if you re-used an easy handle
5507 with a proxy, and you first made a https:// connection to a host and then
5508 switched to a http:// one to the same host. libcurl would then wrongly re-use
5509 the same connection for it and fail to get the second URL properly
5512 - Dan Shearer's fix that makes curl complain if invoked with nothing but "curl
5516 - Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and
5517 I could fix the configure problems on redhat 8.1 and 9 in no time thanks to
5518 this. Thanks a bunch Bryan!
5521 - Renamed configure.in to configure.ac
5523 Version 7.10.4-pre5 (25 Mar 2003)
5526 - Richard Bramante provided a fix for a handle re-use problem seen when you
5527 change options on an SSL-enabled connection between requests. Previously,
5528 changing peer verification or host verification and similar things was not
5529 taken into account when a connection were checked for re-use and thus
5530 enabling stricter check between requests on a re-used connection made no
5531 difference and the connection would thus be used erroneously.
5534 - Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a
5535 certificate from Trustcenter that was a demo certificate only that was never
5536 intended to be part of a CA bundle.
5539 - Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
5540 Churchill filed one bug report each, both identifying problems with a second
5541 transfer when doing persistent transfers re-using a connection. Tim's one is
5542 #706624, labeled "Multiple uploads per handle fail" and Michael's #707003
5543 "Does not send Authorization: header when reusing connection". I could track
5544 both down to the same piece of logic and it turned out libcurl was not using
5545 new settings properly when re-using an existing connection. This concerned
5546 both uploading and downloading and involved exactly those pieces these two
5547 reports identified. This code has been this faulty since the day I
5548 introduced persistent connection support in libcurl, more than 2 years ago.
5550 Daniel (20 Mar 2003)
5551 - Five year anniversary. Today five years ago, the first ever curl release saw
5555 - Andy Cedilnik corrected flaws in some libcurl example-usage sources.
5558 - Juan F. Codagnone reported that the fix from March 2nd was incomplete.
5560 - Added code to the configure.in to check for select() argument types. I've
5561 not made any code use the results just yet though.
5564 - Gisle Vanem provided two patches to build better on Windows.
5566 - Adjusted the test suite code to better make sure that the server(s) required
5567 for a specific test is properly started before the test case is attempted.
5568 Many tests now run a lot faster than before.
5571 - Another configure.in adjustment made the configure detect functions properly
5575 - Philippe Raoult fixed pre4-compile quirks for FreeBSD.
5577 Version 7.10.4-pre4 (13 Mar 2003)
5580 - Added a backup-check for functions that aren't found by AC_CHECK_FUNCS()
5581 as I believe some checks on HPUX need this. At least some of the info given
5582 to us by Rick Jones seemed to indicate this.
5585 - Thomas Tonino found out that if you used the curl tool to do PUT operations
5586 as in 'curl www.foo.com/dir/ -T file' and the file name included for example
5587 space or other characters that don't belong in URLs, curl did not properly
5588 URL encode them before using them in the URL.
5590 - Added an option to configure called --enable-libgcc that simply adds -lgcc
5591 to the LIBS variable, as this seems to be a common problem.
5593 - I modified the configure.in file, so that the headers are now checked in an
5594 order of "viality". We must also make sure to use the "default headers"
5595 parameter to AC_CHECK_HEADERS() so that headers are checked with the proper
5596 prerequisites included (i.e all the major and generally important header
5597 files are included there by default). This might be what we need for various
5598 Sun, HP, AIX and Tru64 systems to behave good again on the header check
5601 - Rick Jones pointed out a few compiler warnings on HP-UX that I addressed.
5603 - I made the configure --help output nicer by using AC_HELP_STRING() a lot
5607 - Christophe Demory fixed the socket sending code to work better on HP-UX
5608 when sending data to a socket that would block. It then returns EAGAIN, not
5611 - Richard Gorton improved the seeding function for systems without a good
5612 and reliable random source.
5614 - Richard Gorton fixed a few warnings that popped up when you built curl
5615 using the Sun compiler on a 64bit SPARC platform.
5617 - Martin C. Martin fixed a case where a connect failure using the multi
5618 interface didn't produce a human readable error string.
5621 - Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version
5622 broke the build on numerous platforms. It seems that libtool 1.4.3 puts some
5623 requirements on what versions of the other tools (autoconf + automake) that
5624 I am not familiar with and thus I couldn't fulfill at this point.
5626 Yes, this is more than mildly frustrating.
5629 - Run libtoolize version 1.4.3.
5631 Version 7.10.4-pre3 (4 Mar 2003)
5634 - Added share.obj to the VC6 and Borland libcurl makefiles.
5636 - Troels Walsted Hansen found and investigated a problem with libcurl on AIX,
5637 presumably only on 4.3 or later. gethostbyname_r() is not returning data
5638 that is possible to "keep" and cache the way libcurl does. But instead these
5639 versions of AIX uses a gethostbyname() that works thread-safely we can
5640 instead use the ordinary gethostbyname() and our pack_hostent() approach to
5641 achieve what we want. The configure script now attempts to detect AIX 4.3 or
5642 later to adjust for this.
5645 - Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a
5646 POST and then back to a GET using the same easy handle.
5649 - Removed the strequal and strnequal defines from curl/curl.h header. They
5650 were never meant for the public header anyway. Philippe Raoult brought it
5653 - James Bursa fixed the RISC OS build.
5656 - Avery Fay pointed out the very misleading curl_multi_info_read man page, and
5657 I updated it to become more accurate.
5659 - Salvatore Sorrentino found a problem with FTP downloading that turned out to
5660 be his FTP server returning size zero (0 bytes) when SIZE was used on a file
5661 while being in BINARY mode. We now make a second check for the actual size
5662 by scanning the RETR reply anyway, even if the SIZE command returned 0.
5665 - Kyle Sallee reported a case where he would do a transfer that didn't update
5666 the progress meter properly. It turned out to be a case where libcurl would
5667 loop a little too eagerly in the transfer loop, which isn't really good for
5668 the APIs, especially not the multi API.
5670 Version 7.10.4-pre2 (24 Feb 2003)
5673 - Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher
5674 than 5 could cause a segfault.
5676 - I believe I fixed the 'Expect: 100-continue' behavior that has been broken
5677 for a while (I think since my change dated Dec 10 2002). When this header is
5678 used, libcurl should wait for a HTTP 100 (or timeout) before sending the
5682 - Matthew Clarke provided some info what to modify to make curl build
5683 flawlessly on AIX 3.2.5.
5685 - Martin C. Martin found and fixed a problem in the multi interface when
5686 running on Windows and trying to connect to a port without a listener.
5689 - Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the
5693 - Jean-Philippe added the first code that enables the 'share' system. This
5694 should now enable sharing of DNS data between two curl easy handles.
5696 - Incorporated Nico Baggus' fixes to again compile flawlessly on VMS.
5698 - James Bursa corrected a bad comment in the public include file curl/multi.h
5700 - Peter Forret reported one of those error:00000000 cases in libcurl again
5701 when connecting to a HTTPS site, and this time I did discover some oddities
5702 in how curl reports SSL errors back. It could miss showing the actual error.
5704 Version 7.10.4-pre1 (3 Feb 2003)
5707 - Removed things in the docs saying capath doesn't work on Windows, as Julian
5708 Noble told us it works fine.
5711 - Kevin Roth fixed the zlib build stuff in the Mingw32 makefile.
5714 - Kevin Roth found out that curl on Windows always checked for the CA cert
5715 bundle using the environment variable and the path scan, even though
5716 -k/--insecure was used.
5718 - Hamish Mackenzie pointed out that curl only did strict host name verifying
5719 if capath or cainfo was used. Now it'll always do it unless -k / --insecure
5722 - Pavel Cenek pointed out that the Content-Type extraction was done wrongly
5723 as the full string was not fetched. Added test case 57 to verify that curl
5727 - Jamie Wilkinson provided a patch that now makes curl attempt to clear out
5728 "sensitive" command line arguments so that they don't appear in ps outputs
5729 (only on platforms that allow writing to argv[]).
5731 - John McGowan found out that the DEBUGFUNCTION could be called with bad
5732 arguments and thus cause the --trace outputs to go wrong.
5734 - Removed all the emacs local variables from all files. Mats Lidell provided
5735 the new sample.emacs file (for a sample of what to include in your .emacs)
5736 and the curl-style.el that sets a better c-style for editing curl sources.
5738 - Dave Halbakken found a problem with FTP downloads that could accidently
5739 return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY
5743 - The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to
5747 - Bertrand Demiddelaer found and fixed a memory leak (the content-type string)
5748 when following locations.
5750 Daniel (22 Jan 2003)
5751 - Ian Wilkes and Legoff Vincent both independently provided fixes for making
5752 curl/multi.h work properly when compiled with a C++ compiler.
5754 Daniel (20 Jan 2003)
5755 - Fixed 'buildconf' to check version number of the required tools before
5756 they're actually used.
5758 - Wrote 'testcurl.sh', a script targeted for automatic and distributed curl
5759 tests on various platforms.
5761 - David Thiel pointed out that the .netrc file was not being dealt with
5762 properly anymore. I broke this in the password prompting "fix".
5764 - Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only
5765 on demand and thus we save 32KB in each curl handle that don't use that
5766 buffer. This need appeared when some people started using thousands of
5767 simultaneous curl handles... :-)
5769 Daniel (16 Jan 2003)
5770 - Markus Oberhumer fixed curl-config --cflags when the includedir was not
5773 - Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was
5776 Version 7.10.3 (14 Jan 2003)
5778 Daniel (10 Jan 2003)
5779 - Steve Oliphant pointed out that test case 105 did not work anymore and this
5780 was due to a missing fix for the password prompting.
5782 Version 7.10.3-pre6 (10 Jan 2003)
5785 - Bryan Kemp pointed out that curl -u could not provide a blank password
5786 without prompting the user. It can now. -u username: makes the password
5787 empty, while -u username makes curl prompt the user for a password.
5789 - Kjetil Jacobsen found a remaining connect problem in the multi interface on
5790 ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed
5793 - memanalyze.pl now reads a file name from the command line, and no longer
5794 takes the data on stdin as before.
5796 Version 7.10.3-pre5 (9 Jan 2003)
5799 - Fixed tests/memanalyze.pl to work with file names that contain colons (as on
5802 - Kjetil Jacobsen quickly pointed out that lib/share.h was missing...
5804 Version 7.10.3-pre4 (9 Jan 2003)
5807 - Updated lib/share.c quite a bit to match the design document at
5808 http://curl.haxx.se/dev/sharing.txt a lot more.
5810 I'll try to update the document soonish. share.c is still not actually used
5811 by libcurl, but the API is slowly getting there and we can start
5812 implementing code that takes advantage of this system.
5815 - Updated share stuff in curl/curl.h, including data types, structs and
5816 function prototypes. The corresponding files in lib/ were also modified
5817 of course to remain compilable. Based on input from Jean-Philippe and also
5818 to make it more in line with the design document.
5820 - Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in
5821 curl_escape() that would happen when realloc() returns NULL...
5823 - Matthew Blain provided feedback to make the --create-dirs stuff build
5824 properly on Windows.
5826 - Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out.
5829 - Philippe Raoult provided a patch that now makes libcurl properly support
5830 wildcard checks for certificate names.
5832 - Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other
5833 strings recognized as "HTTP 200" to allow http-like protocols to get
5834 downloaded fine by curl.
5836 - Now using autoconf 2.57 and automake 1.7.2
5838 - Doing "curl -I ftp://domain/non-existing-file" still outputed a date!
5839 Wayne Haigh reported.
5841 - The error message is now written properly with a newline in the --trace
5845 - Sterling Hughes fixed a possible bug: previously, if you called
5846 curl_easy_perform and then set the global dns cache, the global cache
5847 wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre.
5849 - Matthew Blain's fixed the VC6 libcurl makefile to include better debug data
5851 Daniel (27 Dec 2002)
5852 - Philippe Raoult reported a bug with HTTPS connections which I evidently
5853 added in my 19 dec fix. I corrected it.
5856 - Idea from the Debian latest patch: use AM_MAINTAINER_MODE in the configure
5857 script to make the default makefile less confusing "to the casual
5860 Version 7.10.3-pre3 (20 Dec)
5863 - Matthew Blain patched the Curl_base64_decode() function.
5865 - Evan Jordan reported in bug report #653022 that the SSL_read() usage was
5866 wrong, and it certainly was. It could lead to curl using too much CPU due to
5870 - As suggested by Margus Freudenthal, CURLE_HTTP_NOT_FOUND was renamed to
5871 CURLE_HTTP_RETURNED_ERROR since it is returned on any >= 400 code when
5872 CURLOPT_FAILONERROR is set.
5875 - Bug reported #651464, reported by Christopher Palmer, provided an example
5876 source code using the multi interface that hang when trying to connect to a
5877 proxy on a localhost port where no proxy was listening. This bug was not
5878 repeatable on libcurls that were IPv6-enabled.
5881 - Christopher Palmer also noticed what Vojtech Janota already was
5882 experiencing: The attempted name resolve fix for glibc 2.2.93 caused libcurl
5883 to crash when used on some older glibc versions. The problem is of course
5884 the silliness of the 2.2.93. I committed a fix that hopefully should make
5885 the binary run fine on either one of the versions, even though the solution
5886 is not as nice as I'd like it to be.
5889 - Bug report #651460 by Christopher R. Palmer showed that when using libcurl
5890 to for example go over a proxy on localhost, it would attempt to connect
5891 through the proxy TWICE.
5893 I added test case 503 with which I managed to repeat this problem and I
5894 fixed the code to not re-attempt any connects (which also made it a nicer
5895 fix for the #650941 bug mentioned below).
5897 The sws server was extended to deal with CONNECT in order to make test
5900 - Evan Jordan posted bug report #650989 about a memory leak in the public key
5901 retrieving code. He provided a suggested fix and I merely applied it!
5903 - Bug report #650941, posted by Christopher R. Palmer identified a problem
5904 with the multi interface and getting file:// URLs. This was now fixed and
5905 test case 502 was added to verify this.
5908 - Test case 500 and 501 are the first ever libcurl test cases that run.
5910 - Made "configure --enable-debug" cut off all -O* options to the compiler
5912 - Finally fixed the test suite's ftp server so that test case 402 doesn't
5913 cause the following test case to fail anymore!
5916 - CURL_MAX_WRITE_SIZE is now decreased to 16KB since it makes the Windows
5917 version perform uploads much faster!!! RBramante did lots of research on
5920 - Fixed the #include in curl/curl.h to include the other files outside the
5924 - Moved around and added more logic:
5926 First, POST data is never sent as part of the request headers in the http.c
5927 code. It is always sent the "normal" read callback then send() way. This now
5928 enables a plain HTTP POST to be sent chunked if we want to. This also
5929 reduces the risk of having very big POSTs causing problems.
5931 Further, sending off the initial HTTP request is not done using a loop
5932 anymore. If it wasn't all sent off in the first send(), the rest of the
5933 request is sent off in the normal transfer select() loop. This makes several
5934 things possible, but mainly it makes libcurl block less when used from the
5935 multi interface and it also reduces the risk of problems with issuing very
5939 - Moved the read callback pointer and data within the structs to a more
5940 suitable place. This in preparation for a better HTTP-request sending code
5941 without (a silly) loop.
5943 - The Dodds fix seems not to work.
5945 - Vojtech Janota tests proved that the resolve fix from oct 21st is not good
5946 enough since obviously older glibcs might return EAGAIN without this meaning
5947 that the buffer was too small.
5949 - [the other day] Made libcurl loop on recv() and send() now until done, and
5950 then get back to select(). Previously it went back to select() more often
5951 which really was a slight overhead. This was due to the reported performance
5952 problems on HTTP PUT on Windows. I couldn't see any notable difference on
5955 Version 7.10.3-pre2 (4 Dec 2002)
5958 - Lots of work with Malcolm Dodds made me add a temporary code fix that now
5959 shortens the timeout waiting for the 226 or 250 line after a completed
5962 If no data is received within 60 seconds, this is taken as a sign of a dead
5963 control connection and we bail out.
5966 - Ralph's bug report #644841 identified a problem in which curl returned a
5967 timeout error code when in fact the problem was not a timeout. The proper
5968 error should now be propagated better when they're detected in the FTP
5969 response reading function.
5971 - Updated the Borland Makefiles.
5974 - Nicolas Berloquin provided a patch that introduced --create-dirs to the
5975 command line tool. When used in combination with -o, it lets curl create
5976 [non-existing] directories used in -o, suitably used with #-combinations
5979 curl "www.images.com/{flowers,cities,parks,mountains}/pic_[1-100].jpg \
5980 -o "dir_#1/pic#2.jpg" --create-dirs
5984 Daniel (28 Nov 2002)
5985 - I visited Lars Nordgren and had a go with his problem, which lead me to
5986 implement this fix. If libcurl detects the added custom header
5987 "Transfer-Encoding: chunked", it will now enable a chunked transfer.
5989 Also, chunked transfer didn't quite work before but seems to do so now.
5991 - Kjetil Jacobsen pointed out that ./configure --disable-ipv6 --without-zlib
5992 didn't work on any platform...
5994 Daniel (26 Nov 2002)
5995 - Fixed a bad addrinfo free in the hostip.c code, hardly exposed anywhere
5997 - Dan Becker found and fixed a minor memory leak on persistent connnections
5998 using CURLOPT_USERPWD.
6000 Daniel (22 Nov 2002)
6001 - Based on Ralph Mitchell's excellent analysis I found a bug in the test suite
6002 web server (sws) which now lets test case 306 run fine even in combination
6003 with the other test cases.
6005 - Juan Ignacio Hervás found a crash in the verbose connect message that is
6006 used on persistent connections. This bug was added in 7.10.2 due to the
6007 rearranged name resolve code.
6009 Daniel (20 Nov 2002)
6010 - Kjetil Jacobsen provided a patch that introduces:
6012 CURLOPT_PRIVATE stores a private pointer in the curl handle.
6014 CURLINFO_PRIVATE retrieves the private pointer from the curl handle.
6016 - Karol Pietrzak pointed out how curl-config --cflags didn't output a good
6017 include dir so I've removed that for now.
6019 Version 7.10.2 (18 Nov 2002)
6021 Daniel (11 Nov 2002)
6022 - Dave Halbakken added curl_version_info to lib/libcurl.def to make libcurl
6023 properly build with MSVC on Windows.
6026 - Doing HTTP PUT without a specified file size now makes libcurl use
6027 Transfer-Encoding: chunked.
6030 - Bug report #634625 identified how curl returned timeout immediately when
6031 CURLOPT_CONNECTTIMEOUT was used and provided a fix.
6033 Version 7.10.2-pre4 (6 Nov 2002)
6036 - Lehel Bernadt found out and fixed. libcurl sent error message to the debug
6037 output when it stored the error message.
6039 - Avery Fay found some problems with the DNS cache (when the cache time was
6040 set to 0 we got a memory leak, but when the leak was fixed he got a crash
6041 when he used the CURLOPT_INTERFACE with that) that had me do some real
6042 restructuring so that we now have a reference counter in the dns cache
6043 entries to prevent an entry to get flushed while still actually in use.
6045 I also detected that we previously didn't update the time stamp when we
6046 extracted an entry from the cache so that must've been a reason for some
6047 very weird dns cache bugs.
6051 Daniel (31 Oct 2002)
6052 - Downgraded automake to 1.6.3 in an attempt to fix cygwin problems. (It
6053 turned out this didn't help though.)
6055 - Disable the DNS cache (by setting the timeout to 0) made libcurl leak
6056 memory. Avery Fay brought the example code that proved this.
6060 Daniel (28 Oct 2002)
6061 - Upgraded to autoconf 2.54 and automake 1.7 on the release-build host.
6063 - Kevin Roth made the command line tool check for a CURL_CA_BUNDLE environment
6064 variable (if --cacert isn't used) and if not set, the Windows version will
6065 check for a file named "curl-ca-bundle.crt" in the current directory or the
6066 directory where curl is located. That file is then used as CA root cert
6069 - Avery Fay pointed out that curl's configure scrip didn't get right if you
6070 used autoconf newer than 2.52. This was due to some badly quoted code.
6074 Daniel (23 Oct 2002)
6075 - Emiliano Ida confirmed that we now build properly with the Borland C++
6076 compiler too. We needed yet another fix for the ISO cpp check in the curl.h
6079 - Yet another fix was needed to get the HTTP download without headers to work.
6080 This time it was needed if the first "believed header" was read all in the
6081 first read. Test 306 has not run properly since the 11th october fix.
6083 Daniel (21 Oct 2002)
6084 - Zvi Har'El pointed out a problem with curl's name resolving on Redhat 8
6085 machines (running IPv6 disabled). Mats Lidell let me use an account on his
6086 machine and I could verify that gethostbyname_r() has been changed to return
6087 EAGAIN instead of ERANGE when the given buffer size is too small. This is
6090 - Albert Chin helped me get the -no-undefined option corrected in
6091 lib/Makefile.am since Cygwin builds want it there while Solaris builds don't
6092 want it present. Kevin Roth helped me try it out on cygwin.
6094 - Nikita Schmidt provided a bug fix for a FOLLOWLOCATION bug introduced when
6095 the ../ support got in (7.10.1).
6097 Daniel (18 Oct 2002)
6098 - Fabrizio Ammollo pointed out a remaining problem with FOLLOWLOCATION in
6099 the multi interface.
6101 Daniel (17 Oct 2002)
6102 - Richard Cooper's experimenting proved that -j (CURLOPT_COOKIESESSION) didn't
6103 work quite as supposed. You needed to set it *before* you use
6104 CURLOPT_COOKIEFILE, and we dont' want that kind of dependencies.
6106 Daniel (15 Oct 2002)
6107 - Andrés GarcÃa provided corrections for erratas in four libcurl man pages.
6109 Daniel (13 Oct 2002)
6110 - Starting now, we generate and include PDF versions of all the docs in the
6113 Daniel (12 Oct 2002)
6114 - Trying to connect to a host on a bad port number caused the multi interface
6115 to never return failure and it appeared to keep on trying forever (it just
6116 didn't do anything).
6118 Daniel (11 Oct 2002)
6119 - Downloading HTTP without headers didn't work 100%, some of the initial data
6120 got written twice. Kevin Roth reported.
6122 - Kevin Roth found out the "config file" parser in the client code could
6123 segfault, like if DOS newlines were used.
6125 Version 7.10.1 (11 Oct 2002)
6127 Daniel (10 Oct 2002)
6128 - Jeff Lawson fixed a few problems with connection re-use that remained when
6129 you set CURLOPT_PROXY to "".
6132 - Craig Davison found a terrible flaw and Cris Bailiff helped out in the
6133 search. Getting HTTP data from servers when the headers are split up in
6134 multiple reads, could cause junk data to get inserted among the saved
6135 headers. This only concerns HTTP(S) headers.
6138 - Vincent Penquerc'h gave us the good suggestion that when the ERRRORBUFFER
6139 is set internally, the error text is sent to the debug function as well.
6141 - I fixed the telnet code to timeout properly as the option tells it to. On
6142 non-windows platforms.
6145 - John Crow pointed out that libcurl-the-guide wasn't included in the release
6148 - Kevin Roth pointed out that make install didn't do right if build outside
6149 the source tree (ca-bundle wise).
6151 - FOLLOWLOCATION bugfix for the multi interface
6154 - Kevin Roth got problems with his cygwin build with -no-undefined was not
6155 present in lib/Makefile.am so I put it back in there again. The poor one who
6156 needs to remove it again must write a configure script to detect that need.
6158 - Ralph Mitchell pointed out that curl was a bit naive and didn't deal with ./
6159 or ../ stuff in the string passed back in a Location: header when following
6162 - Albert Chin helped me to work out a better configure.in check for zlib, and
6163 both --without-zlib and -with-zlib seem to work rather well right now.
6165 - Zvi Har'El improvied the OpenSSL ENGINE check in the configure script to
6166 become more accurate.
6169 - Detlef Schmier pointed out the lack of a --without-libz option to configure,
6172 Version 7.10 (1 Oct 2002)
6174 Daniel (30 Sep 2002)
6175 - Modified the curl_version_info() proto and returned struct once again, and
6176 updated the man page accordingly.
6178 - Cris Bailiff found out that the pre-releases crashed on name lookups on
6179 names such as "a:" or "baz:" (on Linux versions not being ipv6-enabled) due
6180 to some weird return codes from gethostbyname_r(). I'll blame the complete
6181 lack of docs in that department. Cris provided a fix, which I modified only
6184 Daniel (27 Sep 2002)
6185 - After a suggestion from Christian Kurz to Debian curl package maintainer
6186 Domenico Andreoli, I made it possible to override the proxy environment
6187 variables better. Now, by setting -x "" you can explicitly tell libcurl to
6188 not use a proxy, no matter whan the environment variables say.
6192 Daniel (26 Sep 2002)
6193 - Extended curl_version_info() more and wrote a man page for it.
6195 Daniel (25 Sep 2002)
6196 - libcurl could leak memory when downloading multiple files using http ranges,
6197 reported and fixed by Jean-Luc Guevel.
6199 - Walter J. Mack provided code and docs for the new curl_free() function that
6200 shall be used to free memory that is allocated by libcurl and returned back
6201 to the application, as curl_escape() and curl_unescape() do.
6203 - Yarram Sunil pointed out a flaw in the multi interface where a failed
6204 connection didn't close down properly and thus a second transfer using the
6207 - Andrés GarcÃa fixed a flaw that made (among other things) dict-fetches
6208 return a random value.
6210 Daniel (24 Sep 2002)
6211 - Wez Furlong brought his initial patch that introduced curl_version_info().
6212 We might need to tweak it somewhat before release.
6214 Daniel (20 Sep 2002)
6215 - Craig Markwardt fixed another Tru64 IP resolve problem.
6217 Daniel (19 Sep 2002)
6218 - Dolbneff A.V and Spiridonoff A.V made the file:// code work with resumes
6219 in the same style other code does.
6221 - Ilguiz Latypov fixed a flaw in the client code when fetching multiple URLs
6222 and -C - was used. The first file's resume position was then accidentally
6223 reused on all the other files too.
6225 Daniel (18 Sep 2002)
6226 - The curl_easy_setopt.3 man page was greatly modified and the options have
6227 now been grouped in logical groups so that it should be somewhat easier to
6228 read it and find things you search for.
6230 Daniel (13 Sep 2002)
6231 - Kevin Roth pinpointed a scary flaw in libcurl, when the HTTP server doesn't
6232 send any headers back, only raw content. Right, that is a violation of the
6233 standard but still happens at times and we need to deal with it. Test case
6234 306 was added to verify that we do right now.
6238 Daniel (11 Sep 2002)
6239 - Lukasz Czekierda found out that curl didn't send a correct HTTP Host: header
6240 when you specified the URL with an IPv6 IP-address.
6243 - Sven Neuhaus made --silent being acknowledged even when multiple URLs
6244 were used. It used to output "[1/2]: http://host/a.html.de --> a.html.d" etc
6245 even when told to shut up.
6248 - Updated all source code headers to use MIT-license references only, and
6249 point to the COPYING file and the http://curl.haxx.se/docs/copyright.html
6250 URL. I've cut out all references to MPL that I could find.
6252 - Corected the makefiles to not always use -lz when linking
6257 - James Gallagher added Content-Encoding support to libcurl so now curl and
6258 libcurl-using apps can request compressed contents using the 'deflate'
6259 method. See the special file lib/README.encoding for details.
6261 curl --compressed is now used to request compressed contents.
6263 curl-config --feature will include 'libz' if this feature was around when
6264 the library was built.
6266 Daniel (30 Aug 2002)
6267 - Applied an anonymous SOCKS5-proxy patch. Not properly working in all
6268 situations though, as all getaddrinfo()-using libcurls will fail on this.
6269 This is because of the somewhat naive way the current code tries to extract
6270 the IP address of the proxy.
6272 - Fixed up the SSL cert fixes from the other day even more after more inputs
6273 from Cris. Added three new SSL error codes to make the
6274 CURLE_SSL_CONNECT_ERROR slightly less overloaded.
6276 Daniel (27 Aug 2002)
6277 - After lots of talk with Tom Zerucha, Nick Gimbrone and Cris Bailiff I
6278 decided to talk the bold path and I now made libcurl do CA certificate
6279 verification by default. Thus library users need to explicitly turn this off
6280 if you want to connect to sites without proper checking. We also install a
6281 CA cert bundle on 'make install' now.
6283 The curl tool now requires the -k/--insecure option in order to allow
6284 connections and operations on SSL sites that aren't properly verified with
6285 -cafile or --capath.
6287 curl-config --ca displays the built-in path to the CA cert bundle.
6289 Daniel (26 Aug 2002)
6290 - Andrew Francis cleaned up some code that now compiles fine without the need
6291 for ugly MSVC pragmas.
6293 - Keith MacDonald found a minor bug in src/main.c that made it close stdin
6294 instead of the actual file handle. It shouldn't have resulted in much
6295 trouble as most operating systems close all file handles on process exit
6298 Daniel (22 Aug 2002)
6299 - Markus Oberhumer provided some documentation for his previously provided
6300 CURLOPT_NOSIGNAL fix.
6302 - Patched the lib/Makefile.am to hopefully no longer complain on undefined
6303 symbols that seemed to occur on builds with shared OpenSSL libraries on
6306 Daniel (20 Aug 2002)
6307 - Fixed compiler warnings on MSCV++ compiles. We're looking for help here:
6308 remove the pragmas from lib/config-win32.h and adjust the sources where
6309 the warnings occur. Hiding them with pragmas like this is not the correct
6310 way of dealing with compiler warnings.
6312 Daniel (13 Aug 2002)
6313 - Ulrich Zadow made the global include files in curl/* include themselves
6314 using "curl.h" instead of <curl/curl.h> which thus allows people to more
6315 freely decide how to include curl and how to setup their include paths.
6317 - Sterling Hughes added the curl_share* interface, somewhat as discussed
6320 - Jörn Hartroth pointed out that poll() was used in the pre1 source code and
6321 it isn't very portable, so now I check for it in the configure script and
6326 Daniel (12 Aug 2002)
6327 - Applied my initial take on making the multi stuff more asynchronous. Connects
6328 should now return back without "hanging" until it has connected for real.
6329 This should also be the case for FTP-PASV connects.
6332 - Applied Markus F.X.J. Oberhumer's patch that introduces CURLOPT_NOSIGNAL,
6333 which effectively prevents libcurl from doing anything that may cause
6334 signals to get sent. This is basicly for multi-threaded applications that
6335 now can use timeouts properly, without risking any signals to burst in and
6339 - Lukasz Czekierda reported that RFC2732-style literal IPv6 addresses didn't
6340 work. When did that code vanish? Anyway, it's back again now and seems to
6343 - Jonatan Lander found out that POSTing an empty string didn't work with the
6347 - Jörn Hartroth fixed the libcurl.def file to build the windows DLL with
6348 the multi interface enabled.
6351 - The ftp PORT command now uses a better default IP address, as it will
6352 extract and use the local IP address used by the control connection.
6354 - Modified the #include lines in curl/multi.h to work better on more
6357 Daniel (31 Jul 2002)
6358 - Attempted a fix for Ray DeGennaro's reported HP-UX host name resolve
6361 Daniel (30 Jul 2002)
6362 - Priya Ramakrishnan and Ryan Jones compiles curl/curl.h with a C++ compiler
6363 and don't get __STDC__ defined, which required us to extend the preprocessor
6364 check for the ## operator usage.
6366 - Correct the description for CURLOPT_PASSWDFUNCTION, if set to NULL the
6367 internal default function will be put back.
6369 - danfuzz at milk.com found out that libcurl badly assumed a space after
6370 'Set-Cookie:' so if it wasn't present, it caused the first letter of the
6371 cookie name to fall off!
6373 Daniel (29 Jul 2002)
6374 - The password prompt asking for user password used stdout and now uses
6375 stderr instead to better allow redirecting. It also leaked a fopen() file
6376 handle that is now fixed.
6378 Daniel (28 Jul 2002)
6379 - HAVE_SETVBUF was left out from src/main.c which made -N not work. Found out
6382 Daniel (26 Jun 2002)
6383 - Glen Nakamura solved a crash in the name resolving function for IP-only
6384 addresses on Alpha Linux (at least).
6386 - T. Bharath corrected the high resolution timer introduced in 7.9.8.
6388 Daniel (22 Jun 2002)
6389 - Andrés GarcÃa pointed out man page errors in curl_formadd.3. I fixed.
6391 Daniel (19 Jun 2002)
6392 - Chris Combes pointed out a flaw in curl_escape(). I fixed. We no longer
6393 tries to generate nor parse '+' in URLs. Spaces become %20, and only %-codes
6394 are translated by curl_unescape().
6396 Daniel (15 Jun 2002)
6397 - Added --limit-rate to the curl tool. Allows the user to set a maxmimum
6398 upper limit to how much bandwidth to use for transfers.
6400 - CURLOPT_BUFFERSIZE was added to libcurl. This sets a prefered size for the
6401 receive buffer in libcurl. The main point of this would be that the write
6402 callback gets called more often and with smaller chunks.
6404 Daniel (14 Jun 2002)
6405 - Yarram Sunil found out that the SocketIsDead() function performed a lot
6406 faster on Windows when removing the 1 microsecond timeout.
6408 - Hanno L. Kranzhoff fixed the VC++ project files.
6410 - Tom Mattison found out that ftp transfers closed the connection a little
6413 - Miklos Nemeth posted a VC++ makefile fix and some INSTALL comments on how
6414 to disable specific protocols when building for Windows.
6418 Daniel (13 Jun 2002)
6419 - Time to let this baby go.
6421 Daniel (12 Jun 2002)
6422 - Chris Combes added three new options for curl_formadd(): CURLFORM_BUFFER,
6423 CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH. They are used to create a
6424 multipart that appears as a regular file upload, but the data is provided
6425 with a pointer and length.
6427 - Nico Baggus made the VMS version use sigsetjmp() too.
6429 - Jörn Hartroth fixed the mingw32 build using the mm lib.
6431 - Applied patches by Kris Kennaway that correct format string problems in
6432 lib/ftp.c and lib/ldap.c.
6436 Daniel (11 Jun 2002)
6437 - James Cone brought the idea of using sigsetjmp() in the signal handler to
6438 make the time-out of name lookups to work, even when the underlying name
6439 resolver library traps EINTR. The use of sigsetjmp() and siglongjmp() for
6440 this may be a bit drastic, and also not likely to exist on all platforms. I
6441 added careful checking for this in the configure script, even checks for it
6442 being a macro (which seems to be the case in for example Linux).
6444 sigsetjmp() seems to be mentioned in the Single Unix specification.
6446 - Miklos Nemeth brought a patch that allows libcurl to get built with specific
6447 protocols disabled. This is done by running ./configure
6448 --disable-[protocol].
6450 - FTP range downloads could make CURLE_FTP_WRITE_ERROR get returned. We now
6451 make precautions to not return this for range downloads.
6453 Added test case 135 that makes an ftp range download. Had to tweak the
6454 runtests.pl script a bit too.
6456 - Bug report #566835 identified a strlen() on a NULL pointer. Added additional
6457 check to prevent this.
6459 Daniel (10 Jun 2002)
6460 - Found and corrected a connect failure problem that didn't create a human
6463 - Added code to compile with OpenSSL 0.9.7. Based on patch from Jacob Meuser
6464 and comments from Götz Babin-Ebell.
6466 - Gautam Mani found a socket descriptor leak that happened when FTP transfers
6467 failed and you reinvoked curl_easy_perform().
6470 - Gustaf Hui corrected curl_multi_remove_handle() so that it won't crash no
6471 matter when you decide to remove the CURL handle.
6473 - HAVE_RAND_STATUS was added to lib/config-win32.h by Andreas Olsson, as it
6474 makes windows builds stop complaining about "weak seeding" when it in fact
6477 - Another 64bit architecture crash that was introduced in 7.9.7 was now
6478 removed, as bug report #564585 clarified. This happened due to our attempts
6479 to only allocate only as much memory as is actually needed for name
6480 resolving (using realloc) which called for a function that could 'move' a
6481 hostent struct in memory.
6486 - T. Bharath fixed the CURLINFO_REDIRECT_TIME to return a correct time and
6487 made the CURLINFO_REQUEST_SIZE return the correct total request size. He
6488 also made the win32 timers use higher resolution than before.
6490 Daniel (29 May 2002)
6491 - Renaud Chaillat made me aware of the fact that libcurl returned an error if
6492 you tried to get an empty FTP file. This seemed like a wrong thing to do, so
6493 now it no longer does that! I just hope that no one built anything fancy
6494 upon this unexpected behavior...
6496 Daniel (28 May 2002)
6497 - Cris Bailiff brought CURLOPT_CAPATH that works like CURLOPT_CAINFO but
6498 specifies a path to a directory with certificates rather than a single file
6499 with them all concatenated. --capath was added to the command line tool
6500 for the same function.
6502 Windows users need to pay attention that the directory should be setup with
6503 the c_rehash tool of the OpenSSL package, and that creates symlinks by
6504 default that need to be replaced with actual copies to work on Windows.
6506 - Gustaf Hui provided new code that changes how curl_multi_info_read()
6507 messages are stored, so that they don't have to be kept around for the multi
6508 handle's entire life time. He also made it return failure codes properly
6509 which it didn't do before.
6511 Daniel (27 May 2002)
6512 - Gustaf Hui pointed out that running curl_multi_perform() without doing
6513 curl_multi_fdset() first was not really a working combo. I added an internal
6514 check for this and have some extra select() code without timeout to make the
6515 library internals work identically nevertheless. We might need to somehow
6516 either document that once you've used the *_fdset() you should remain using
6517 them in select() or you should blank them somehow so that libcurl won't go
6522 Daniel (22 May 2002)
6523 - James Cone brought an excellent patch, including several tests and docs!
6524 CURLOPT_NETRC now takes an enum as argument instead of the previous boolean.
6525 --netrc-optional was introduced as an addition to --netrc to allow the
6526 command line client to take use of all that new netrc stuff.
6528 - Bug report #558888 showed a case where libcurl re-used the previous host
6529 name when a connection over a proxy was re-used but to a different target
6532 Daniel (21 May 2002)
6533 - Edin Kadribasic helped me sort out a problem to made libcurl crash when
6534 trying to HTTP POST an empty string.
6536 - Clarified that Juergen Wilke donated the original tests/server/sws.c code.
6538 - Jean-Philippe Barrette-LaPierre made curl_formadd() return a typedef named
6539 CURLFORMcode instead of the previous 'int', and the various return codes are
6540 now globally exported. It allows applications to better figure out what goes
6541 wrong when curl_formadd() returns errors.
6543 Daniel (20 May 2002)
6544 - Roland Zimmermann pointed out that SSL_CTX_use_certificate_chain_file()
6545 is prefered to SSL_CTX_use_certificate_file().
6547 Daniel (17 May 2002)
6548 - Bug report #556869 pointed out that src/writeout.c didn't compile on freebsd
6549 after my AIX fixes the other week.
6551 - Bug report #556930 pointed out a FreeBSD core dump introduced in 7.9.7 in
6552 the DNS struct realloc stuff. Actually, this crash could happen on all
6553 systems that made the pack_hostent() function get invoked.
6555 - I removed several compiler warnings in the test suite's HTTP server.
6559 Daniel (10 May 2002)
6560 - Kevin Roth adjusted the --trace-ascii output slightly.
6562 - Paul Harrington found out that src/writeout.c needed an additional header
6563 file included for AIX builds
6568 - Updated the man page with --trace-ascii and -j/--junk-session-cookies.
6570 - Made --trace-ascii do pretty much the same as --trace but without the hex
6573 - Added CURLOPT_COOKIESESSION that when enabled makes libcurl ignore session
6574 cookies read from a file. This option is enforced by the curl command line
6575 tool using the new -j/--junk-session-cookies option. After discussions with
6576 Kevin Roth. This makes it easier to use curl to fully emulate a browser's
6577 behavior, even when it comes to "session cookies". Session cookies are
6578 cookies that a normal browser discards when the browser is shut
6579 down. They're identified by not having any expire date/time.
6581 - When CURLOPT_DEBUGDATA was set, it ruined the CURLOPT_STDERR setting and
6582 this was discovered when --trace was made to crash.
6584 - Using -v and --trace at the same time confused matters. -v is now pretty
6585 much ignored when --trace or --trace-ascii is used.
6587 - Made --trace (and --trace-ascii) support - as file name to pass output to
6588 stdout instead. It makes it consistent with how other options work.
6593 - Added multi-post.c to the examples directory. I got the basic source for
6594 this from Gustaf Hui.
6597 - CURL_MAX_WRITE_SIZE is now an exported #define in the curl/curl.h header and
6598 can be used to figure out the maximum buffer size your write callback can
6601 - CURLOPT_READDATA is now an alias for CURLOPT_INFILE and CURLOPT_WRITEDATE is
6602 an alias for CURLOPT_FILE. These two were added for conformity. Most other
6603 callback function's userdata are provided with options using a similar name-
6606 - Added "--trace [file]" to the command line tool. It makes a very detailed
6607 trace dump get stored, with a full protocol dump that includes all received
6608 and transmitted data. This could be a very effective tool for debugging what
6609 goes wrong. This dump includes every byte the way it is sent to/received
6610 from the server. The dump is the plain-text version, so SSL transfers will
6613 - I found out that the DEBUGFUNCTION was not called properly everywhere as we
6614 wanted it to. I fixed it.
6616 - -D now stores all headers to the same file if multiple URLs are given on the
6617 command line! Kevin Roth made me aware of that it didn't already do this!
6619 - Gustaf Hui wrote an excellent formpost example that used the multi
6620 interface. Unfortunately, it didn't work due to several bugs in how
6621 transfers were made when the multi interface was used.
6624 - Hanno Kranzhoff found out that when doing multiple transfers on the same
6625 easy handle, the progress meter would show a bad "currently downloaded
6626 value" when the transfer starts.
6629 - Applied another patch by Jacky Lam to make the name resolve info realloc()
6630 stuff work properly.
6632 Daniel (28 April 2002)
6633 - curl_multi_info_read() is now implemented!
6635 Daniel (27 April 2002)
6636 - Updated BUGS, TODO, FAQ, INSTALL and added BINDINGS.
6638 - I think I fixed the DNS cache prune crach Jacky Lam found and reported.
6640 - I cleaned up the name prefix stuff in the hash and llist modules.
6642 - FTP responses should now be better on timing out properly. The timeout value
6643 is maximum timeout for the entire request operation, but before this, the
6644 timeout was used as a maximum allowed time between two reads...
6646 Daniel (26 April 2002)
6647 - Fixed the test suite http server to not use snprintf() anymore due to better
6650 Daniel (25 April 2002)
6651 - With Sterling Hughes' new DNS pruning, Jacky Lam asked if this wouldn't
6652 cause problems since the pruning is only checking the entry time, and it
6653 sure could cause problems. Therefor, I've now added and changed code so that
6654 this should not be a problem. Nowhere in the code will be store name
6655 resolved information around so that a sunsequent DNS cache prune should
6656 cause a problem. This of course called for some mild internal changes.
6658 Daniel (23 April 2002)
6659 - Improved the 'no_proxy' check, as using port numbers in the URL confused it
6660 previously. Reported by Erwan Legrand in bug report #547484.
6662 - The --interface option now works even on IPv6 enabled builds. Reported by
6665 Daniel (22 April 2002)
6666 - The #defines names starting with TIMECOND now has CURL_ prefixes. (The old
6667 names are still #defined too.) Pointed out by Robert Olson.
6669 - Jacky Lam brought code that lets the name resolve function only use as much
6670 memory as it actually needs. This only works on certain operating systems,
6671 but is totally transparant to all users.
6673 Daniel (19 April 2002)
6674 - Bjorn Reese fixed pack_hostent to work properly with 64 bit pointers.
6676 Daniel (18 April 2002)
6677 - Sterling Hughes added code to prune old DNS cache entries, since Jacky Lam
6678 experienced very big caches.
6680 Daniel (17 April 2002)
6681 - Dirk Manske patched the 301 response to work against the RFC but more like
6682 common browsers do. If a POST get a 301 back, it'll switch to GET in the
6683 next request (if location-following is enabled).
6685 Daniel (16 April 2002)
6686 - Dirk Manske posted a patch originally written by Ingo Wilken that introduced
6687 two new CURLINFO_* values: CURLINFO_REDIRECT_TIME and
6688 CURLINFO_REDIRECT_COUNT.
6690 Daniel (15 April 2002)
6691 - Jonatan Lander patched the verbose text 'Disables POST, goes with GET' to
6692 reflect reality better, like when the first request isn't POST and when
6693 the second isn't GET... :-)
6695 - Craig Davison pointed out that when curl_formadd()ing a file that doesn't
6696 exist, libcurl doesn't return error. Now, curl_easy_perform() will return
6697 CURLE_READ_ERROR if that is the case. Test 41 was added to verify this.
6701 Daniel (14 April 2002)
6702 - Dirk Manske brought a fix that makes libcurl strip off white spaces from the
6703 beginning of cookie contents.
6705 - Had to patch include/curl/curl.h since MSVC doesn't set the __STDC__ define.
6706 Moonesamy pointed out the problem, Bjorn Reese the solution.
6710 Daniel (12 April 2002)
6711 - Fixed the TIMER_CONNECT to be more accurate for FTP transfers. Previously
6712 FTP transfers got the "connect done" time set after the initial FTP commands
6713 and not directly after the TCP/IP connect as it should.
6715 I also made the time stamp get set even if the connect itself fails, which
6716 it didn't do previously.
6718 - Jean-Philippe Barrette-LaPierre provided his patch that introduces
6719 CURLOPT_DEBUGFUNCTION and CURLOPT_DEBUGDATA. They allow a program to a set a
6720 callback to receive debug/information data. That includes headers and data
6721 that is received and sent. CURLOPT_VERBOSE still controls it.
6723 By default, there is an internal debugfunction that will make things look
6724 and work as before if not changed.
6726 Daniel (10 April 2002)
6727 - Sebastien Willemijns found out that -x didn't use the default port number as
6728 is documented. It does now.
6730 - libcurl-errors.3 is a new man page attempting to document all libcurl error
6733 - Added two new error codes and changed the behaviour of two old ones
6737 This error was returned *both* for errors that occured when writing
6738 received data to a local file, as well as when we get problems writing data
6739 to a remote server. CURLE_SEND_ERROR has now been added for the latter
6743 This error was similarly returned *both* for errors when reading a local
6744 file, as well as when getting problems when reading network data.
6745 CURLE_RECV_ERROR has now been added for the latter error.
6747 (Two test cases were adjusted accordingly.)
6749 Daniel (9 April 2002)
6750 - runtests.pl now sets the HOME variable before running curl, to prevent any
6751 actual ~/.curlrc file to fool the tests!
6755 Daniel (8 April 2002)
6756 - Michael Curtis provided new functionality for curl on some platforms. Using
6757 the --environment option, curl will *set* a bunch of environment variables
6758 to values. The names are the same ones as for the -w/--writeout option.
6760 For now, this only works on the RISC OS version, as this feature relies on
6761 both OS support and that it matches OS paradigms.
6763 - Jacky Lam provided a fix for getting headers-only when the reply is HTTP/1.0
6764 and 304, I edited it slightly.
6766 Daniel (5 April 2002)
6767 - As requested by Jay Graves, the '.curlrc' file (or _curlrc as it is called
6768 when used in windows), is now loaded from the current directory if the HOME
6769 environment variable isn't set (or if it is too long). I also enlarged the
6770 array used to store the full file path in, to 512 bytes.
6772 - Kevin Roth pointed out to me why the "19 March" change regarding -G and -I
6773 was stupid and the change was reverted. Added test case 48 to verify the
6778 Daniel (4 April 2002)
6779 - Jonatan Lander brought a patch that makes curl/curl.h compile nicely on
6780 pre-ISO compilers, like when using gcc -traditional.
6782 Daniel (3 April 2002)
6783 - Jacky Lam identified a glitch when getting headers-only, where libcurl would
6784 "hang" 1 second in vain in the select() loop before returning back.
6786 - Tor Arntsen brought a patch for multipart formposts. It turned out that the
6787 "CGI_Lite Perl package" makes some bad assumptions on what letters that may
6788 be used in boundary strings and thus curl could confuse it by including '+'
6789 and '/'. While this is standards-compliant, we change the behavior to work
6790 smoothly with existing software based on that package.
6792 Daniel (2 April 2002)
6793 - Gerhard Herre filed bug report #536238 where he pointed out a crash in
6794 verbose FTP passive transfers for AIX.
6796 - Clarence Gardner pointed out a minor flaw in how libcurl didn't properly
6797 take care of all errors that SSL_read() could return.
6799 - Jacky Lam fixed a MALLOCDEBUG problem in lib/getinfo.c
6801 Daniel (27 March 2002)
6802 - T. Bharath pointed out a flaw in the connection re-use function that didn't
6803 check proxy connections properly for "deadness" before they were re-used.
6805 - Pedro Neves found out that HTTP POSTing with --data-binary did not properly
6806 work under Windows as the file specified wasn't read fully binary!
6808 Daniel (25 March 2002)
6809 - Jacky Lam brought a fix that improves treatment of cookies using identical
6810 domains but with leading dots properly.
6812 Daniel (22 March 2002)
6813 - Miklos Nemeth updated the windows section of the docs/INSTALL file and the
6816 - Jon Dillon provided us with several good-looking curl images for
6817 promotion. View them here http://curl.haxx.se/icons.html
6819 Daniel (20 March 2002)
6820 - Peter Verhas found out that CRLF replacement in uploads was not working. I
6821 fixed it, and added test case 128 that verifies the functionality.
6823 - The list formerly known as curl-main is now named curl-users and is hosted
6824 by sourceforge. Susbcribe to the new list, get off the old one.
6828 Daniel (19 March 2002)
6829 - Made -G and -I on the same command line cause an error.
6831 - Moved the multi.h file to the "public" include directory and made it get
6832 included by curl.h so that no extra include files will be necessary to use
6835 Added docs and man pages for the multi interface to the release archive.
6836 Added the three example source codes too.
6838 Necessary steps in my campaign to sneak in the multi interface... ;-)
6840 - Updated the year in all copyright notices in all C and H files.
6842 Daniel (18 March 2002)
6843 - Tomas Szepe found out that -d and -G didn't mix as they should. I broke this
6844 in 7.9.5... Added test case 32 for this.
6848 Daniel (16 March 2002)
6849 - Peter Verhas pointed out that the curl_escape and curl_unscape man pages
6850 contained factual errors.
6852 - Albert Choy found and corrected a problem with the verbose output when doing
6853 PASV ftp transfers. It could make libcurl crash.
6855 Details in bug report #530562:
6856 http://sourceforge.net/tracker/?func=detail&atid=100976&aid=530562&group_id=976
6858 Daniel (15 March 2002)
6859 - Jun-ichiro itojun Hagino filed bug report #530204 that clearly pointed out
6860 the PF_INET fix from February 19 as a not-very-good fix as it broke IPv6
6861 capability! That patch is now reverted.
6863 The problem with slow name lookups with getaddrinfo() on non-IPv6 enabled
6864 hosts are instead made by first checking if the stack is IPv6-enabled and if
6865 not, the PF_INET is used and otherwise we go with the full PF_UNSPEC.
6867 - T. Bharath pointed out that when we return an "error" from a WRITEFUNCTION
6868 as described in the man page, libcurl did not return the documented error
6869 code (CURLE_WRITE_ERROR) but would instead return CURLE_READ_ERROR. This is
6872 Daniel (14 March 2002)
6873 - Setting CURLOPT_POST without setting CURLOPT_POSTFIELDS now read the POST-
6874 data from the callback.
6876 - The GOPHER support seems to be broken. I don't think I'll even start fixing
6877 it until someone else finds out... :-)
6879 Daniel (13 March 2002)
6880 - Trying 'curl -I ftp.sunet.se' or similar did a SIZE on a silly "(nil)"
6881 string. If such a file would be present, curl returned the size of it! Now
6884 - Curl_sendf() was fixed to deal with situation where Curl_write() would've
6885 blocked and thus return -1.
6887 - Setting CURLOPT_PROGRESSFUNCTION to NULL now restores the internal function.
6889 - All CURLFORM_* options can now be used in a CURLFORM_ARRAY except the
6890 CURLFORM_ARRAY itself. This was necessary since we couldn't expand the
6891 CURLFORM_* list proprely and unrestricted until this was the case. It was
6892 also a bit peculiar to users why some options could be used in an array
6893 while others couldn't.
6895 - Removed some silly CRLF lines that had accidentally slipped into src/main.c
6896 Nico Baggus pointed them out to me.
6898 Daniel (11 March 2002)
6899 - CURLFORM_FILENAME was added. This can be set when creating a file upload
6900 part, to set the 'filename' field to a custom value. If this isn't used,
6901 the actually used filename will be included instead (as libcurl always has
6902 done). curl was adjusted accordingly, and now -F accepts a 'filename=' field
6903 too, and allows constructs such as:
6905 -F 'name=@filename;filename=/dev/null'
6907 and this can be combined with type= too, in a manner similar to:
6909 -F "file=@log/test39.txt;filename=fakerfile;type=moo/foobar"
6911 Test case 39 was added to verify this functionality.
6913 - The struct formerly known as HttpPost is now named curl_httppost to properly
6914 use the curl name space. I added a #define for the old name to make existing
6915 programs compile even when this new include file is used.
6917 Daniel (8 March 2002)
6918 - Clifford also discovered that if the client code failed early, as when doing
6919 "curl -O" only, it would do fclose(NULL) which caused a segmentation fault
6922 - Clifford Wolf provided a patch that made --progress-bar work again.
6924 - I closed bug report #527032 by making sure that we add a newline after a
6925 transfer when --progress-bar has been used. Before, without the newline, it
6926 made the subsequent text come out wrong.
6930 Daniel (7 March 2002)
6931 - Added docs/KNOWN_BUGS to the release archive.
6933 Daniel (6 March 2002)
6934 - Kevin Roth corrected a flaw in the curl client globbing code that made it
6935 mess up backslashes. This was most notable on windows (cygwin) machines when
6938 - Brad provided another fix for building outside the source-tree.
6940 - Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
6942 Daniel (5 March 2002)
6943 - I noticed that the typedef in curl.h for the progress callback prototype was
6944 wrong and thus applications that used it would not get the proper input
6945 data. It used size_t where the implementation actually uses doubles!
6947 I wish I could blame someone else, but this was my fault. Again.
6951 Daniel (4 March 2002)
6952 - Cut off the changes done during 2001 from this changelog file and put them
6953 in a separate file (CHANGES.2001), available from CVS of course.
6955 - I removed the multi directory. The example sources were moved to the
6956 docs/examples directory where they belong.
6958 - Wrote 7 new man pages for the current functions in the new multi interface.
6959 They're all still pretty basic, but we can use them as a start and add more
6960 contents to them when we figure out what to write. The large amount of man
6961 pages for libcurl now present made me decide to put them in a new separate
6962 subdirectory in the docs directory. Named libcurl.
6964 - Giuseppe Corbelli provided a template file for the EPM package manager, it
6965 gets generated nicely by the configure script now.
6969 Daniel (1 March 2002)
6970 - Moved the memanalyze.pl script into the tests/ dir and added it to the
6971 release archives. It was previously only present in the CVS tree.
6973 - Modified the February 17th Host: fix, as bug report #523718 pointed out that
6976 - Nico Baggus added more error codes to the VMS stuff.
6978 - Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
6979 option. It is just another FTP quote option that allows the user to specify
6980 a list of FTP commands to issue *just before* the transfer command (RETR or
6981 STOR etc). It has turned up a few systems that really need this.
6983 The curl command line tool can also take advantage of this by prefixing the
6984 quote commands with a plus (+) in similar style that post transfer quote
6985 commands are specified.
6987 This is not yet documented. There is no test case for this yet.
6989 Daniel (28 February 2002)
6990 - Ralph Mitchell made some serious efforts and put a lot of sweat in setting
6991 up scripts and things for me to be able to repeat his problems, and I
6992 finally could. I found a problem with the header byte counter that wasn't
6993 increased properly and thus we could return CURLE_GOT_NOTHING when we in
6994 fact had received data.
6996 Daniel (27 February 2002)
6997 - I had to revert the non-space parsing cookie fix I posted to the mailing
6998 list. Expire dates do have spaces and still need to get parsed properly!
6999 Instead we just ignore trailing white space and it seems to work...
7001 Daniel (26 February 2002)
7002 - Made the cookie property 'Max-Age' work, just since we already tried to
7003 support it, it is better to do it right. No one uses this anyway.
7005 - The cookie parser could crash if a really weird (illegal) cookie line was
7006 received. I also made it better discard really oddly formatted lines better.
7008 Made the cookie jar store the second field from the left using the syntax
7009 that Netscape and Mozilla probably like. Curl itself ignores it.
7011 Added test case 31 for these cases.
7013 Clay Loveless' email regarding some cookie issues started my cleanup.
7015 - Kevin Roth pointed out that my automake fiddles broke the ability to build
7016 outside the source-tree and I posted a patch to the mailing list that brings
7021 Daniel (25 February 2002)
7022 - Fiddled with the automake files to make all source files in the lib
7023 directory not have ../src in the include path, and the src sources shouldn't
7026 - All 79 test cases ran OK under Linux and Solaris using the new HTTP server
7027 in the test suite. The new HTTP server was first donated by Georg Horn and
7028 subsequently modified to work with the test suite. It is currently still not
7029 portable enough to run on "all over" but this is a start and I can run all
7030 curl tests on my machines. This is an important requirement for the upcoming
7033 - Using -d and -I on the same command line now reports an error, as it implies
7034 two different HTTP requests that can't be mixed.
7036 - Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
7037 support %{content_type} to get the content type of the recent download.
7039 - Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
7040 and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
7041 out if we could include winsock.h which turns out not to be a wise choice to
7042 do on cygwin since it has the file but can't include it!
7044 Daniel (22 February 2002)
7045 - Added src/config-vms.h to the release archive.
7047 - Fixed the connection timeout value again, the change from February 18 wasn't
7052 Daniel (21 February 2002)
7053 - Kevin Roth and Andrés GarcÃa both found out that lib/config.h.in was missing
7054 in the pre-release archive and thus the configure script failed.
7058 Daniel (20 February 2002)
7059 - Andrés GarcÃa provided a solution to bug report #515228. the total time
7060 counter was not set correctly when -I was used during some conditions (all
7061 headers were read in one single read).
7063 - Nico Baggus provided a huge patch with minor tweaks all over to make curl
7064 compile nicely on VMS.
7066 Daniel (19 February 2002)
7067 - Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
7068 getaddrinfo() calls, he could speed up some name resolving calls with an
7069 order of magnitudes on his Redhat Linux 7.2.
7071 - Philip Gladstone found a second INADDR_NONE problem where we used long
7072 intead of in_addr_t which caused 64bit problemos. We really shouldn't define
7073 that on two different places.
7075 Daniel (18 February 2002)
7076 - Philip Gladstone found a problem in how HTTP requests were sent if the
7077 request couldn't be sent all at once.
7079 - Emil found and corrected a bad connection timeout comparison that made curl
7080 use the longest of connect-timeout and timout as a timeout value, instead of
7081 the shortest as it was supposed to!
7083 - Aron Roberts provided updated information about LDAP URL syntax to go into
7084 the manual as a replacement for the old references.
7086 Daniel (17 February 2002)
7087 - Philip Gladstone pointed out two missing include files that made curl core
7088 dump on 64bit architectures. We need to pay more attention on these details.
7089 It is *lethal* to for example forget the malloc() prototype, as 'int' is
7090 32bit and malloc() must return a 64bit pointer on these platforms.
7092 - Giaslas Georgios fixed a problem with Host: headers on repeated requests on
7093 the same handle using a proxy.
7095 Daniel (8 February 2002)
7096 - Hanno L. Kranzhoff accurately found out that disabling the Expect: header
7097 when doing multipart formposts didn't work very well. It disabled other
7098 parts of the request header too, resulting in a broken header. When I fixed
7099 this, I also noticed that the Content-Type wasn't possible to disable. It is
7100 now, even though it probably is really stupid to try to do this (because of
7101 the boundary string that is included in the internally generated header,
7102 used as form part separator.)
7104 Daniel (7 February 2002)
7105 - I moved the config*.h files from the root directory to the lib/ directory.
7107 - I've added the new test suite HTTP server to the CVS repository, It seems to
7108 work pretty good now, but we must make it get used by the test scripts
7109 properly and then we need to make sure that it compiles, builds and runs on
7110 most operating systems.
7114 Daniel (6 February 2002)
7115 - Miklos Nemeth provided updated windows makefiles and INSTALL docs.
7117 - Mr Larry Fahnoe found a problem with formposts and I managed to track down
7118 and patch this bug. This was actually two bugs, as the posted size was also
7119 said to be two bytes too large.
7121 - Brent Beardsley found out and brought a correction for the
7122 CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
7123 accidentaly broke Giaslas Georgios' patch.
7125 Daniel (5 February 2002)
7126 - Kevin Roth found yet another SSL download problem.
7130 - no changes since pre-release
7134 Daniel (3 February 2002)
7135 - Eric Melville provided a few spelling corrections in the curl man page.
7137 Daniel (1 February 2002)
7138 - Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
7139 uses gmtime_r() on all hosts that have it.
7141 Daniel (31 January 2002)
7142 - An anonymous bug report identified a problem in the DNS caching which made it
7143 sometimes allocate one byte too little to store the cache entry in. This
7144 happened when the port number started with 1!
7146 - Albert Chin provided a patch that improves the gethostbyname_r() configure
7147 check on HP-UX 11.00.
7151 Daniel (30 January 2002)
7152 - Georg Horn found another way the SSL reading failed due to the non-blocking
7153 state of the sockets! I fixed.
7155 Daniel (29 January 2002)
7156 - Multipart formposts now send the full request properly, including the CRLF.
7157 They were previously treated as part of the post data.
7159 - The upload byte counter bugged.
7161 - T. Bharath pointed out that we seed SSL on every connect, which is a time-
7162 consuming operation that should only be needed to do once. We patched
7163 libcurl to now only seed on the first connect when unseeded. The seeded
7164 status is global so it'll now only happen once during a program's life time.
7166 If the random_file or egdsocket is set, the seed will be re-made though.
7168 - Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
7169 curl_easy_getinfo() read the content-type from the previous request.
7171 Daniel (28 January 2002)
7172 - Kjetil Jacobsen found a way to crash curl and after much debugging, it
7173 turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
7176 - Andreas Damm posted a huge patch that made the curl_getdate() function fully
7179 - Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
7180 CURLOPT_POSTFIELDS. You can now!
7182 Daniel (25 January 2002)
7183 - Krishnendu Majumdar pointed out that the header length counter was not reset
7184 between multiple requests on the same handle.
7186 - Pedro Neves rightfully questioned why curl always append \r\n to the data
7187 that is sent in HTTP POST requests. Unfortunately, this broke the test suite
7188 as the test HTTP server is lame enough not to deal with this... :-O
7190 - Following Location: headers when the connection didn't close didn't work as
7191 libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
7192 the restructured internals. 'Frank' posted a bug report about this.
7194 Daniel (24 January 2002)
7195 - Kevin Roth very quickly spotted that we wrongly installed the example
7196 programs that were built in the multi directory, when 'make install' was
7201 Daniel (23 January 2002)
7202 - Andrés GarcÃa found a persistancy problem when doing HTTP HEAD, that made
7203 curl "hang" until the connection was closed by the server. This problem has
7204 been introduced in 7.9.3 due to internal rewrites, this was not present in
7209 Daniel (19 January 2002)
7210 - Antonio filed bug report #505514 and provided a fix! When doing multipart
7211 formposts, libcurl would include an error text in the actual post if a
7212 specified file wasn't found. This is not libcurl's job. Instead we add an
7215 Daniel (18 January 2002)
7216 - Played around with stricter compiler warnings for gcc (when ./configure
7217 --enable-debug is used) and changed some minor things to stop the warnings.
7219 - Commented out the 'long long' and 'long double' checks in configure.in, as
7220 we don't currently use them anyway and the code in lib/mprintf.c that use
7221 them causes warnings.
7223 - Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
7224 to correct them. Two compiler warnings were removed as well.
7226 - Andrés GarcÃa fixed two minor mingw32 building problems.
7230 Daniel (17 January 2002)
7231 - docs/libcurl-the-guide is a new tutorial for our libcurl programming
7234 - Richard Archer brought back the ability to compile and build with OpenSSL
7235 versions before 0.9.5.
7236 [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
7238 - The DNS cache code didn't take the port number into account, which made it
7239 work rather bad on IPv6-enabled hosts (especially when doing passive
7240 FTP). Sterling fixed it.
7242 Daniel (16 January 2002)
7243 - Georg Horn could make a transfer time-out without error text. I found it and
7246 - SSL writes didn't work, they return an uninitialized value that caused
7247 havoc all over. Georg Horn experienced this.
7249 - Kevin Roth patched the curl_version() function to use the proper OpenSSL
7250 function for version information. This way, curl will report the version of
7251 the SSL library actually running right now, not the one that had its headers
7252 installed when libcurl was built. Mainly intersting when running with shared
7257 Daniel (16 January 2002)
7258 - Mofied the main transfer loop and related stuff to deal with non-blocking
7259 sockets in the upload section. While doing this, I've now separated the
7260 connection oriented buffers to have one for downloads and one for uploads
7261 (as two can happen simultaneously). I also shrunk the buffers to 20K
7262 each. As we have a scratch buffer twice the size of the upload buffer, we
7263 arrived at 80K for buffers compared with the previous 150K.
7265 - Added the --cc option to curl-config command as it enables so very cool
7266 one-liners. Have a go a this one, building the simple.c example:
7268 $ `curl-config --cc --cflags --libs` -o example simple.c
7270 Daniel (14 January 2002)
7271 - I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
7272 only need to address all writes (send) too and then I'm ready for another
7275 - Stoned Elipot patched the in_addr_t configure test to make it work better on
7278 Daniel (9 January 2002)
7279 - Cris Bailiff found out that filling up curl's SSL session cache caused a
7282 - Posted the curl questionnaire on the web site. If you haven't posted your
7283 opinions there yet, go there and do it now while it is still there:
7285 http://curl.haxx.se/q/
7287 - Georg Horn quickly found out that the SSL reading no longer worked as
7288 supposed since the switch to non-blocking sockets. I've made a quick patch
7289 (for reading only) but we should improve it even further.
7293 Daniel (7 January 2002)
7294 - I made the 'bool' typedef use an "unsigned char". It makes it the same on
7295 all platforms, no matter what the platform thinks the default format for
7296 char is. This was noticed since we made a silly comparison involving such a
7297 bool variable, and only one compiler/platform combination (on Debian Linux)
7298 complained about it (that happened to have its char unsigned by default).
7300 - Bug report #495290 identified a cookie parsing problem that was corrected.
7301 When a Set-Cookie: line is received without a trailing semicolon, libcurl
7302 didn't read the last "name=value" pair of the line, leading to confusions...
7304 - Sterling committed his updated DNS cache code.
7306 - I worked with Georg Horn and comments from Götz Babin-Ebell and switched
7307 curl's socket operations completely over to non-blocking for the entire
7308 operation (previously we used non-blocking only for the connection phase).
7309 We had to do this to make the SSL connection phase timeout properly without
7310 the use of signals. A little extra code to deal with this was added.
7312 - T. Bharath pointed out a slightly obscure cookie engine flaw.
7314 - Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
7315 204-replies never provides a response-body. This resulted in bad persistant
7316 behavior when 204 was received.
7318 Daniel (5 January 2002)
7319 - SM updated the VC++ library Makefiles for the new source files.
7321 Daniel (4 January 2002)
7322 - I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
7323 two places in the source code). One happened with VERBOSE set on connects,
7324 and the other when VERBOSE was on and krb4 over nat was used... I honestly
7325 don't think anyone has suffered from these mistakes.
7327 - I replaced a lot of silly occurances of printf() to instead use the more
7328 appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
7331 - Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
7332 sparc on solaris 8).
7334 - After discussions on the libcurl list with Raoul Cridlig, I just made FTP
7335 response lines get passed to the header callback if such a one is
7336 registered. It'll make it possible for any application to get all the
7337 responses an FTP server sends to libcurl.
7339 Daniel (3 January 2002)
7340 - Sterling Hughes brought a few buckets of code. Now, libcurl will
7341 automatically cache DNS lookups and re-use the previous results first if any
7342 such is available. It greatly improves speed when doing many repeated
7343 operations to the same host.
7345 - As the test case uses --include and then --head, I had to modify src/main.c
7346 to deal with this situation slightly better than previously. When done, we
7347 have 100% good tests again in the main branch.
7349 Daniel (2 January 2002)
7350 - Made test case 25 run again in the multi-dev branch. But it seems that the
7351 changes done on dec-20 made test case 104 cease to work (in both branches).
7353 - Philip Gladstone pointed out a few portability problems in the source code
7354 that didn't compile on 64-bit sparcs using Sun's native compiler.
7355 Daniel (20 December 2001)
7356 - Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
7357 libcurl to hang on transfers over proxy, when the proxy was specified with
7358 an environment variable!
7360 - Added code to make ftp operations treat the NO_BODY and HEADERS options
7363 NO_BODY set TRUE and HEADERS set TRUE:
7364 Return a set of headers with file info
7367 Transfer data as usual, HEADERS is ignored
7369 NO_BODY set TRUE and HEADERS set FALSE
7370 Don't transfer any data, don't return any headers. Just perform the set
7373 Daniel (17 December 2001)
7374 - Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
7375 made libcurl support it! This allows libcurl to do SSL connections with the
7376 private key stored in external hardware.
7378 To make this good, he had to add a bunch of new library options that'll be
7379 useful to others as well:
7381 CURLOPT_SSLCERTTYPE set SSL cert type (PEM/DER)
7382 CURLOPT_SSLKEY set SSL private key (file)
7383 CURLOPT_SSLKEYTYPE: set SSL key type (PEM/DER/ENG)
7384 CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
7385 (CURLOPT_SSLCERTPASSWD is an alias)
7386 CURLOPT_SSLENGINE: set the name of the crypto engine
7387 (returns CURLE_SSL_ENGINE_NOTFOUND on error)
7388 CURLOPT_SSLENGINE_DEFAULT: set the default engine
7390 There are two new failure codes:
7392 CURLE_SSL_ENGINE_NOTFOUND
7393 CURLE_SSL_ENGINE_SETFAILED
7395 Daniel (14 December 2001)
7396 - We have "branched" the source-tree at a few places. Checkout the CVS sources
7397 with the 'multi-dev' label to get the latest multi interface development
7398 tree. The idea is to only branch affected files and to restrict the branch
7399 to the v8 multi interface development only.
7401 *NOTE* that if we get bug reports and patches etc, we might need to apply
7402 them in both branches!
7404 The multi-dev branch is what we are gonna use as main branch in the future
7405 if it turns out successful. Thus, we must maintain both now in case we need
7406 them. The current main branch will be used if we want to release a 7.9.3 or
7407 perhaps a 7.10 release before version 8. Which is very likely.
7409 - Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
7410 curl_formadd(), that lets an application add a set of headers for that
7411 particular part in a multipart/form-post. He also provided a section to the
7412 man page that describes the new option.
7414 Daniel (11 December 2001)
7415 - Ben Greear made me aware of the fact that the Curl_failf() usage internally
7416 was a bit sloppy with adding newlines or not to the error messages. Let's
7417 once and for all say that they do not belong there!
7419 - When uploading files with -T to give a local file name, and you end the URL
7420 with a slash to have the local file name used remote too, we now no longer
7421 use the local directory as well. Only the file part of the -T file name
7422 will be appended to the right of the slash in the URL.
7424 Daniel (7 December 2001)
7425 - Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
7426 link failed. Added a configure check and corrected source code.
7430 Daniel (5 December 2001)
7431 - Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
7432 on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
7433 His suggested fix was perfect.
7435 Daniel (4 December 2001)
7436 - Incorporated more macos fixes and added four specific files in a new
7437 subdirectory below src.
7439 Daniel (3 December 2001)
7440 - Eric Lavigne reported two problems:
7442 First one in the curl_strnequal() function. I think this problem is rather
7443 macos 9 specific, as most platform provides a function to use instead of the
7444 one provided by libcurl.
7446 A second, more important, was in the way we take care of FTP responses. The
7447 code would read a large chunk of data and search for the end-of-response
7448 line within that chunk. When found, it would just skip the rest of the
7449 data. However, when the network connections are special, or perhaps the
7450 server is, we could actually get more than one response in that chunk of
7451 data so that when the next invoke to this function was done, the response
7452 had already been read and thrown away. Now, we cache the data not used in
7453 one call, as it could be useful in the subsequent call. Test case 126 was
7454 added and the test ftp server modified, to exercise this particular case.
7458 Daniel (2 December 2001)
7459 - Bug report #487825 correctly identified a problem when using a proxy and
7460 following a redirection from HTTP to HTTPS. libcurl then re-used the same
7461 proxy connection but without doing a proper HTTPS request.
7463 - Fixed win32 compiling quirks.
7467 Daniel (30 November 2001)
7468 - Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.
7470 Daniel (29 November 2001)
7471 - Added --disable-epsv as an option. When used, curl won't attempt to use the
7472 EPSV command when doing passive FTP downloads. Wrote a test case for it.
7474 - Eric provided a few more fixes for building on Macs. He also pointed out
7475 a flaw in the signal handler restoration code.
7477 Daniel (28 November 2001)
7478 - Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
7479 only when using VERBOSE ftp transfers. Do we use a too small buffer for
7480 gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
7481 hostent struct must be blanked before use? With Dimitris help and these
7482 patches, the problems seem to be history.
7484 - CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
7485 from using the EPSV command before trying the normal PASV. Heikki Korpela
7486 pointed out that some firewalls and similar don't like the EPSV so we must
7487 be able to shut if off to work everywhere.
7489 - I added a configure check for 'in_addr_t' and made the ftp code use that to
7490 receive the inet_addr() return code in. Works on Solaris and Linux at
7491 least. The Linux man page for inet_addr() doesn't even mention in_addr_t...
7493 - Adjusted (almost) all FTP tests to the new command sequence.
7495 - FTP command sequence changes:
7497 EPSV is now always attempted before PASV. It is the final touch to make IPv6
7498 passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
7499 fine with IPv4 too on the servers that support it.
7501 SIZE is now always issued before RETR. It makes curl know the actual
7502 download size before the download takes place, as it makes it less important
7503 to find the size sent in RETR responses. Many sites don't include the size
7506 Both these changes made it necessary to change the test suite's ftp server
7507 code, and all FTP test cases need to be checked and adjusted!
7509 Daniel (27 November 2001)
7510 - Hans Steegers pointed out that the telnet code read from stdout, not stdin
7511 as it is supposed to do!
7515 Daniel (27 November 2001)
7516 - Eric Lavigne's minor changes to build on MacOS before OS X were applied.
7518 - greep at mindspring.com provided a main index.html page for our release
7519 archive docs directory. It just links to all the existing HTML files, but
7520 I think it may come useful to people.
7522 - There's now some initial code to support the EPSV FTP command. That should
7523 be used to do passive transfers IPv6-style. The code is still #if 0'ed in
7524 lib/ftp.c as I have no IPv6 ftp server to test this with.
7526 Daniel (26 November 2001)
7527 - Robert Schlabbach had problems to understand how to do resumed transfers,
7528 and I clarified the man page -C section somewhat.
7532 Daniel (22 November 2001)
7533 - Andrés GarcÃa helped me out to track down the roots of bug report #479537,
7534 which was concerning curl returning the wrong error code when failing to
7535 connect. This didn't happen on all systems, and more specificly I've so far
7536 only seen this happen on IPv4-only Linux hosts.
7538 - I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
7539 port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
7540 response reader function. The latter write is however likely to occur in our
7541 own buffer unless very big FTP server replies (>25K) are read. I've never
7542 seen such a reply ever, so I think this is a relatively minor risk.
7544 Daniel (21 November 2001)
7545 - Moonesamy provided code to prevent junk from being output when libcurl
7546 returns an error code but no error description and that corrects how make is
7547 run in the Makefile.dist file (that appears as root Makefile in release
7550 - Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
7553 - Kevin Roth modified the cygwin files once again, now to build against the
7554 shared OpenSSL DLLs.
7558 Daniel (20 November 2001)
7559 - Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
7560 complete with man page updates!
7562 Daniel (19 November 2001)
7563 - Miklos Nemeth provided details enough to update the Borland makefile
7566 - Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
7567 amazed we never saw this before!
7569 - Kevin Roth patched the cygwin Makfile.
7571 Daniel (16 November 2001)
7572 - Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
7577 Daniel (14 November 2001)
7578 - Samuel Listopad patched away the problem with SSL we got when someone call
7579 curl_global_init() => curl_global_cleanup() => curl_global_init(). The
7580 second init would not "take" and SSL would be unusable with curl from that
7581 point. This doesn't change the fact that calling the functions that way is
7582 wrong. curl_global_init() should be called exactly once and not more.
7584 Daniel (13 November 2001)
7585 - Fixed some minor variable type mixups in ftp.c that caused compiler warnings
7588 - The FTP fix I did yesterday used an uninitialized variable that caused
7589 spurious errors when doing FTP.
7593 Daniel (12 November 2001)
7594 - Ricardo Cadime fell over a multiple-requests problem when first a FTP
7595 directory fetch failed and then a second request is made after that. The
7596 second request happened to get the FTP server response back from the
7597 previous request, when it did its initial CWD command.
7599 - Bjorn Reese pointed out that we could improve the time diff function to
7600 prevent truncation a bit.
7602 - Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
7603 work for plain HTTP requests! So I made that work.
7607 Daniel (12 November 2001)
7608 - Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
7609 faster, it should also support such ("broken") proxies that John Lask
7610 previously have reported problems with. His proxy sends a trailing zero byte
7611 after the end of the (proxy-) headers. I've tested this myself and it seems
7612 to work on a proxy the previous version also worked with...! This rewrite is
7613 due to the problems John Lask previously experienced.
7615 - Andrés GarcÃa found out why the "current speed" meter sometimes showed 2048K
7616 for very quick transfers. It turned out the "time diff"-function returned a
7617 zero millisecond diff. We now always say it is at least one millisecond! In
7618 reality, these timers very rarely have that good resolution so even though
7619 the time diff was longer than 1 millisecond, it was reported as no diff.
7621 - I also modified the getinfo() again when returning times, as Paul Harrington
7622 reports that 7.9.1 only returns times with 1 second accuracy, which indeed
7625 Daniel (8 November 2001)
7626 - Marcus Webster found out that curl_formadd() could read one byte outside a
7627 buffer boundary, which then of course could lead to a crash. Marcus also
7628 gracefully provided a patch for this this.
7630 - Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
7631 correct way of calling gethostbyname_r() and thus failed to resolve hosts.
7632 This is two errors: it shouldn't continue the configure script if it finds
7633 gethostbyname_r() but can't figure out how to use it, and it should really
7634 figure out how to use it as it was running Linux and we know how that
7637 Daniel (7 November 2001)
7638 - docs/VERSIONS is a new file in the archive that explains the version number
7639 system we use in the curl project.
7641 - Did some more fixes that now makes libcurl only ignore signals as long as
7642 it needs to, and then restore (if any) previous signal handler again.
7644 Daniel (6 November 2001)
7645 - Enrik Berkhan posted bug report #478780, in which he very correctly pointed
7646 out two bad timeout matters in libcurl: we didn't restore the sigaction
7647 struct (the alarm handler for SIGALRM) nor did we restore the previous
7648 alarm() timeout that could've been set by a "parent" process or similar.
7650 - Kevin Roth made the cygwin binary get stripped before install.
7652 Daniel (5 November 2001)
7653 - Detlef Schmier reported that curl didn't compile using Solaris 8 with the
7654 native cc compiler. It was due to a bad function prototype. Fixed now.
7655 Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
7656 though, as gcc then complains like crazy on OpenSSL include files... :-(
7658 - John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
7659 to work on all platforms.
7661 - John Lask added the -1/--TLSv1 options that forces SSL into using TLS
7662 version 1 when speaking HTTPS.
7664 - John Lask brought a brand new VC++ makefile for the lib directory, that
7665 works a lot better than the previous!
7667 - Ramana Mokkapati brought some clever insights on the LDAP failures (bug
7668 report #475407), and his suggested changes are now applied.
7672 Daniel (4 November 2001)
7673 - I've added a number of new test cases the last few days. A few of them since
7674 I got reports that hinted on problems on timeouts, so I added four tests
7675 with timeouts for all sorts of protocols and stuff. I also came to think of
7676 a few other error scenarios that we currently didn't test properly, so I
7677 wrote up tests for a few of those too.
7679 Daniel (2 November 2001)
7680 - Replaced read() and write() with recv() and send() for socket operations
7681 even under normal unixes.
7683 Daniel (1 November 2001)
7684 - When an FTP transfer was aborted due to a timeout, it wasn't really aware of
7685 how many bytes that had been transferred and the error text always said 0
7686 bytes. I modified this to output the actually transferred amount! :-)
7688 - The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
7689 added more comments in the lib/ftp.c source file.
7691 - Minor updates to the FAQ, added a brand new section to the web site about
7692 the name issue (who owns "curl"? will someone sue us? etc etc):
7693 http://curl.haxx.se/legal/thename.html
7697 Daniel (31 October 2001)
7698 - The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
7699 the calculations used longs instead of doubles! Paul Harrington reported.
7701 - The SSL SocketIsDead() checks weren't good enough (as expected really), so I
7702 had to add a generic internal try-it-out system. If the request on a re-used
7703 connection seems to fail, then we go back and get a new (fresh) connection
7704 and re-tries the request on that instead. It kind of makes the
7705 SocketIsDead() check obsolete, but I think it is a quicker way for those
7706 cases where it actually discovers that the connection is dead.
7708 - When fixing the above, I noticed that we did quite a few writes to sockets
7709 in libcurl where we didn't check the return code (that it actually worked to
7710 send the data). With the new "attempted request" system we must detect those
7711 situations so I went over a bunch of functions, changed return types and
7712 added checks for what they actually return.
7716 Daniel (31 October 2001)
7717 - Paul Harrington detected a problem with persistant SSL connections. Or to be
7718 more exact, we didn't properly detect that the connection was dead and then
7719 a second connection would try to re-use it wrongly. The solution to this
7720 problem is still not very clear and I'm working on it. One OpenSSL insider
7721 said there is no way to know if the SSL connection is alive or not without
7722 actually trying an operation.
7724 Daniel (30 October 2001)
7725 - If a cookie was read from a file, it could accidentally strdup() a NULL
7726 pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]
7728 - The MANUAL file now documents -t correctly. I also fixed the -T description
7729 in the curl.1 man page.
7731 Daniel (29 October 2001)
7732 - John Janssen found out that curl_formadd was missing in the libcurl.def file
7733 and that the docs stated the wrong return type for the function.
7735 - Andrés GarcÃa found a bug with multiple files in the curl_formadd() function,
7736 that I removed with this patch [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/formdata.c.diff?r1=1.25&r2=1.26].
7738 - Kevin Roth brought another patch that moved the cygwin package files to the
7739 packages/Win32/cygwin directory.
7741 - A bug in the connection re-use logic made repeated requests to the same FTP
7742 server (when using name+pasword in the URL) sometimes use more than one
7743 connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
7745 - Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
7746 code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
7748 [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
7750 Daniel (26 October 2001)
7751 - Added test28 which verifies that "Location:"-following works even if the
7752 contents is separated with more than one space.
7754 Daniel (25 October 2001)
7755 - Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
7756 correct data has been output.
7760 Daniel (24 October 2001)
7761 - T. Bharath found a memory leak in the cookie engine. When we update a cookie
7762 that we already knew about, we lost a chunk of memory in the progress... The
7763 brand new test case 27 now tests for this occurrence. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.24&r2=1.25]
7765 Daniel (23 October 2001)
7766 - pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
7767 would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]
7769 Daniel (22 October 2001)
7770 - Tom Benoist reported that this SGI IRIX compiler didn't handle indented
7771 preprocessor instructions, so they're no longer in the source code!
7773 - Applied Kevin Roth's patches to make it easier to build cygwin packages from
7774 the out-of-the-box curl release archives.
7776 - I forgot to mention it below, but libcurl now closes connections that report
7777 transfer failures. Unconditionally. This could be made more nicely in the
7778 future if we set a flag or something that the connection is still good to be
7779 used for the errors that know that for a fact. We have to close the
7780 connection for the cases where we abort for example a HTTP transfer in the
7781 middle, or otherwise we might re-use that connection later with lots of data
7782 still being sent to us on it. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.63&r2=1.64]
7784 Daniel (19 October 2001)
7785 - CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
7786 anything, not even a header. test case 37 was added to test for this.
7788 - T. Bharath made curl_easy_duphandle() properly clone the cookie status as
7793 Daniel (18 October 2001)
7794 - CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
7795 the HTTP return code is below 400.
7797 Daniel (17 October 2001)
7798 - The test suite now kills any running test http server when you re-start the
7801 - We had to remove 'use strict' from two perl scripts, as the cygwin
7802 adjustments didn't play nicely otherwise for some reason. Any perl wizard
7803 out there who can put the scrict back and still make it run good on unix and
7806 - A potential memory leak pointed out to us by Yanick Pelletier was removed.
7807 It would occur when a http file transfer fails. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/transfer.c.diff?r1=1.60&r2=1.61]
7809 - The memory debugging system should no longer display anything to stderr
7810 if the curl_memdebug() hasn't been used to explicitly say so. This makes it
7811 easier to use the memory debug system and switch the logging on/off.
7813 Daniel (16 October 2001)
7814 - Kevin Roth provided fixes for building curl nicer in cygwin environments.
7816 Daniel (12 October 2001)
7817 - Cleaning up the progress meter/info code. The "current speed" is now more
7818 accurate than before as we now use the true time spent between the measures,
7819 and not just "assuming" every-second-update like before. The output should
7820 now also be of the same width at all times, never to show "extra" zeroes on
7823 - After talking about possible Location: bugs on the mailing list, I modified
7824 the "absolute URL" checker in lib/transfer.c to be more strict when checking
7825 if the redirected URL is absolute.
7827 Daniel (11 October 2001)
7828 - Kevin Roth provided patches that make the test suite run fine on Windows
7829 2000 running cygwin.
7831 Daniel (10 October 2001)
7832 - Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
7833 Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.
7837 Daniel (9 October 2001)
7838 - Added a new option to the command line client: -0/--http1.0. It uses the new
7839 libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
7840 requests instead of the default version (1.1). It should only be used if you
7841 really MUST do that because of a silly remote server.
7843 - Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
7844 all public curl-symbols should.
7846 - libcurl now explicitly ignores the SIGPIPE signal.
7848 Daniel (8 October 2001)
7849 - Kevin Roth's change to the cookie-jar comment (in the stored file) was
7852 - Lucas Adamski's minor bug in the bind error code failf() was fixed.
7854 Daniel (5 October 2001)
7855 - Moonesamy fixed the Curl_connecthost() function to not give compiler errors
7856 on a bunch of compilers, due to the argument named 'socket'.
7858 - Moonesamy also provided updated VC++ makefiles and project files.
7862 Daniel (4 October 2001)
7863 - Albert Chin provided a configure patch that makes the script detect proper
7864 gethostbyname_r() method without actually running any code, only compiling
7865 is necessary. This also removes the need of having a resolving 'localhost'
7868 - Found and removed memory leakage (name resolve data) in libcurl on
7869 IPv6-enabled hosts. These could sneak through because we didn't have any
7870 resource tracing on the IPv6-related functions. We do now.
7872 Daniel (3 October 2001)
7873 - Keith McGuigan patched away a (mainly Windows-) problem with the name
7874 resolver data being kept in the static memory area, which is removed when a
7875 thread is killed. The curl handle itself though perfectly handles being
7876 passed between threads.
7878 - Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
7879 required an Authorization: header. Now, proxies are not supposed to require
7880 that header, that is for true servers...
7882 - I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.
7886 Daniel (3 October 2001)
7887 - Georg Huettenegger once again made an effort beyond the call of duty and not
7888 only improved the curl_formadd() function, but also took care of adjusting
7889 the curl command line client to use this new function instead of the
7890 obsoleted curl_formparse.
7892 Daniel (2 October 2001)
7893 - Major fix in how libcurl does TCP connects. It now does non-blocking
7894 connects to enable good timeouts without signals, and it now tries all IP
7895 addresses for any given host (if it resolves more than one and the first
7896 one(s) don't connect). Added a new source file 'connect.c' to deal with all
7897 the TCP connect stuff.
7899 - We now support IPv4-style IP-addresses in rfc2732-format, to better support
7900 people writing scripts without knowing what address there is.
7902 Daniel (28 September 2001)
7903 - Cleanups in the FTP source code. Divided the code into even more smaller
7904 functions and generally tried to make the differences between IPv4 and IPv6
7905 get less noticable in the sources.
7907 - If the remote file time is not readable/accessable/understood by libcurl,
7908 libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
7909 did. This should make curl not touch the file data unless there was a known
7910 remote date when -R is used.
7912 Daniel (27 September 2001)
7913 - Working on getting non-blocking connects working platform independent. We
7914 will also make curl try all IPs for a given host if the first one should
7917 Daniel (26 September 2001)
7918 - Kevin Roth provided a cookie example that proved the cookie jar
7919 functionality wasn't working properly. I added test case 46 and made it
7922 Daniel (25 September 2001)
7923 - Jörn Hartroth updated the mingw32 makefiles.
7927 Daniel (23 September 2001)
7928 - Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
7929 when FTP RETR failed.
7931 - Made the FTP upload tests run fine on machines with IPv6 enabled.
7935 Daniel (19 September 2001)
7936 - Vojtech Minarik set up a special-purpose test server and provided me with
7937 test certificates in order for me to repeat the bug reports #440068 and
7938 #440373. It turned out we didn't check all the error codes properly. We do
7939 now, and connecting with a unacceptable certificate will make libcurl fail
7940 to connect with an error code returned.
7942 - Ramana Mokkapati found a case when the Location: following code did wrong.
7943 I wrote a test case for this (45).
7947 Daniel (17 September 2001)
7948 - Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
7953 - libtool 1.4.2 is now in use!
7957 Daniel (14 September 2001)
7958 - Added another 14 ftp tests.
7960 Daniel (13 September 2001)
7961 - Added curl_easy_duphandle() to the easy.h header file. It has now been
7962 tested and proved to work in a real-world tests by T Bharath. We still need
7963 to write up some docs for this function.
7965 - Added four more ftp tests to the test suite.
7967 Daniel (12 September 2001)
7968 - CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
7969 --ciphers. Use them to specify a list of ciphers to use in the SSL
7972 - T. Bharath found a memory leak in libcurl's windows version. It turned out
7973 to be the new duphandle() that didn't quite work yet.
7977 Daniel (11 September 2001)
7978 - Added verbose output for SSL connections that output the server
7979 certificate's start and expire dates. As suggested by Paul Harrington.
7981 - Heikki Korpela found problems in the perl ftp server used for the test
7982 suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
7983 made, but nothing really certain.
7985 - T. Bharath has experienced problems with libcurl's stack usage on windows
7986 and works on reducing it.
7988 Daniel (10 September 2001)
7989 - Cris Bailiff fixed the perl interface. It stopped working since the changed
7990 behavior with WRITEHEADER and NULL pointers.
7992 - The "output cookies" function could dump core if no cookies were enabled.
7994 Daniel (7 September 2001)
7995 - SM pointed out that the SSL code didn't compile any longer if SSL was
7996 disabled... Also, we needed to correct the #include for the utime stuff on
7999 Daniel (6 September 2001)
8000 - T. Bharath pointed out a flaw in the SSL session cache code that made it
8001 sometimes read from a NULL pointer.
8005 Daniel (3 September 2001)
8006 - Added the -R/--remote-time option, that uses the remote file's datestamp to
8007 set the local file's datestamp. Thus, when you get a remote file your local
8008 file will get the same time and date. Note that this only works when you use
8011 - Installed libtool 1.4.1, libtoolized and everything.
8013 Daniel (1 September 2001)
8014 - Heikki Korpela pointed out that I did not ship the proper libtool stuff in
8015 the pre-releases, even though that was my intention. libtoolize has now
8018 - Heikki also patched away the bad use of 'make -C' in the test suite
8019 makefile. make -C is not very portable and is now banned from here.
8023 Daniel (31 August 2001)
8024 - I just made a huge internal struct rehaul, and all the big internally used
8025 structs have been renamed, redesigned and stuff have been moved around a bit
8026 to make the source easier to follow, more logically grouped and to hopefully
8027 decrease future bugs. I also hope that this will make new functions to get
8028 easier to add, and make it less likely that we have bugs left like the URL-
8029 free bug from August 23.
8033 Daniel (29 August 2001)
8034 - The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
8035 that to specify the file name in which you want to have all cookies curl
8036 knows of, dumped to. It'll be written using the netscape cookie format.
8038 This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
8039 which in turn dumps this information when curl_easy_cleanup() is invoked.
8040 There might be reasons to re-consider my choice of putting it there. Perhaps
8041 it is better placed to get done just before *_perform() is done. It is all
8042 of course depending on how you guys want to use this feature...
8044 - Added ftpupload.c in the source examples section, based on source code posted
8047 Daniel (28 August 2001)
8048 - Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
8049 on OpenBSD and hopefully on FreeBSD as well!
8051 - Georg Huettenegger modified the curl_formadd() functionality slightly, and
8052 added support for error code 417 when doing form post and using the Expect:
8055 - Made some tests with cached SSL session IDs, and they seem to work. There
8056 should be a significant speed improvement in the SSL connection phase, but
8057 in my tiny tests it just isn't possible to notice any difference. Like other
8058 caching in libcurl, you must reuse the same handle for the caching to take
8059 effect. SSL session ID caching is done on a per host-name and destination
8062 Set verbose, and you'll get informational tests when libcurl detects and
8063 uses a previous SSL session ID.
8065 - Upgraded to automake 1.5 on my development/release machine.
8067 Daniel (27 August 2001)
8068 - Slowly started writing SSL session ID caching code
8070 Daniel (24 August 2001)
8071 - T. Bharath removed compiler warnings on windows and updated the MS project
8074 - Kevin Roth reported two kinds of command line constructs with the new -G that
8075 curl didn't really deal with the way one would like.
8077 - Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
8078 own portable version named strequal() that should be used!
8080 - Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
8081 debug object modules causing confusions.
8083 Daniel (23 August 2001)
8084 - T. Bharath accurately found a libcurl bug that would happen when doing a
8085 second invoke of curl_easy_perform() with a new URL when the previous invoke
8086 followed a Location: header.
8088 - Started the improvement work on the cookie engine:
8089 - Now keeps cookies in the same order as the cookie file
8090 - A write to the possibly static string was removed
8091 - Added a function that can output all cookies
8092 - Now supports reading multiple cookie files
8094 - Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.
8096 - Split up the monster function in lib/ftp.c to use more smallish functions to
8097 increase readability and maintainability.
8099 Daniel (21 August 2001)
8100 - Georg Huettenegger's big patch was applied. Now we have:
8101 o "Expect: 100-continue" support. We will from now on send that header in
8102 all rfc1867-posts, as that makes us abort much faster when the server
8103 rejects our POST. Posting without the Expect: header is still possible in
8104 the standard replace-internal-header style.
8105 o curl_formadd() is a new formpost building function that is introduced to
8106 replace the now deprecated curl_formparse() function. The latter function
8107 will still hang around for a while, but the curl_formadd() is the new way
8108 and correct way to build form posts.
8109 o Documentation has been updated to reflect these changes
8111 These changes are reason enough to name the next curl release 7.9...
8113 - We now convert man pages to HTML pages and include them in the release
8114 archive. For the pleasure of everyone without nroff within reach.
8116 - Andrés GarcÃa's suggested flushing of the progress meter output stream was
8117 added. It should make the progress meter look better on Windows.
8119 - Troy Engel pointed out a mistake in the configure script that made it fail
8120 on many Red Hat boxes!
8122 Daniel (20 August 2001)
8123 - We need an updated libtool to make a better build environment for OpenBSD
8128 Daniel (20 August 2001)
8129 - Brad pointed out that we ship two extra libtool files in the tarballs that
8130 we really don't need to! Removing them makes the gz-archive about 60K
8133 - Albert Chin brought fixes for the configure script to detect socklen_t
8134 properly as well as moving lots of our custom autoconf macros to
8137 Daniel (19 August 2001)
8138 - Moonesamy improved his -G feature for host names only URLs...
8140 Daniel (17 August 2001)
8141 - Finally cleaned up the kerberos code to use Curl_ prefixes on all global
8142 symbols and to not use global variables.
8146 Daniel (16 August 2001)
8147 - S. Moonesamy added the -G option to curl, that converts the data specified
8148 with -d to a GET request. Default action when using -d is POST. When -G is
8149 used, the -d specified data will be appended to the URL with a '?'
8150 separator. As suggested previously by Kevin Roth.
8152 - curl-config --libs should now display all linker options required to link
8153 with libcurl. It includes the path and options for libcurl itself.
8154 curl-config --cflags displays the compiler option(s) needed to compile
8155 source files that use libcurl functions. Basically, that sets the include
8158 Daniel (15 August 2001)
8159 - Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
8160 were parsed and used. (RFC2732-format)
8162 - Bug #12733 over on php.net identified a problem in libcurl that made it core
8163 dump if you used CURLOPT_POST without setting any data to post with
8164 CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
8165 now equals setting it to no data at all.
8167 - Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
8168 properly when used for multiple URLs on a single command line. Indeed, the
8169 variable was not reset between the requests. This is now fixed.
8171 - David James fixed the Borland makefile so that libcurl still compiles and
8172 builds with that compiler.
8174 Daniel (14 August 2001)
8175 - Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.
8177 - An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
8178 windows users to curl_global_init(), that makes libcurl init the winsock
8179 stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
8180 with this is a comfortable shortcut to fame.
8184 Daniel (14 August 2001)
8185 - Nico Baggus provided more feedback from his VMS porting efforts and a few
8186 minor changes were necessary.
8188 - I modified configure.in so that --enable-debug sets more picky gcc options.
8189 I then removed almost all the new warnings that appeared, and by doing so I
8190 corrected the size_t-treated-as-signed problem that has been discussed on
8191 the mailing list previously. I also removed a bunch of the just recently
8192 added #ifdef VMS lines.
8194 - I removed the use of a global variable in the SSL code. It was once
8195 necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
8196 (hopefully) still work if libcurl is built against an ancient version of
8199 Daniel (13 August 2001)
8200 - Peter Todd posted a patch that now allows non-file rc1867-style form posts
8201 to be larger than 4K.
8203 Daniel (10 August 2001)
8204 - S. Moonesamy fixed bugs for building debug and SSL lib in VC makefile
8206 Daniel (9 August 2001)
8207 - The redirected error stream was closed before the curl_easy_cleanup() call
8208 was made, and when VERBOSE was enabled, the cleanup function tried to use
8209 the stream. It could lead to a segmentation fault. Also, the stream was
8210 closed even if we looped to get more files. Corrects Dustin Boswell's bug
8213 - Now generates the release configure script with autoconf 2.52
8217 Daniel (8 August 2001)
8218 - curl -E uses a colon to separate a file name from a passphrase. This turned
8219 out really bad for the windows people who wants to include a drive letter in
8220 the file name like "c:\cert.pem". There's now a win32 work-around
8221 implemented that tries work around that, when the colon seems to be used for
8222 this kind of construct.
8224 - Patrick Bihan-Faou introduced CURLOPT_SSL_VERIFYHOST, which makes curl
8225 verify the server's CN field when talking https://. If --cacert is not used,
8226 any failures in matching is only displayed as information (-v).
8228 Daniel (7 August 2001)
8229 - Wrote up nine more test cases, more or less converted from the former test
8232 Daniel (6 August 2001)
8233 - Heikki Korpela posted a patch that makes 'curl-config --libs' include the
8234 directory in which libcurl itself is installed in. While this wasn't my
8235 initial intention with this option, it makes sense and makes linking with
8238 - Stefan Ulrich pointed out to us that other tools and libraries treat file://
8239 URLs with only one slash after the host name slighly different than libcurl
8240 does. Since all the others seem to agree, we better follow them.
8242 - Nico Baggus provided us with a huge set of fixes to make curl compile and
8243 build under OpenVMS.
8247 Daniel (6 August 2001)
8248 - Jonathan Hseu noticed that you couldn't get a header callback unless you
8249 set CURLOPT_WRITEHEADER to non-NULL, even if you didn't care about that
8250 data. This is now fixed.
8252 Daniel (5 August 2001)
8253 - Sergio Ballestrero provided a patch for reading responses from NCSA httpd
8254 1.5.x servers, as they return really screwed up response headers when asked
8257 - curl_escape() no longer treats already encoded characters in the input
8260 Daniel (3 August 2001)
8261 - I replaced the former lib/arpa_telnet.h file with one I wrote myself, to
8262 avoid the BSD annoucement clause of the license in the former file.
8264 - Andrew Francis provided a new version of base64.c to work around the license
8265 boiler plate that came with the previous one. I patched it, but the glory
8266 should go to Andrew for his heads up.
8268 - Tomasz Lacki noticed that when you do repeated transfers with libcurl you
8269 couldn't always reliably change HTTP request. This has now been fixed and a
8270 new libcurl option was added: CURLOPT_HTTPGET, that can force the HTTP
8271 requestr (back) to GET.
8273 - Linus Nielsen Feltzing pointed out that httpsserver.pl wasn't included in
8274 release archives. It should be now.
8276 Daniel (2 August 2001)
8277 - Frank Keeney pointed out a manual mistake for certificate convertions.
8279 - Tomasz Lacki pointed out a problem in the transfer loop that could make the
8280 select() loop use far too much CPU.
8282 - Pawel A. Gajda pointed out an output mistake done when using libcurl's
8285 Daniel (29 June 2001)
8286 - Naveen Noel noticed that the Borland library makefile wasn't updated.
8288 - Nic Roets brought a fix for the certificate verification when using SSL.
8290 Daniel (27 June 2001)
8291 - Made the FTP tests run OK even on machines running curl IPv6-enabled.
8293 - Troy Engel corrected some RPM package details.
8297 Daniel (25 June 2001)
8298 - Björn Stenberg correctly identified a problem that occurred when downloading
8299 several files with curl, and using resume. The first file's resume index was
8300 then used for all files, resulting in weird results...
8302 - Anton Kalmykov provided a fix that makes curl work with form field names
8303 with spaces like when -F is used.
8307 Daniel (20 June 2001)
8308 - Mike Bytnar provided a fine report that proved that the --with-ssl option
8309 for configure needed tweaking. It no longer searches the default directories
8310 for OpenSSL libs or directories when a specified path is given.
8312 Daniel (19 June 2001)
8313 - When an FTP transfer is cut off during transfer, curl could present a truly
8314 garbaged error message and in worst case dump core. Thanks to detailed
8315 reports from Shawn Poulson we nailed this.
8317 Daniel (12 June 2001)
8318 - Salvador Dávila provided a fix for FTP range downloads.
8320 - Added a few more test cases from the former test suite to the new file
8321 format. We're now at a total of 26 tests.
8323 Daniel (11 June 2001)
8324 - libcurl's version-info was wrong, as noted by both Domenico Andreoli and
8327 Daniel (7 June 2001)
8328 - Jörn fixed the curl_unescape duplicate entry in lib/libcurl.def
8330 - I made SSL certificate failure messages to be more detailed.
8334 Daniel (7 June 2001)
8335 - SDavila provided a resumed download fix.
8339 Daniel (1 June 2001)
8340 - Sterling provided some new PHP examples.
8342 - Changed the CVS hierarchy and the older checkout instruction does no longer
8343 work. We moved the entire source code into a CVS module named 'curl'.
8345 Daniel (31 May 2001)
8346 - CURLOPT_MUTE does not exist anymore. It is still present in the include file
8347 to not cause compiler errors for applications using it, but it isn't used
8348 anywhere in the library.
8352 Daniel (31 May 2001)
8353 - Once and for all fixed the _REENTRANT mess for Solaris compiles to present
8356 - Sterling Hughes tirelessly points out and corrects my mistakes...! So,
8357 curl_global_init() now lets the argument flags *SET* what parts to
8358 init. CURL_GLOBAL_DEFAULT makes a nice default, CURL_GLOBAL_ALL inits all
8359 known subsystems and CURL_GLOBAL_NONE inits nothing more than absolutely
8360 necessary. Man page updated accordingly.
8362 - Fixed the strtok.h include file as it wouldn't compile on all platforms!
8364 Daniel (30 May 2001)
8365 - Made libcurl by default act as if CURLOPT_MUTE and CURLOPT_NOPROGRESS were
8366 set TRUE. Set them to FALSE to make libcurl more talkative. The *_MUTE
8367 option is subject for complete removal...
8371 Daniel (30 May 2001)
8372 - Cris Bailiff wrote a makefile for building Solaris packages.
8374 - Sterling Hughes brought fixes for 'buildconf' (the build-from-CVS tool) and
8375 we discussed and added a few CURL_GLOBAL_* flags in include/curl.h
8377 - Kjetil Jacobsen privately announced his python interface to libcurl,
8378 available at http://pycurl.sourceforge.net/
8380 Daniel (29 May 2001)
8381 - Sterling Hughes fixed a strtok() problem in libcurl. It is not a thread-
8382 safe function. Now configure checks for a thread-safe version, and
8383 lib/strtok.c offers one for the systems that don't come with one included!
8385 - Mettgut Jamalla correctly pointed out that the -# progress bar was written
8386 to stderr even though --stderr redirection was used. This is now corrected.
8388 - I moved out the list of contributors from the curl.1 man page and made a
8389 separate docs/THANKS file. It makes the list easier to find, and made it
8390 easier for me to make a separate web page with that same information.
8392 I really do want all you guys mentioned in there to feel you get the credit
8395 - lib/easy.c didn't compile properly in the 7.8-pre1 due to a silly mistake
8399 Daniel (28 May 2001)
8400 - curl-config now supports '--vernum' that outputs a plain hexadecimal version
8401 of the libcurl version number (using 8 bits for each 3 numbers). Version
8402 7.7.4 appears as 070704
8404 - Wrote man pages for curl_global_init and curl_global_cleanup...
8406 - T. Bharath brought news about the usage of the OpenSSL interface that was
8407 not previously taken into consideration and thus caused libcurl to leak
8408 memory. The only somewhat sane approach to fix this dilemma, is adding two
8409 two new functions curl_global_init() and curl_global_cleanup() that should
8410 be called *ONCE* by the application using libcurl. The init should be done
8411 only at startup, no matter how many threads the application is gonna use,
8412 and the cleanup should be called when the application has finished using
8415 *** UPGRADE NOTICE ***
8417 If you write applications using libcurl, you really want to use the two
8418 functions mentioned above !!!
8420 I can't say I think this is a very beautiful solution, but as OpenSSL
8421 insists on making lots of stuff on a "global" scope, we're forced to walk
8422 the path they point us to.
8424 - Moving more test cases into the new file format.
8428 Daniel (23 May 2001)
8429 - Introduced a new file format for storing test cases, and thus I had to
8430 modify all the perl test scripts and more (I added a new one). I have not
8431 "ported" all the old test cases to the new format yet, but it'll come.
8433 The main advantage of this new format is that all test data for each test
8434 case is stored in a single file. It gives a better overview for each test
8435 case and a lot less files.
8437 - Andrés GarcÃa brought a fix for the netscape/mozilla cookie file parsing
8438 function, as it turns out it doesn't always store the path!
8440 Daniel (22 May 2001)
8441 - As was reported anonymously, when FAILONERROR was used, the httpcode was
8442 not stored properly and thus wasn't possibly to read after a transfer with
8443 the curl_easy_getinfo() function. This is now corrected.
8445 - Installed and made use of the following tool versions:
8450 I wouldn't recommend any developer to try to generate things with older
8451 versions than these. Building from CVS will probably more or less require
8452 at least these versions.
8454 As a result of this, the configure script grew to more than double its
8457 Arkadiusz Miskiewicz helped me by pointing out I had to remove my
8458 acinclude.m4 file before I could get it working!
8460 Daniel (21 May 2001)
8461 - I made ftps:// work. Added test case 400 to the release archive, as the
8462 first ftps:// test case. Requires stunnel.
8464 - Also made the test cases that runs ssl tests not run if libcurl isn't built
8467 Daniel (19 May 2001)
8468 - Made the configure not add any extra -L LDFLAGS or -I CPPFLAGS unless they
8469 are actually needed. Albert Chin's and Domenico Andreoli's suggestions
8474 Daniel (18 May 2001)
8475 - Nicer configure-check for the OpenSSL headers, which then sets the proper
8476 variable to have curl-config be good. (Albert Chin provided the fix)
8478 - For systems that don't have theiw own 'strlcat()' libcurl provides its own.
8479 It was now renamed to prevent collides with other libs. (After discussions
8480 with Sterling Hughes and the implications this had on PHP builds.)
8482 Daniel (17 May 2001)
8483 - Colm Buckley posted a detailed bug report on (the debianized) 7.7.3, that
8484 turned out to be a problem with the debian-built 7.7.3-package that
8485 contained files from the 7.7.2 release!
8487 - I added the CURLE_ALREADY_COMPLETE again, but with a fake value, just to
8488 make programs that use it, not fail when compiling against this version of
8491 Daniel (14 May 2001)
8492 - Pawel A. Gajda fixed a problem with resumed transfers on re-used persistent
8497 Daniel (14 May 2001)
8498 - Jun-ichiro itojun Hagino fixed FTP PORT for IPv6-enabled libcurl.
8500 - Added the first HTTPS test to the test suite in the release archive.
8502 Daniel (12 May 2001)
8503 - Jukka Pihl suggested that if (lib)curl is told to verify the peer's
8504 certificate and the peer can't be verified, it should fail and return a
8505 proper error code. I added a brand new error code named
8506 CURLE_SSL_PEER_CERTIFICATE for this purpose.
8508 Daniel (11 May 2001)
8509 - As was discussed with Frederic Lepied a while ago, I now made libcurl not
8510 return error even though no data was transfered on upload/download resume
8511 when the no transfer is needed. The CURLE_ALREADY_COMPLETE error was removed
8512 from the header file to make any implemenator that uses that to be aware of
8513 the fact that it can't be returned anymore!
8515 - Improved general header-parsing to better allow white spaces and more.
8517 - Rodney Simmons proved the fix I did yesterday was bad and I had to post
8520 - Ingo Wilken patched away two redirect problems more!
8522 Daniel (10 May 2001)
8523 - Cris Bailiff correctly noted that the space-after-header problem with
8524 Location: is present on several other places in the libcurl sources.
8526 - Ingo Wilken patched away a problem libcurl had when following Location:
8527 headers with an extra space after the colon.
8529 - Rodney Simmons found out that multiple FTP transfers did not treat relative
8530 directories correctly.
8533 - Getting an FTP file with CURLOPT_NOBODY set (or -I from the command line),
8534 makes curl use the non-standard ftp command "SIZE". If it failed, libcurl
8535 returned error. Starting now, it just don't output the file size instead.
8536 Anonymous bug report.
8538 - stunnel.pm was accidentally left out from the release archive, it is now
8539 added (stunnel is needed to run the https-tests in the test suite)
8542 - Corrected two minor compiler warnings due to the FILE * to void * conversion
8543 that I missed at two places. Jörn Hartroth brought me patches. Sander Gates
8544 filed a bug report on this.
8549 - All callback functions now take 'void *' instead of 'FILE *'. This is made
8550 this way to make it more obvious to people that anything can be passed to
8551 them (by using the apropriate option). After discussions with Sterling
8555 - Cris Bailiff fixed a chunked transfer encoding problem with persistent
8556 connection that made libcurl fail if the persistent connection used mixed
8557 chunked and non-chunked transfers.
8559 - Cris Bailiff fixed a bad treatment of 304-replies, as they would not be
8560 treated as content-length 0 replies but would cause a "hang" until the
8561 server timed-out and closed the connection.
8563 - Brad Burdick found a minor problem in the docs/examples/Makefile.am
8565 Daniel (27 April 2001)
8566 - Updated the INTERALS document again. It was lagging a bit. I think I made it
8567 more easy to follow now as well.
8569 - Brad Burdick found a problem with persistent connections when curl received
8570 a "Content-Length: 0" header.
8572 - Giuseppe D'Ambrosio was first out to report that TELNET doesn't work in curl
8573 compiled/built on win32. It seems to work for unixes though!
8575 - Dave Hamilton reported weird problems with CURL/PHP that I really can't
8576 explain at the moment. I'm hoping on some help from the PHP crew.
8578 Daniel (26 April 2001)
8579 - I rewrote the FTP command response function. I had to do it to make ftps
8580 work, as the OpenSSL read()-function didn't work the same way the normal
8581 unix read() does, but it was also a huge performance boost. Previously the
8582 function read one byte at a time, now it reads very large chunks, and it
8583 makes a notable speed difference.
8585 Daniel (25 April 2001)
8586 - Connection re-use when not using a proxy didn't work properly for
8587 non-default port numbers.
8589 Daniel (24 April 2001)
8590 - I've noticed that FTPS doesn't work. We attempt to use ssl even for the
8591 data transfer, which causes the transfer to 'hang'... We need to fix this.
8593 - Improved the test suite to use 'stunnel' to do HTTPS and FTPS testing on
8594 the alredy written perl servers easily.
8596 Daniel (23 April 2001)
8597 - The OpenSSL version string recently modified didn't zero terminate one
8598 of the generated strings properly, which could lead to a crash or simply
8599 weird version string output!
8603 Daniel (22 April 2001)
8604 - Rosimildo da Silva updated the Makefiles for Borland/Windows.
8606 - Eric Rautman pointed out a problem with persistent connections that would
8607 lead to broken Host: headers in the second HTTP request.
8609 Daniel (20 April 2001)
8610 - Added man pages for the curl_strequal() and curl_mprintf() families. Wrote
8611 a 'libcurl overview' man page.
8613 - Spell-fixed some documents.
8615 - S. Moonesamy corrected mistakes in the man page.
8617 - Cris Bailiff fixed the curl_slists options in the perl interface, present
8618 separately in the Curl::easy 1.1.4 package.
8620 Daniel (19 April 2001)
8621 - Linus Nielsen Feltzing removed the decimals from the size variables in the
8622 --write-out output. We hardly ever get fraction of bytes! :-)
8626 Daniel (19 April 2001)
8628 - Albert Chin provided a configure patch for the AC_SYS_LARGEFILE macro.
8630 Daniel (18 April 2001)
8631 - Input from Michael Mealling made me add --feature to curl-config. It
8632 displays a list of features that have been built-in in the current
8633 libcurl. The currently available features that can be listed are: SSL, KRB4
8636 - I committed Cris and Georg's perl interface work. They've got callbacks
8637 working and options that receives those slist pointers.
8639 - Puneet Pawaia detected a problem with resumed downloads that use persistent
8640 connections and I made a rather large writeup to correct this. It is
8641 important that all session-data is stored in the connectdata struct and not
8642 in the main struct as this previously did.
8644 Daniel (17 April 2001)
8645 - Frederic Lepied fixed a ftp resumed download problem and introduced a new
8646 error code that lets applications be able to detect when a resumed download
8647 actually didn't download anything since the whole file is already present.
8648 Should this return OK instead?
8650 - I added 'curl-config.in' to the root dir and configure script. Now, a
8651 curl-config script is made when curl is built. The script can be used to
8652 figure out compile time options used when libcurl was built, which in turn
8653 should be options YOU should use to build applications that use libcurl.
8655 This *-config style is not a new idea, but something that has been used
8656 successfully in other (library based) projects.
8658 - Phil Karn pointed out that libcurl wrongly did not always use GMT time zone
8659 for the If-Modified-Since style headers.
8661 - Georg Schwarz pointed out an extra needed #include file needed in src/main.c
8662 for curl to build on Ultrix.
8664 Daniel (11 April 2001)
8665 - Cris Bailiff pointed out two problems that I corrected. First, libcurl's use
8666 of the environment variable HTTP_PROXY in uppercase may become a security
8667 hazard when people use libcurl in a server/cgi situation where the server
8668 sets the HTTP_*-variables according to incoming headers in the HTTP
8669 request. Thus, a "Proxy:"-header would set that environment variable!
8671 Then, invoking curl_easy_perform() without having an URL set caused a crash.
8673 - S. Moonesamy brought a patch that make curl use non-blocking connects on
8674 windows when connection timeout is set, as it allows windows users to set
8677 - Hirotaka Matsuyuki wrote a Ruby interface to libcurl!
8679 - Cris Bailiff, Forrest Cahoon and Georg Horn work on the Perl interface.
8681 - I've written a first shot at a Java interface to libcurl. Many thanks to
8682 Daniel Marell for tirelessly answering to all my basic Java questions. It
8683 works, but it is still very basic.
8685 Daniel (10 April 2001)
8686 - The progress display could get silly when doing multiple file transfers, as
8687 it wasn't properly reset between transfers!
8689 - Discussions with Cris Bailiff who writes a Perl interface to libcurl, made
8690 me add CURLOPT_HEADERFUNCTION. It can be used to set a separate callback
8691 function for writing headers. Previously you could only set a different FILE
8692 * when headers are written from within libcurl.
8694 Daniel (7 April 2001)
8695 - Andrés GarcÃa fixed a problem in curl_escape() and pointed out a flaw in
8696 the curl_easy_setopt man page.
8698 Daniel (6 April 2001)
8699 - Adjusted the version code to properly display OpenSSL 0.9.6a. They sure
8700 change their version define format often...
8702 - curl_formfree() now accepts a NULL pointer without crashing!
8706 Daniel (3 April 2001)
8707 - Puneet Pawaia pointed out two serious problems. Libcurl would attempt to
8708 read bad memory during situations when an (ftp) connection attempt failed.
8709 Also, the lib/Makefile.vc6 was corrected.
8711 - More investigations in the Location: following code made me realize that
8712 it was not clean enough to work transparantly with persistent and non-
8713 persistent connections. I think I've fixed it now.
8715 Daniel (29 March 2001)
8716 - Georg Horn mailed me some corrections for the Curl::easy perl interface.
8718 - Experimental ftps:// support added. It is basically FTP over SSL for the
8719 control connection. It still makes all data transfers going over unencrypted
8720 connections. Rainer Weikusat's ftpd-ssl server hack supports this and I used
8721 that to verify the functionality.
8723 Daniel (27 March 2001)
8724 - Guenole Bescon discovered that if you set a CURLOPT_TIMEOUT and then tried
8725 to get a file from a site and it fails, the SIGALRM would still be sent
8726 after the timeout-time, quite inexpectedly!
8728 - I added an ftp transfer example to docs/examples/ and I also wrote a tiny
8729 example makefile that can be used as a start when building one of the
8734 Daniel (26 March 2001)
8735 - Mohamed Lrhazi reported problems with 7.6.1 and persistent HTTP/1.0
8736 connections (when the server replied a Connection: Keep-Alive) and this
8737 problem was not properly dealt with in 7.7 either. A patch was posted to the
8738 curl-and-php mailing list.
8740 Daniel (24 March 2001)
8741 - Colin Watson reported about a problem and brought a patch that corrected it,
8742 which was about the man page and lines starting with a single quote (') in a
8743 way that gnroff doesn't like.
8745 Daniel (23 March 2001)
8746 - Peter Bray reported correctly that the root makefile used make instead of
8747 $(MAKE) for the test target.
8749 - Corrected the Curl::easy perl interface to use curl_easy_setopt() and not
8750 curl_setopt() which was removed in 7.7!
8752 - S. Moonesamy provided updates on three documents (MANUAL, INSTALL and FAQ).
8754 - When following a Location:, libcurl would sometimes write to the URL string
8755 in a way it shouldn't. As the pointer is passed-in to libcurl from an
8756 application, we can't be allowed to write to it. The particular bug report
8757 from 'nk' that brought this up was because he had a read-only URL that then
8758 caused a libcurl crash!
8760 - No longer reads HEAD responses longer than to the last header. Previously,
8761 curl would read the full reply if the connection was a "close" one.
8763 - libcurl did re-use connections way too much. Doing "curl
8764 http://www.{microsoft,ibm}.com" would make it re-use the connection which
8765 made the second request return very odd results.
8767 Daniel (22 March 2001)
8768 - Edin Kadribasic made me aware that curl should not re-send POST requests
8769 when following 302-redirects. I made 302 work like 303 which means curl uses
8770 GET in the following request(s).
8772 - libcurl now reset the "followed-location" counter on each invoke of
8773 curl_easy_perform() as it otherwise would sum up all redirects on the same
8774 connection and thus could reach the maxredirs counter wrongly.
8776 - Jim Drash suggested curl_escape() should not re-encode what already looks
8777 like an encoded sequence and I think that's a fair suggestion.
8781 Daniel (22 March 2001)
8782 - The configure script now fails with an error message if gethostbyname_r() is
8783 detected but it couldn't figure out how to invoke it (what amount of
8784 arguments it is supposed to get). Reports from Andrés GarcÃa made me aware
8787 - Talking with Jim Drash made me finally put the curl_escape and curl_unescape
8788 functions in the curl.h include file and write man pages for them. The
8789 escape function was modified to use the same interface as the unescape one
8792 - No bug reports at all on the latest betas. Release time coming up.
8796 Daniel (19 March 2001)
8797 - Georg Ottinger reported problems with using -C together with -L in the sense
8798 that the -C info got lost when it was redirected. I could not repeat this
8799 problem on the 7.7 branch why I leave this for the moment. Test case 39 was
8800 added to do exactly this, and it seems to do right.
8802 - Christian Robottom Reis reported how his 7.7 beta didn't successfully do
8803 form posts as elegantly as 7.6.1 did. Indeed, this was a flaw in the header
8804 engine, as HTTP 1.1 has introduced a new 100 "transient" return code for PUT
8805 and POST operations that I need to add support for. Section 8.2.3 in RFC2616
8806 has all the details. Seems to work now!
8808 Daniel (16 March 2001)
8809 - After having experienced another machine break-down, we're back.
8811 - Georg Horn's perl interface Curl::easy is now included in the curl release
8812 archive. The perl/ directory is now present. Please help me with docs,
8813 examples and updates you think fit.
8815 - Made a new php/ directory in the release archive and moved the PHP examples
8816 into a subdirectory in there. Not much PHP info yet, but I plan to. Please
8817 help me here as well!
8819 - Made libcurl return error if a transfer is aborted in the middle of a
8820 "chunk". It actually enables libcurl to discover premature transfer aborts
8821 even if the Content-Length: size is unknown.
8823 Daniel (15 March 2001)
8824 - Added --connect-timeout to curl, which sets the new CURLOPT_CONNECTTIMEOUT
8825 option in libcurl. It limits the time curl is allowed to spend in the
8826 connection phase. This differs from -m/--max-time that limits the entire
8827 file transfer operation. Requested by Larry Fahnoe and others.
8829 I also updated the curl.1 and curl_easy_setopt.3 man pages and removed the
8834 Daniel (14 March 2001)
8835 - Made curl grok IPv6 with HTTP proxies and got everything to compile nicely
8836 again when ENABLE_IPV6 is set.
8838 I need to remake things in the test suite. I can't test the FTP parts with
8839 curl built for IPv6 as it uses a different set of FTP commands then!
8841 - I fell onto a bug report on php.net (posted by Lars Torben Wilson) that was
8842 a report meant for our project. Anyway, it said the .netrc parsing didn't
8843 work as supposed, and as I agreed with Lars, I made the netrc parser use
8844 getpwuid() to figure out the home directory of the effective user and try
8845 that netrc. It still uses the environment variable HOME for those that don't
8846 have that function or if the user doesn't return valid pwd info.
8848 - Edin Kadribaic posted a bug report where he got a crash when a fetch with
8849 user+password in the URL followed a Location: to a second URL (absolute,
8850 without name+password). This bug has been around for a long while and
8851 crashes due to a read at address zero. Fixed now. Wrote test case 38, that
8854 - Modified the test suite's httpserver slightly to append all client request
8855 data to its log file so that the test script now better can verify a range
8856 of requests and not only the last one, as it did previously.
8858 - Updated the curl man page with --random-file and --egd-file details.
8862 Daniel (14 March 2001)
8863 - Björn Stenberg provided similar fixes as Jörn did and some additional patches
8864 for non-SSL compiles.
8866 - I increased the interface number for libcurl as I've removed the low level
8867 functions from the interface. I also took this opportunity to rename the
8868 Curl_strequal function to curl_strequal and Curl_strnequal to
8869 curl_strnequal, as they're public libcurl functions (even if they're still
8872 This will make older programs not capable of using the new libcurl with
8873 just a drop-in replacement.
8875 - Jörn Hartroth updated stuff for win32 compiles:
8876 o config-win32.h was fixed for socklen_t
8877 o lib/ssluse.c had a bad #endif placement
8878 o lib/file.c was made to compile on win32 again
8879 o lib/Makefile.m32 was updated with the new files
8880 o lib/libcurl.def matches the current interface state
8882 Daniel (13 March 2001)
8883 - It only took an hour or so before Jörn Hartroth found a problem in the
8884 chunked transfer-encoding. Given his fine example-site, I could easily spot
8885 the problem and when I re-read the spec (the part I have pasted in the top
8886 of the http_chunks.h file), I realized I had made my state-machine slightly
8887 wrong and didn't expect/handle the trailing CRLF that comes after the data
8888 in each chunk (and those extra two bytes sure feel wasted).
8890 Had to modify test case 34 to match this as well.
8894 Daniel (13 March 2001)
8895 - Added the policy stuff to the curl_easy_setopt man page for the two supported
8898 - Implemented some support for the CURLOPT_CLOSEPOLICY option. The policies
8899 CURLCLOSEPOLICY_LEAST_RECENTLY_USED and CURLCLOSEPOLICY_OLDEST are now
8900 supported, and the "least recently used" is used as default if no policy
8903 Daniel (12 March 2001)
8904 - Added CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET to libcurl for seeding the
8905 SSL random engine. The random seeding support was also brought to the curl
8906 client with the new options --random-file <file> and --egd-file <file>. I
8907 need some people to really test this to know they work as supposed. Remember
8908 that libcurl now informs (if verbose is on) if the random seed is considered
8909 weak (HTTPS connections).
8911 - Made the chunked transfer-encoding engine detected bad formatted data length
8912 and return error if so (we can't possibly extract sensible data if this is
8913 the case). Added a test case that detects this. Number 36. Now there are 60
8916 - Added 5 new libcurl options to curl/curl.h that can be used to control the
8917 persistent connection support in libcurl. They're also documented (fairly
8918 thoroughly) in the curl_easy_setopt.3 man page. Three of them are now
8919 implemented, although not really tested at this point... Anyway, the new
8920 implemented options are named CURLOPT_MAXCONNECTS, CURLOPT_FRESH_CONNECT,
8921 CURLOPT_FORBID_REUSE. The ones still left to write code for are:
8922 CURLOPT_CLOSEPOLICY and its related option CURLOPT_CLOSEFUNCTION.
8924 - Made curl (the actual command line tool) use the new libcurl 7.7 persistent
8925 connection support by re-using the same curl handle for every specified file
8926 transfer and after some more test case tweaking we have 100% test case OK.
8927 I made some test cases return HTTP/1.0 now to make sure that works as well.
8929 - Had to add 'Connection: close' to the headers of a bunch of test cases so
8930 that curl behaves "old-style" since the test http server doesn't do multiple
8931 connections... Now I get 100% test case OK.
8933 - The curl.haxx.se site, the main curl mailing list and my personal email are
8934 all dead today due to power blackout in the area where the main servers are
8937 - I've made persistance work over a squid HTTP proxy. I find it disturbing
8938 that it uses headers that aren't present in any HTTP standard though
8939 (Proxy-Connection:) and that makes me feel that I'm now on the edge of what
8940 the standard actually defines. I need to get this code excercised on a lot
8941 of different HTTP proxies before I feel safe.
8943 Now I'm facing the problem with my test suite servers (both FTP and HTTP)
8944 not supporting persistent connections and libcurl is doing them now. I have
8945 to fix the test servers to get all the test cases do OK.
8947 Daniel (8 March 2001)
8948 - Guenole Bescon reported that libcurl did output errors to stderr even if
8949 MUTE and NOPROGRESS was set. It turned out to be a bug and happens if
8950 there's an error and no ERRORBUFFER is set. This is now corrected.
8954 Daniel (8 March 2001)
8955 - "Transfer-Encoding: chunked" is no longer any trouble for libcurl. I've
8956 added two source files and I've run some test downloads that look fine.
8958 - HTTP HEAD works too, even on 1.1 servers.
8960 Daniel (5 March 2001)
8961 - The current 57 test cases now pass OK. It would suggest that libcurl works
8962 using the old-style with one connection per handle. The test suite doesn't
8963 handle multiple connections yet so there are no test cases for this.
8965 - I patched the telnet.c heavily to not use any global variables anymore. It
8966 should make it a lot nicer library-wise.
8968 - The file:// support was modified slightly to use the internal connect-first-
8971 Daniel (4 March 2001)
8976 Daniel (4 March 2001)
8977 - Now, there's even a basic check that a re-used connection is still alive
8978 before it is assumed so. A few first tests have proven that libcurl will
8979 then re-connect instead of re-use the dead connection!
8981 Daniel (2 March 2001)
8982 - Now they work intermixed as well. Major coolness!
8984 - More fiddling around, my 'tiny' client I have for testing purposes now has
8985 proved to download both FTP and HTTP with persistent connections. They do
8986 not work intermixed yet though.
8988 Daniel (1 March 2001)
8989 - Wilfredo Sanchez pointed out a minor spelling mistake in a man page and that
8990 curl_slist_append() should take a const char * as second argument. It does
8993 Daniel (22 February 2001)
8994 - The persistent connections start to look good for HTTP. On a subsequent
8995 request, it seems that libcurl now can pick an already existing connection
8996 if a suitable one exists, or it opens a new one.
8998 - Douglas R. Horner mailed me corrections to the curl_formparse() man page
9001 Daniel (20 February 2001)
9002 - Added the docs/examples/win32sockets.c file for our windows friends.
9004 - Linus Nielsen Feltzing provided brand new TELNET functionality and
9007 * Negotiation is now passive. Curl does not negotiate until the peer does.
9008 * Possibility to set negotiation options on the command line, currently only
9009 XDISPLOC, TTYPE and NEW_ENVIRON (called NEW_ENV).
9010 * Now sends the USER environment variable if the -u switch is used.
9011 * Use -t to set telnet options (Linus even updated the man page, awesome!)
9013 - Haven't done this big changes to curl for a while. Moved around a lot of
9014 struct fields and stuff to make multiple connections get connection specific
9015 data in separate structs so that they can co-exist in a nice way. See the
9016 mailing lists for discussions around how this is gonna be implemented. Docs
9017 and more will follow.
9019 Studied the HTTP RFC to find out better how persistent connections should
9020 work. Seems cool enough.
9022 Daniel (19 February 2001)
9023 - Bob Schader brought me two files that help set up a MS VC++ libcurl project
9024 easier. He also provided me with an up-to-date libcurl.def file.
9026 - I moved a bunch of prototypes from the public <curl/curl.h> file to the
9027 library private urldata.h. This is because of the upcoming changes. The
9028 low level interface is no longer being planned to become reality.
9030 Daniel (15 February 2001)
9031 - CURLOPT_POST is not required anymore. Just setting the POST string with
9032 CURLOPT_POSTFIELDS will switch on the HTTP POST. Most other things in
9033 libcurl already works this way, i.e they require only the parameter to
9034 switch on a feature so I think this works well with the rest. Setting a NULL
9035 string switches off the POST again.
9037 - Excellent suggestions from Rich Gray, Rick Jones, Johan Nilsson and Bjorn
9038 Reese helped me define a way how to incorporate persistent connections into
9039 libcurl in a very smooth way. If done right, no change may have to be made
9040 to older programs and they will just start using persistent connections when
9043 Daniel (13 February 2001)
9044 - Changed the word 'timeouted' to 'timed out' in two different error messages.
9045 Suggested by Larry Fahnoe.
9049 Daniel (9 February 2001)
9050 - Frank Reid and Cain Hopwood provided information and research around a HTTPS
9051 PUT/upload problem we seem to have. No solution found yet.
9053 Daniel (8 February 2001)
9054 - An interesting discussion is how to specify an empty password without having
9055 curl ask for it interactively? The current implmentation takes an empty
9056 password as a request for a password prompt. However, I still want to
9057 support a blank user field. Thus, today if you enter "-u :" (without user
9058 and password) curl will prompt for the password. Tricky. How would you
9059 specify you want the prompt otherwise?
9061 - Made the netrc parse result possible to use for other protocols than FTP and
9062 HTTP (such as the upcoming TELNET fixes).
9064 - The previously mentioned "MSVC++ problems" turned out to be a non-issue.
9066 - Added a HTTP file upload code example in the docs/examples/ section on
9069 - Adjusted the FTP response fix slightly.
9073 Daniel (7 February 2001)
9074 - S. Moonesamy found a flaw in the response reading function for FTP that
9075 could make libcurl not get out of the loop properly when it should, if
9076 libcurl got -1 returned when reading the socket.
9078 - I found a similar mistake in http.c when using a proxy and reading the
9079 results from the proxy connection.
9081 Daniel (6 February 2001)
9082 - S. Moonesamy pointed out that the VC makefile in src/ needed the libpath set
9083 for the debug build to work.
9085 - Daniel Gehriger stepped in to assist with the VC++ stuff Robert Weaver
9086 brought up yesterday.
9088 Daniel (5 February 2001)
9089 - Jun-ichiro itojun Hagino brought a big patch that brings IPv6-awareness to
9090 a bunch of different areas within libcurl.
9092 - Robert Weaver told me about the problems the MS VC++ 6.0 compiler has with
9093 the 'static' keyword on a number of libcurl functions. I might need to add a
9094 patch that redefines static when libcurl is compiled with that compiler.
9095 How do I know when VC++ compiles, anyone?
9097 Daniel (4 February 2001)
9098 - curl_getinfo() was extended with two new options:
9099 CURLINFO_CONTENT_LENGTH_DOWNLOAD and CURLINFO_CONTENT_LENGTH_UPLOAD. They
9100 return the full assumed content length of the transfer in the given
9101 direction. The CURLINFO_CONTENT_LENGTH_DOWNLOAD will be the Content-Length:
9102 size of a HTTP download. Added descriptions to the man page as well. This
9103 was done after discussions with Bob Schader.
9105 Daniel (3 February 2001)
9106 - Ingo Ralf Blum provided another fix that makes curl build under the more
9107 recent cygwin installations. It seems they've changed the preset defines to
9108 not include WIN32 anymore.
9112 Daniel (31 January 2001)
9113 - Curl_read() and curl_read() now return a ssize_t for the size, as it had to
9114 be able to return -1. The telnet support crashed due to this and there was a
9115 possibility to weird behavior all over. Linus Nielsen Feltzing helped me
9118 - Added a configure.in check for a working getaddrinfo() if IPv6 is requested.
9119 I also made the configure script feature --enable-debug which sets a couple
9120 of compiler options when used. It assumes gcc.
9122 Daniel (30 January 2001)
9123 - I finally took a stab at the long-term FIXME item I've had on myself, and
9124 now libcurl will properly work when doing a HTTP range-request that follows
9125 a Location:. Previously that would make libcurl fail saying that the server
9126 doesn't seem to support range requests.
9128 Daniel (29 January 2001)
9129 - I added a test case for the HTTP PUT resume thing (test case 33).
9133 Daniel (29 January 2001)
9134 - Yet another Content-Range change. Ok now? Bob Schader checks from his end
9135 and it works for him.
9137 Daniel (27 January 2001)
9138 - So the HTTP PUT resume fix wasn't good. There should appearantly be a
9139 Content-Range header when resuming a PUT.
9141 - I noticed I broke the download-check that verifies that a resumed HTTP
9142 download is actually resumed. It got broke because my new 'httpreq' field
9143 in the main curl struct. I should get slapped. I added a test case for
9144 this now, so I won't be able to ruin this again without noticing.
9146 - Added a test case for content-length verifying when downloading HTTP.
9148 - Made the progress meter title say if the transfer is being transfered. It
9149 makes the output slightly better for resumes.
9151 - When dealing with Location: and HTTP return codes, libcurl will not attempt
9152 to follow the spirit of RFC2616 better. It means that when POSTing to a
9153 URL that is being following to a second place, the standard will judge on
9154 what to do. All HTTP codes except 303 and 305 will cause curl to make a
9155 second POST operation. 303 will make a GET and 305 is not yet supported.
9157 I also wrote two test cases for this POST/GET/Location stuff.
9161 Daniel (26 January 2001)
9162 - Lots of mails back and forth with Bob Schader finally made me add a small
9163 piece of code in the HTTP engine so that HTTP upload resume works. You can
9164 now do an operation like 'curl -T file -C <offset> <URL>' and curl will PUT
9165 the ending part of the file starting at given offet to the specified URL.
9169 Daniel (25 January 2001)
9170 - I took hold of Rick Jones' question why we don't use recv() and send() for
9171 reading/writing to the sockets and I've now modified the sread() and
9172 swrite() macros to use them instead. If nothing else, they could be tested
9173 in the next beta-round coming right up.
9175 - Jeff Morrow found a problem with libcurl's usage of SSL_read() and supplied
9176 his research results in how to fix this. It turns out we have to invoke the
9177 function several times in some cases. The same goes for the SSL_write().
9179 I made some rather drastic changes all over libcurl to make all writes and
9180 reads get done on one single place so that this repeated-attempts thing
9181 would only have to be implemented at one point.
9183 - Rick Jones spotted that the 'total time' counter really didn't measure the
9184 total time very accurate on subsecond levels.
9186 - Johan Nilsson pointed out the need to more clearly specify that the timeout
9187 value you set for a download is for the *entire* download. There's currently
9188 no option available that sets a timeout for the connection phase only.
9190 Daniel (24 January 2001)
9191 - Ingo Ralf Blum submitted a series of patches required to get curl to compile
9192 properly with cygwin.
9194 - Robert Weaver posted a fix for the win32 section of the curl_getenv() code
9195 that corrected a potential memory leak.
9197 - Added comments in a few files in a sudden attempt to make the sources more
9198 easy to read and understand!
9200 Daniel (23 January 2001)
9201 - Added simple IPv6 detection in the configure script and made the version
9202 string add 'ipv6' to the enable section in that case. ENABLE_IPV6 will be
9203 set if curl is compiled with IPv6 support enabled.
9205 - Added a parser for IPv6-style specified IP-addresses in a URL. Thus, when
9206 IPv6 gets enabled soon, we can use URLs like '[0::1]:80'...
9208 - Made the URL globbing in the client possible to fail silently if there's an
9209 error in the globbing. It makes it almost intuitive, so when you don't
9210 follow the syntax rules, globbing is simply switched off and the raw string
9213 I still think we'll get problems with IPv6-style IP-addresses when we *want*
9214 globbing on parts of the URL as the initial part of the URL will for sure
9215 seriously confuse the globber.
9217 Daniel (22 January 2001)
9218 - Björn Stenberg supplied a progress meter patch that makes it look better even
9219 during slow starts. Previously it made some silly assumptions...
9221 - Added two FTP tests for -Q and -Q - stuff since it was being discussed on
9222 the mailing list. Had to correct the ftpserver.pl too as it bugged slightly.
9224 Daniel (19 January 2001)
9225 - Made the Location: parsers deal with any-length URLs. Thus I removed the last
9226 code that restricts the length of URLs that curl supports.
9228 - Added a --globoff test case (#28) and it quickly identified a memory problem
9229 in src/main.c that I took care of.
9233 Daniel (17 January 2001)
9234 - Made the two former files lib/download.c and lib/highlevel.c become the new
9235 lib/transfer.c which makes more sense. I also did the rename from Transfer()
9236 to Curl_Transfer() in the other source files that use the transfer function
9237 in the spirit of using Curl_ prefix for library-scoped global symbols.
9239 Daniel (11 January 2001)
9240 - Added -g/--globoff that switches OFF the URL globbing and thus enables {}[]
9241 letters to be part of the URL. Do note that RFC2396 section 2.4.3 explicitly
9242 mention these letters to be escaped. This was posted as a feature request by
9243 Jorge Gutierrez and as a bug by Terry.
9245 - Short options to curl that requires parameters can now be specified without
9246 having the option and its parameter space separated. -ofile works as good as
9247 -o file. -m20 is equal to -m 20. Do note that this goes for single-letter
9248 options only, verbose --long-style options still must be separated with
9249 space from their parameters.
9251 Daniel (8 January 2001)
9252 - Francis Dagenais reported that the SCO compiler still fails when compiling
9253 curl due to that getpass_r() prototype. I've now put it around #ifndef
9254 HAVE_GETPASS_R in an attempt to please the SCO systems.
9256 - Made some minor corrections to get the client to cleanup properly and I made
9257 the separator work again when getting multiple globbed URLs to stdout.
9259 - Worked with Loic Dachary to get the make dist and make distcheck work
9260 correctly. The 'maketgz' script is now using the automake generated 'make
9261 dist' when creating release archives. Loic successfully made 'make rpms'
9262 automatically build RPMs!
9264 Loic Dachary (6 January 2001)
9265 - Automated generation of rpm packages, no need to be root.
9267 - make distcheck generates a proper distribution (EXTRA_DIST
9268 in all Makefile.am modified to match FILES).
9270 Daniel (5 January 2001)
9271 - Huge client-side hack: now multiple URLs are supported. Any number of URLs
9272 can be specified on the command line, and they'll all be downloaded. There
9273 must be a corresponding -o or -O for each URL or the data will be written to
9274 stdout. This needs more testing, time to release a 7.6-pre package.
9276 - The krb4 support was broken in the release. Fixed now.
9278 - Huge internal symbol rename operation. All non-static but still lib-internal
9279 symbols should now be prefixed with 'Curl_' to prevent collisions with other
9280 libs. All public symbols should be prefixed with 'curl_' and the rest should
9281 be static and thus invisible to the outside world. I updated the INTERNALS
9282 document to say this as well.
9286 Daniel (4 January 2001)
9287 - As Kevin P Roth suggested, I've added text to the man page for every command
9288 line option and what happens when you specify that option more than
9289 once. That hasn't been exactly crystal clear before.
9291 - Made the configure script possible to run from outside the source-tree. For
9292 odd reasons I can't build curl properly outside though. It has to do with
9293 curl's dependencies on libcurl...
9295 - Cut off all older (dated 1999 and earlier) CHANGES entries from this file.
9296 The older piece is named CHANGES.0 and is added to the CVS repository in
9297 case anyone would need it.
9299 - I added another file 'CVS-INFO' to the CVS. It contains information about
9300 files in the CVS that aren't included in release archives and how to build
9301 curl when you get the sources off CVS.
9303 - Updated CONTRIBUTE and FAQ due to the new license.
9305 Daniel (3 January 2001)
9306 - Renamed README.libcurl to LIBCURL
9308 - Changed headers in all sources files to the new dual license concept of
9309 curl: use the MIT/X derivate license *or* MPL. The LEGAL file was updated
9310 accordingly and the MPL 1.1 and MIT/X derivate licenses are now part of the
9312 Daniel (30 December 2000)
9313 - Made all FTP commands get sent with the trailing CRLF in one single write()
9314 as splitting them up seems to confuse at least some firewalls (FW-1 being
9317 Daniel (19 December 2000)
9318 - Added file desrciptor and FILE handle leak detection to the memdebug system
9319 and thus I found and removed a file descriptor leakage in the ftp parts
9320 that happened when you did PORTed downloads.
9322 - Added an include <stdio.h> in <curl/curl.h> since it uses FILE *.
9324 Daniel (12 December 2000)
9325 - Multiple URL downloads with -O was still bugging. Not anymore I think or
9326 hope, or at least I've tried... :-O
9328 - Francois Petitjean fixed another -O problem
9332 Daniel (11 December 2000)
9333 - Cleaned up a few of the makefiles to use unix-style newlines only. As Kevin
9334 P Roth found out, at least one CVS client behaved wrongly when it found
9335 different newline conventions within the same file.
9337 - Albert Chin-A-Young corrected the LDFLAGS use in the configure script for
9340 Daniel (6 December 2000)
9341 - Massimo Squillace correctly described how libcurl could use session ids when
9342 doing SSL connections.
9344 - James Griffiths found out that curl would crash if the file you specify with
9345 -o is shorter than the URL! This took some hours to fully hunt down, but it
9348 Daniel (5 December 2000)
9349 - Jaepil Kim sent us makefiles that build curl using the free windows borland
9350 compiler. The root makefile now accepts 'make borland' to build curl with
9353 - Stefan Radman pointed out that the test makefiles didn't use the PERL
9354 variable that the configure scripts figure out. Actually, you still need
9355 perl in the path for the test suite to run ok.
9357 - Rich Gray found numerous portability problems:
9358 * The SCO compiler got an error on the getpass_r() prototype in getpass.h
9359 since the curl one differed from the SCO one
9360 * The HPUX compiler got an error because of how curl did the sigaction
9361 stuff and used a define HPUX doesn't have (or need).
9362 * A few more problems remain to be researched.
9364 - Paul Harrington experienced a core dump using https. Not much details yet.
9366 Daniel (4 December 2000)
9367 - Jörn Hartroth fixed a problem with multiple URLs and -o/-O.
9371 Daniel (1 December 2000)
9372 - Craig Davison gave us his updates on the VC++ makefiles, so now curl should
9373 build fine with the Microsoft compiler on windows too.
9375 - Fixed the libcurl versioning so that we don't ruin old programs when
9376 releasing new shared library interfaces.
9378 Daniel (30 November 2000)
9379 - Renamed docs/README.curl to docs/MANUAL to better reflect what the document
9382 Daniel (29 November 2000)
9383 - I removed a bunch of '#if 0' sections from the code. They only make things
9384 harder to follow. After all, we do have all older versions in the CVS.
9388 Daniel (28 November 2000)
9389 - I filled in more error codes in the man page error code list that had been
9392 - James Griffiths mailed me a fine patch that introduces the CURLOPT_MAXREDIRS
9393 libcurl option. When used, it'll prevent location following more than the
9394 set number of times. It is useful to break out of endless redirect-loops.
9396 Daniel (27 November 2000)
9397 - Added two test cases for file://.
9399 Daniel (22 November 2000)
9400 - Added the libcurl CURLOPT_FILETIME setopt, when set it tries to get the
9401 modified time of the remote document. This is a special option since it
9402 involves an extra set of commands on FTP servers. (Using the MDTM command
9403 which is not in the RFC959)
9405 curl_easy_getinfo() got a corresponding CURLINFO_FILETIME to get the time
9406 after a transfer. It'll return a zero if CURLOPT_FILETIME wasn't used or if
9407 the time wasn't possible to get.
9409 --head/-I used on a FTP server will now present a 'Last-Modified:' header
9410 if curl could get the time of the specified file.
9412 - Added the option '--cacert [file]' to curl, which allows a specified PEM
9413 file to be used to verify the peer's certificate when doing HTTPS
9414 connections. This has been requested, rather recently by Hulka Bohuslav but
9415 others have asked for it before as well.
9417 Daniel (21 November 2000)
9418 - Numerous fixes the test suite has brought into the daylight:
9420 * curl_unescape() could return a too long string
9421 * on ftp transfer failures, there could be memory leaks
9422 * ftp CWD could use bad directory names
9423 * memdebug now uses the mprintf() routines for better portability
9424 * free(NULL) removed when doing resumed transfers
9426 - Added a bunch of test cases for FTP.
9428 - General cleanups to make less warnings with gcc -Wall -pedantic.
9430 - I made the tests/ftpserver.pl work with the most commonly used ftp
9431 operations. PORT, PASV, RETR, STOR, LIST, SIZE, USER, PASS all work now. Now
9432 all I have to do is integrate the ftp server doings in the runtests.pl
9433 script so that ftp tests can be run the same way http tests already run.
9435 Daniel (20 November 2000)
9436 - Made libcurl capable of dealing with any-length URLs. The former limit of
9437 4096 bytes was a bit annoying when people wanted to use curl to really make
9438 life tough on a web server. Now, the command line limit is the most annoying
9439 but that can be circumvented by using a config file.
9441 NOTE: there is still a 4096-byte limit on URLs extracted from Location:
9444 - Corrected the spelling of 'resolve' in two error messages.
9446 - Alexander Kourakos posted a bug report and a patch that corrected it! It
9447 turned out that lynx and wget support lowercase environment variable names
9448 where curl only looked for the uppercase versions. Now curl will use the
9449 lowercase versions if they exist, but if they don't, it'll use the uppercase
9452 Daniel (17 November 2000)
9453 - curl_formfree() was added. How come no one missed that one before? I ran the
9454 test suite with the malloc debug enabled and got lots of "nice" warnings on
9455 memory leaks. The most serious one was this. There were also leaks in the
9456 cookie handling, and a few errors when curl failed to connect and similar
9457 things. More tests cases were added to cover up and to verify that these
9458 problems have been removed.
9460 - Mucho updated config file parser (I'm dead tired of all the bug reports and
9461 weird behaviour I get on the former one). It works slightly differently now,
9462 although I doubt many people will notice the differences. The main
9463 difference being that if you use options that require parameters, they must
9464 both be specified on the same line. With this new parser, you can also
9465 specify long options without '--' and you may separate options and
9466 parameters with : or =. It makes a config file line could look like:
9468 user-agent = "foobar and something"
9470 Parameters within quotes may contain spaces. Without quotes, they're
9471 expected to be a single non-space word.
9473 Had to patch the command line argument parser a little to make this work.
9475 - Added --url as an option to allow the URL to be specified this way. It makes
9476 way nicer config files. The previous way of specifying URLs in the config
9477 file doesn't work anymore.
9479 Daniel (15 November 2000)
9480 - Using certain characters in usernames or passwords for HTTP authentication
9481 failed. This was due to the mprintf() that had a silly check for letters,
9482 and if they weren't isprint() they weren't outputed "as-is". This caused
9483 passwords and usernames using '§' (for example) to fail.
9487 Daniel (15 November 2000)
9488 - 'tests/runtests.pl' now sorts the test cases properly when 'all' is used.
9490 Daniel (14 November 2000)
9491 - I fell over the draft-ietf-ftpext-mlst-12.txt Internet Draft titled
9492 "Extensions to FTP" that contains a defined way how the ftp command SIZE
9493 could be assumed to work.
9495 - Laurent Papier posted a bug report about using "-C -" and FTP uploading a
9496 file that isn't prsent on the server. The server might then return a 550 and
9497 curl will fail. Should it instead as Laurent Papier suggests, start
9498 uploading from the beginning as a normal upload?
9500 Daniel (13 November 2000)
9501 - Fixed a crash with the followlocation counter.
9503 - While writing test cases for the test suite, I discovered an old limitation
9504 that prevented -o and -T to be used at the same time. I removed this
9505 immediately as this has no relevance in the current libcurl.
9507 - Chris Faherty fixed a free-twice problem in lib/file.c
9509 - I fixed the perl http server problem in the test suite.
9513 Daniel (10 November 2000)
9514 - I've (finally) started working on the curl test suite. It is in the new
9515 tests/ directory. It requires sh and perl. There's a TCP server in perl and
9516 most of the other stuff running a pretty simple shell script.
9518 I've only made four test cases so far, but it proves the system can work.
9520 - Laurent Papier noticed that curl didn't set TYPE when doing --head checks
9521 for sizes on FTP servers. Some servers seem to return different sizes
9522 depending on whether ASCII or BINARY is used!
9524 - Laurent Papier detected that if you appended a FTP upload and everything was
9525 already uploaded, curl would hang.
9527 - Angus Mackay's getpass_r() in lib/getpass.c is now compliant with the
9528 getpass_r() function it seems some systems actually have.
9530 - Venkataramana Mokkapati detected a bug in the cookie parser and corrected
9531 it. If the cookie was set for the full host name (domain=full.host.com),
9532 the cookie was never sent back because of a faulty length comparison between
9533 the set domain length and the current host name.
9535 Daniel (9 November 2000)
9536 - Added a configure check for gethostbyname in -lsocket (OS/2 seems to need
9537 it). Added a check for RSAglue/rsaref for the cases where libcrypto is found
9538 but libssl isn't. I haven't verified this fix yet though, as I have no
9539 system that requires those libs to build.
9543 Daniel (7 November 2000)
9544 - Removed perror() outputs from getpass.c. Angus Mackay also agreed to a
9545 slightly modified license of the getpass.c file as the prototype was changed.
9547 Daniel (6 November 2000)
9548 - Added possibility to set a password callback to use instead of the built-in.
9549 They're controled with curl_easy_setopt() of course, the tags are
9550 CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA.
9552 - Used T. Bharath's thinking and fixed the timers that showed terribly wrong
9553 times when location: headers were followed.
9555 - Emmanuel Tychon discovered that curl didn't really like user names only in
9556 the URL. I corrected this and I also fixed the since long living problem
9557 with URL encoded user names and passwords in the URLs. They should work now.
9559 Daniel (2 November 2000)
9560 - When I added --interface, the new error code that was added with it was
9561 inserted in the wrong place and thus all error codes from 35 and upwards got
9562 increased one step. This is now corrected, we're back at the previous
9563 numbers. All new exit codes should be added at the end.
9565 Daniel (1 November 2000)
9566 - Added a check for signal() in the configure script so that if sigaction()
9567 isn't present, we can use signal() instead.
9569 - I'm having a license discussion going on privately. The issue is yet again
9570 GPL-licensed programs that have problems with MPL. I am leaning towards
9571 making a kind of dual-license that will solve this once and for all...
9573 Daniel (31 October 2000)
9574 - Added the packages/ directory. I intend to let this contain some docs and
9575 templates on how to generate custom-format packages for various platforms.
9576 I've now removed the RPM related curl.spec files from the archive root.
9578 Daniel (30 October 2000)
9579 - T. Bharath brought a set of patches that bring new functionality to
9580 curl_easy_getinfo() and curl_easy_setopt(). Now you can request peer
9581 certificate verification with the *setopt() CURLOPT_SSL_VERIFYPEER option
9582 and then use the CURLOPT_CAINFO to set the certificate to verify the remote
9583 peer against. After an such an operation with a verification request, the
9584 *_getinfo() option CURLINFO_SSL_VERIFYRESULT will return information about
9585 whether the verification succeeded or not.
9587 Daniel (27 October 2000)
9588 - Georg Horn brought us a splendid patch that solves the long-standing
9589 annoying problem with timeouts that made curl exit with silly exit codes
9590 (which as been commented out lately). This solution is sigaction() based and
9591 of course then only works for unixes (and only those unixes that actually
9592 have the sigaction() function).
9594 Daniel (26 October 2000)
9595 - Björn Stenberg supplied a patch that fixed the flaw mentioned by Kevin Roth
9596 that made the password get echoed when prompted for interactively. The
9597 getpass() function (now known as my_getpass()) was also fixed to not use any
9598 static buffers. This also means we cannot use the "standard" getpass()
9599 function even for those systems that have it, since it isn't thread-safe.
9601 - Kevin Roth found out that if you'd write a config file with '-v url', the
9602 url would not be used as "default URL" as documented, although if you wrote
9603 it 'url -v' it worked! This has been corrected now.
9605 - Kevin Roth's idea of using multiple -d options on the same command line was
9606 just brilliant, and I couldn't really think of any reason why we shouldn't
9607 support it! The append function always append '&' and then the new -d
9608 chunk. This enables constructs like the following:
9610 curl -d name=daniel -d age=unknown foobarsite.com
9612 Daniel (24 October 2000)
9613 - I fixed the lib/memdebug.c source so that it compiles on Linux and other
9614 systems. It will be useful one day when someone else but me wants to run the
9615 memory debugging system.
9617 Daniel (23 October 2000)
9618 - I modified the maketgz and configure scripts, so that the configure script
9619 will fetch the version number from the include/curl/curl.h header files, and
9620 then the maketgz doesn't have to rebuild the configure script when I build
9623 - Björn Stenberg and Linus Nielsen correctly pointed out that curl was silly
9624 enough to not allow @-letters in passwords when they were specified with the
9625 -u or -U flags (CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD). This also
9626 suggests that curl probably should url-decode the password piece of an URL
9627 so that you could pass an encoded @-letter there...
9629 Daniel (20 October 2000)
9630 - Yet another http server barfed on curl's request that include the port
9631 number in the Host: header always. I now only include the port number if it
9632 isn't the default (80 for HTTP, 443 for HTTPS). www.perl.com turned out to
9633 run one of those nasty servers.
9635 - The PHP4 module for curl had problems with referer that seems to have been
9636 corrected just yesterday. (Sterling Hughes of the PHP team confirmed this)
9638 Daniel (17 October 2000)
9639 - Vladimir Oblomov reported that the -Y and -y options didn't work. They
9640 didn't work for me either. This once again proves we should have that test
9643 - I finally changed the error message libcurl returns if you try a https://
9644 URL when the library wasn't build with SSL enabled. It will now return this
9646 "libcurl was built with SSL disabled, https: not supported!"
9648 I really hope it will make it a bit clearer to users where the actual
9653 Daniel (16 October 2000)
9654 - I forgot to remove some of the malloc debug defines from the makefiles in
9655 the release archive (of course).
9659 Daniel (16 October 2000)
9660 - The buffer overflow mentioned below was posted to bugtraq on Friday 13th.
9662 Daniel (12 October 2000)
9663 - Colin Robert Phipps elegantly corrected a buffer overflow. It could be used
9664 by an evil ftp server to crash curl. I took the opportunity of replacing a
9665 few other sprintf()s into snprintf()s as well.
9667 Daniel (11 October 2000)
9668 - Found some more memory leaks. This new simple memory debugger has turned out
9673 Daniel (9 October 2000)
9674 - Florian Koenig pointed out that the bool typedef in the curl/curl.h include
9675 file was breaking PHP 4.0.3 compiling. The bool typedef is not used in the
9676 public interface and was wrongly inserted in that header file.
9678 - Jörg Hartroth corrected a minor memory leak in the src/urlglob.c stuff. It
9679 didn't harm anyone since the memory is free()ed on exit anyway.
9681 - Corrected the src/main.c. We use the _MPRINTF_REPLACE #define to use our
9682 libcurl-printf() functions. This gives us snprintf() et al on all
9683 platforms. I converted the allocated useragent string to one that uses a
9686 - I've set an #if 0 section around the Content-Transfer-Encoding header
9687 generated in lib/formdata.c. This will hopefully make curl do more
9688 PHP-friendly multi-part posts.
9692 Daniel (9 October 2000)
9693 - Nico Baggus found out that curl's ability to force a ASCII download when
9694 using FTP was no longer working! I corrected this. This problem was probably
9695 introduced when I redesigned libcurl for version 7.
9697 - Georg Horn provided a source example that proved a memory leak in libcurl.
9698 I added simple memory debugging facilities and now we can make libcurl log
9699 all memory fiddling functions. An additional perl script is used to analyze
9700 the output logfile and to match malloc()s with free()s etc. The memory leak
9701 Georg found turned out to be the main cookie struct that cookie_cleanup()
9702 didn't free! The perl script is named memanalyze.pl and it is available in
9703 the CVS respository, not in the release archive.
9705 Daniel (8 October 2000)
9706 - Georg Horn found a GetHost() problem. It turned out it never assigned the
9707 pointer in the third argument properly! This could make a crash, or at best
9712 Daniel (6 October 2000)
9713 - Is the -F post following the RFC 1867 spec? We had this dicussion on the
9714 mailing list since it appears curl can't post -F form posts to a PHP
9715 receiver... I've been in touch with the PHP developers about this.
9717 - Domenico Andreoli found out that the long option '--proxy' wasn't working
9718 anymore! The option parser got confused when I added the --proxytunnel for
9719 7.3. This was indeed a very old flaw that hasn't turned up until now...
9721 - Jörn Hartroth provided patches, updated makefiles and two new files for DLL
9722 stuff on win32. He also pointed out that lib source files were compiled with
9723 -I../src which isn't only wrong but plain stupid!
9725 - Troels Walsted Hansen fixed a problem with HTTP resume. Curl previously used
9726 a local variable badly, that could lead to crashes.
9730 Daniel (4 October 2000)
9731 - More docs written. The curl_easy_getinfo.3 man page is now pretty accurate,
9732 as is the -w section in curl.1. I added two options to enable the user to
9733 get information about the received headers' size and the size of the HTTP
9734 request. T. Bharath requested them.
9736 Daniel (3 October 2000)
9737 - Corrected a sever free() before use in the new add_buffer_send()! ;-)
9741 Daniel (3 October 2000)
9742 - Jason S. Priebe sent me patches that changed the way curl issues HTTP
9743 requests. The entire request is now issued in one single shot. It didn't do
9744 this previously, and it has turned out that since the common browsers do it
9745 this way, some sites have turned out to work with browsers but not with
9746 curl! Although this is not a client-side problem, we want to be able to
9747 fully emulate browsers, and thus we have now adjusted the networking layer
9748 to slightly more appear as a browser. I adjusted Jason's patch, the faults
9751 Daniel (2 October 2000)
9752 - Anyone who ever uploaded data with curl on a slow link has noticed that the
9753 progess meter is updated very infrequently. That is due to the large buffer
9754 size curl is using. It reads 50Kb and sends it, updates the progress meter
9755 and loops. 50Kb is very much on a slow link, although it is pretty neat to
9758 I've now made an adjustment that makes curl use a 2Kb buffer for uploads to
9759 start with. If curl's average upload speed is faster than buffer size bytes
9760 per second, curl will increase the used buffer size up to max 50Kb. It
9761 should make the progress meter work better.
9765 Daniel (29 September 2000)
9766 - Ripped out the -w stuff from the library and put in the curl tool. It gets
9767 all the relevant info from the library using the new curl_easy_getinfo()
9770 - brad at openbsd.org mailed me a patch that corrected my kerberos mistake and
9771 removed a compiler warning from hostip.c that OpenBSD people get.
9773 Daniel (28 September 2000)
9774 - Of course (I should probably get punished somehow) I didn't properly correct
9775 the #include lines for the base64 stuff in the kerberos sources in the just
9776 released 7.3 package. They still include the *_krb.h files! Now, the error
9777 is sooo very easy to spot and fix so I won't bother with a quick bug fix
9778 release. I'll post a patch whenever one is needed instead. It'll be
9779 available in the CVS in a few minutes anyway.
9783 Daniel (28 September 2000)
9784 - Removed the base64_krb.[ch] files. They've now replaced the former
9787 Daniel (26 September 2000)
9788 - Updated some docs.
9790 - I changed the OpenSSL fix to work with older versions as well. The posted
9791 patch was only working with 0.9.6 and no older ones.
9795 Daniel (25 September 2000)
9796 - Erdmut Pfeifer informed us that curl didn't build with OpenSSL 0.9.6 and
9797 showed us what needed to get patched in order to make it build properly
9800 - Dirk Kruschewski found a bug in the cookie parser. I made an alternative
9801 approach to the solution Dirk himself suggested. The bug made a cookie
9802 header that didn't end with a trailing semicolon to not get parsed.
9804 - I've marked -c and -t deprecated now. If you use any of them, curl will tell
9805 you to use "-C -" or "-T -" instead. I don't think occupying two letters for
9806 nearly identical functions is good use. Also, -T - kind of follows the curl
9807 tradition of using - for stdin where a file name is expected.
9809 Daniel (23 September 2000)
9810 - Martin Hedenfalk provided the patch that finally made the krb4 ftp upload
9813 Daniel (21 September 2000)
9814 - The kerberos code is not quite thread-safe yet. There are a few more globals
9815 that need to be take care of. Let's get the upload working first!
9817 Daniel (20 September 2000)
9818 - Richard Prescott solved another name lookup buffer size problem. I took this
9819 opportunity to rewrite the GetHost() function. With these large buffer
9820 sizes, I think keeping them as local arrays quickly turn ugly. I now use
9821 malloc() to get the buffer memory. Thanks to this, I now can realloc() to a
9822 large buffer in case of demand (errno == ERANGE) in case a solution like
9823 that would become necessary. I still want to avoid that kind of nastiness.
9825 - Tried to compile and run curl on Linux for alpha and FreeBSD for alpha. Went
9826 as smooth as it could.
9828 - Added a docs/examples directory with two tiny example sources that show how
9829 to use libcurl. I hope users will supply me with more useful examples
9832 - Applied a patch by Jörn Hartroth to no longer use the word 'inteface' in the
9833 config struct in the src/main.c file since certain compilers have that word
9834 "reservered". I figure that is some kind of C++ decease.
9836 - Updated the curl.1 man page with --interface and --krb4.
9838 - Modified the base64Encode() function to work like the kerberos one, so that
9839 I could remove the use of that. There is no need for *two* base64 encoding
9844 Daniel (19 September 2000)
9845 - The kerberos4-layer source code that is much "influenced" by the original
9846 krb4 source code, through yafc into curl, was using quite a lot of global
9847 variables. libcurl can't work properly with globals like that why I had to
9848 clean up almost every function in the new security.c to make them use
9849 connection specific variables instead of the globals. I just hope I didn't
9850 destroy anything now... :-) configure updated, version string now reflects
9851 krb4 built-in. It almost works now. Only uploads are still being naughty.
9855 Daniel (18 September 2000)
9856 - Martin Hedenfalk supplied a major patch that introduces krb4-ftp support to
9857 curl. Martin is the primary author of the ftp client named yafc and he did
9858 not hesitate to help us implement this when I asked him. Many and sincere
9859 thanks to a splendid effort. It didn't even take many hours!
9861 - Stephen Kick supplied a big patch that introduces the --interface flag to
9862 the curl tool and CURLOPT_INTERFACE for libcurl. It allows you to specify an
9863 outgoing interface to use for your request. This may not work on all
9864 platforms. This needs testing.
9866 - Richard Prescott noticed that curl on Tru64 unix could core dumped if the
9867 name didn't resolve properly. This was due to the GetHost() function not
9868 returning an error even though it failed on some platforms!
9870 Daniel (15 September 2000)
9871 - Updated all sorts of documents in regards to the new proxytunnel support.
9875 Daniel (15 September 2000)
9876 - Kai-Uwe Rommel pointed out a problem in the httpproxytunnel stuff for ftp.
9877 Adjusted it. Added better info message when setting up the tunnel and the
9878 pasv message when doing the second connect.
9882 Daniel (15 September 2000)
9883 - libcurl now allows "httpproxytunnel" to an arbitrary host and port name. The
9884 second connection on ftp needed that.
9886 - TheArtOfHTTPScripting was corrected all over. I both type and spell really
9889 Daniel (14 September 2000)
9890 - -p/--proxytunnel was added to 'curl'. It uses the new
9891 CURLOPT_HTTPPROXYTUNNEL libcurl option that allows "any" protocol to tunnel
9892 through the specified http proxy. At the moment, this should work with ftp.
9894 Daniel (13 September 2000)
9895 - Jochen Schaeuble found that file:// didn't work as expected. Corrected this
9896 and mailed the patch to the mailing list.
9898 Daniel (7 September 2000)
9899 - I changed the #define T() in curl.h since it turned out it wasn't really
9900 a good symbol to use (when you compiled PHP with curl as a module, that
9901 define collided with some IMAP define or something). This was posted to the
9904 - I added extern "C" stuff in two header files to better allow libcurl usage
9905 in C++ sorces. Discussions on the libcurl list with Danny Horswell lead to
9910 Daniel (31 August 2000)
9911 - Albert Chin-A-Young fixed the configure script *again* and now it seems to
9912 detect Linux name resolving properly! (heard that before?)
9914 - Troels Walsted Hansen pointed out that downloading a file containing the
9915 letter '+' from an ftp server didn't work. It did work from HTTP though and
9916 the reason was my lame URL decoder.
9918 - I happened to notice that -I didn't at all work on ftp anymore. I corrected
9923 Daniel (30 August 2000)
9924 - Understanding AIX is a hard task. I believe I'll never figure out why they
9925 solve things so differently from the other unixes. Now, I'm left with the
9926 AIX 4.3 run-time warnings about duplicate symbols that according to this
9927 article (http://www.geocrawler.com/archives/3/405/1999/9/0/2593428/) is a
9928 libtool flaw. I tried the mentioned patch, although that stops the linking
9931 So, if I select to ignore the ld warnings there are compiler warnings that
9932 fill the screen pretty bad when curl compiles. It turns out that if I want
9933 to '#include <arpa/inet.h>', I can get tid of the warnings by include the
9934 following three include files before that one:
9936 #include <net/if_dl.h>
9937 #include <sys/mbuf.h>
9938 #include <netinet/if_ether.h>
9940 Now, is it really sane to add those include files before arpa/inet.h in all
9941 the source files that include it?
9943 Thanks to Albert Chin-A-Young at thewrittenword.com who gave me the AIX
9944 login to try everything on.
9946 Daniel (24 August 2000)
9947 - Jan Schmidt supplied us a new VC6 makefile for Windows as the previous one
9948 was not up to date but lacked several object files.
9950 - More work on the naming.
9952 - Albert Chin-A-Young provided a configure-check for large file support, as
9953 some systems seem to need that for them to work. Had to change the position
9954 for the config.h include file in every .c file in the libcurl dir...
9956 - As suggested on the mailing list (by Troy Engel), I did use a --data-binary
9957 option instead of the messy way I've left described below. It seems to
9958 work. The libcurl fix remained the same as yesterday.
9960 Daniel (23 August 2000)
9961 - Back on the -d stripping newlines thing. The 'plain post' thing was added
9962 when I had no thought of that one could actually post binary data with
9963 it. Now, I have to add this functionality in a graceful manner and I think
9964 I've managed to come up with a way: '-d @file;binary' will thus post the
9965 file binary, exactly as its contents are. It is implemented with a new
9966 *setopt() option (CURLOPT_POSTFIELDSIZE) to set the postfield size, since
9967 libcurl can't strlen() the data in these cases.
9969 - Albert Chin-A-Young made some very serious efforts and all the name
9970 resolving problems seem to have been sorted out now on all the platforms
9971 that previously showed them. I'll make another release now anyday because of
9974 - The FAQ was much enhanced when it comes to the licensing issues thanks to
9977 Daniel (21 August 2000)
9978 - Rick Welykochy pointed out a problem when you use -d to post and you want to
9979 keep the newlines, as curl strips them off as a bonus before posting...
9980 This needs to be addressed.
9984 Daniel (21 August 2000)
9985 - Got more people involved in the gethostbyname_r() mess. Caolan McNamara sent
9986 me configure-code that turned out to be very similar to my existing tests
9987 which only make me more sure I'm on the right path. I changed the order of
9988 the tests slightly, as it seems that some compilers don't yell error if a
9989 function is used with too many parameters. Thus, the first tested function
9990 will seem ok... Let's hope more compilers think of too-few parameters as bad
9991 manners, as we're now trying the functions in that order; fewer first. I
9992 should also add that Lars Hecking mailed me and volunteered to run tests on
9993 a few odd systems. Coalan is keeping his work over at
9994 http://www.csn.ul.ie/~caolan/publink/gethostbyname_r/. Might be handy in the
9997 Daniel (18 August 2000)
9998 - I noticed I hadn't increased the name lookup buffer in lib/ftp.c. I don't
9999 think this is the reason for the continued trouble though.
10001 Daniel (17 August 2000)
10002 - Fred Noz corrected my stupid mistakes in the gethostbyname_r() fluff. It
10003 should affect some AIX, Digital Unix and HPUX 10 systems.
10005 Daniel (15 August 2000)
10006 - Mathieu Legare compiled and build 7.1 without errors on both AIX 4.2 as well
10007 as AIX 4.3. Now why did problems occur before?
10009 - Fred Noz reported a -w/--write-out bug that caused it to malfunction when
10010 used combined with multiple URL retrievales. All but the first display got
10013 Daniel (11 August 2000)
10014 - Jason Priebe and an anonymous friend found some host names the Linux version
10015 of curl could not resolve. It turned out the buffer used to retrieve that
10016 information was too small. Fixed. One could argue about the usefulness of
10017 not having the slightest trace of a man page for gethostbyname_r() on my
10018 Linux Redhat installation...
10020 Daniel (10 August 2000)
10021 - Balaji S Rao was first in line to note the missing possibility to replace
10022 the Content-Type: and Content-Length: headers when doing -d posts. I added
10023 the possibility just now. It seems some people wants to do standard posts
10024 using custom Content-Types.
10026 Daniel (8 August 2000)
10027 - Mike Dowell correctly discovered that curl did not approve of URLs with no
10028 user name but password. As in 'http://:foo@haxx.se'. I corrected this.
10032 Daniel (7 August 2000)
10033 - My AIX 4 fix does not work. I need help from a AIX 4 hacker.
10035 - I added my new document in the docs directory. It is aimed to become a sort
10036 of tutorial on how to do HTTP scripting with curl.
10038 Daniel (4 August 2000)
10039 - Working with Rich Gray on compiling curl for lots of different platforms.
10040 My fix for AIX 3.2 was not good enough and was slightly changed, I had to
10041 move an include file before another, as is now described in the source.
10043 AIX 4.2 (4.X?) has different gethostbyname_r() and gethostbyaddr_r()
10044 functions that the configure script didn't check for and thus the compile
10045 broke with an error. I have now changed the gethostbyname_r() check in the
10046 configure file to support all three versions of both these functions. My
10047 implementation that uses the AIX-style is though not yet verified and I may
10048 get problems to fix it if it turns out to bug since I don't have access to
10049 any system using that.
10051 For problems like that, I made the configure script allow --disable-thread
10052 to completely switch off the check for threadsafe versions of a few
10053 functions and thus go with the "good old versions" that tend to work
10054 although will break thread-safeness for libcurl. Most people won't use
10055 libcurl for other things than curl though, and curl doesn't need a
10058 - Working on my big tutorial about HTTP scripting with curl.
10060 Daniel (1 August 2000)
10061 - Rich Gray spotted a problem in src/setup.h caused by a #define strequal()
10062 that was just a left-over from passed times. The strequal() is now a true
10063 function supplied by libcurl for a portable case insensitive string
10064 comparison. I added the prototypes in include/curl.h and removed the
10065 now obsolete #define.
10067 - Igor Khristophorov made a fix to allow resumed download from Sun's
10068 JavaWebServer/1.1.1. It seems that their server sends bad Content-Range
10071 - The makefiles forced a static library build, which is bad since we now use
10072 libtool and thus have excellent shared library support! Albert Chin-A-Young
10077 Daniel (1 August 2000)
10078 - Albert Chin-A-Young pointed out that 'make install' did not properly create
10079 the header include directory, why it failed to install the header files as
10080 it should. Automake isn't really equipped to deal with subdirectories
10081 without Makefiles in any nice way. I had to run ahead and add Makefiles in
10082 both include and include/curl before I managed to create a top-level
10083 makefile that succeeds in install everything properly!
10085 - Ok, no more "features" added now. Let's just verify that there's no major
10088 Daniel (31 July 2000)
10089 - Both Jeff Schasny and Ketil Froyn asked me how to tell curl not to send one
10090 of those internally generated headers. They didn't settle with the blank
10091 ones you could tell curl to use. I rewrote the header-replace stuff a
10092 little. Now, if you replace an internal header with your own and that new
10093 one is a blank header you will only remove the internal one and not get any
10094 blank. I couldn't figure out any case when you want that blank header.
10096 Daniel (29 July 2000)
10097 - It struck me that the lib used localtime() which is not thread-safe, so now
10098 I use localtime_r() in the systems that has it.
10100 - I went through this entire document and removed all email addresses and left
10101 names only. I've really made an effort to always note who brought be bug
10102 reports or fixes, but more and more people ask me to remove the email
10103 addresses since they become victims for spams this way. Gordon Beaton got me
10106 Daniel (27 July 2000)
10107 - Jörn Hartroth found out that when you specified a HTTP proxy in an
10108 environment variable and used -L, curl failed in the second fetch. I
10109 corrected this problem and posted a patch to the list. No need for an extra
10110 beta release just for this.
10114 Daniel (27 July 2000)
10115 - So, libtool replaced two of my files with symbolic links and I forgot to add
10116 the two new libtool files to the release archive (and they were added as
10117 symlinks as well!) This of course lead to that the configure script failed
10122 Daniel (25 July 2000)
10123 - Kristian Köhntopp <kris at koehntopp.de> brought a fix that makes libcurl
10124 libtoolified, just as we've wanted for a while now. He also made the
10125 recently added man pages get installed properly on 'make install' and some
10126 other nice cleanups.
10128 - In a discussion with Eetu Ojanen it struck me that if we use curl to get a
10129 page using a password, and that page then sends a Location: to another
10130 server that curl follows, curl will send the user name and password to that
10133 Now, I'll never be able to make curl do Location: following all that perfect
10134 and you're all sooner or later required to write a script to do several
10135 fetches when you're doing advanced stuff, but now I've modified curl to at
10136 least *only* send the user name and password to the original server. Which
10137 means that if get a page from server A with a password, that forwards curl
10138 to server B, curl won't use the password there. If server B then forwards
10139 curl back to server A again, the password will be used again.
10141 This is not a perfect implementation, as in a browser case it would only use
10142 the password if the left-prefix of the first path is the same. I just think
10143 that this fix prevents a somewhat lurky "security hole".
10145 As a side-note in this subject: HTTP passwords are sent in cleartext and
10146 will never be considered to be safe or secure. Use HTTPS for that.
10148 - As discussed on the mailing list, I converted the FTP response reading
10149 function into using select() which then allows timeouts (even under win32!)
10150 if the command-reply session gets too slow or dies completely. I made a
10151 default timeout on 3600 seconds unless anything else is specified, since I
10152 don't think anyone wants to wait more than that for a single character to
10155 - Torsten Foertsch <torsten.foertsch at gmx.net> brought a set of fixes for
10156 the rfc1867 form posts. He introduced 'name=<file' which brings a means to
10157 suuply very large text chunks read from the given file name. It differs from
10158 'name=@file' in the way that this latter thing is marked in the uploaded
10159 contents as a file upload, while the first is just text (as in a input or
10160 textarea field). Torsten also corrected a bug that would happen if you used
10161 %s or similar in a -F file name.
10163 - As discovered by Nico Baggus <Nico.Baggus at mail.ing.nl>, when transferring
10164 files to/from FTP using type ASCII curl should not expect the transfer to be
10165 the exact size reported by the server as the file size. Since ASCII may very
10166 well mean that the content is translated while transfered, the final size
10167 may very well differ. Therefor, curl now ignores the file size when doing
10168 ASCII transfers in FTP.
10170 Daniel (24 July 2000)
10171 - Added CURLOPT_PROXYPORT to the curl_easy_setopt() call to allow the proxy
10172 port number to be set separately from the proxy host name.
10174 - Andrew <andrew at ugh.net.au> pointed out a netrc manual bug.
10176 - The FTP transfer code now accepts a 250-code as well as the previously
10177 accepted 226, after a successful file transfer. Mohan <mnair at
10178 evergreen-funds.com> pointed this out.
10180 - The check for *both* nsl and socket was never added in the v7 configure.in
10181 when I moved the main branch. I re-added that check to configure.in. This was
10182 discovered by Rich Gray.
10184 - Howard, Blaise <Blaise.Howard at factiva.com> pointed out a missing free() in
10185 curl_disconnect() which of course meant libcurl ate memory.
10187 - Brian E. Gallew noted that the HTTP 'Host:' header curl sent did not
10188 properly include the port number if non-default ports were used. This should
10189 now have been fixed.
10191 - HTTP connect errors now return errors earlier. This was most notably causing
10192 problems when the HTTPS certificate had problems and later caused a crash.
10193 Many thanks to Gregory Nicholls <gnicholls at level8.com> for discovering
10194 and suggesting a fix...
10196 Daniel (21 June 2000)
10197 - After a "bug report" I received where the user was using both -F and -I in a
10198 HTTP request (it severly confused the library I should add), I added some
10199 checks to src/main.c that prevents setting more than one HTTP request
10200 command, no matter what the user wants! ;-)
10204 Daniel (20 June 2000)
10205 - I did a major replace in many files to use the new curl domain haxx.se
10206 instead of the previous one.
10208 - As Eetu Ojanen suggested, I finally took the step and now libcurl no longer
10209 makes a POST after it has followed a location. When the initial POST has
10210 been done, it'll turned into a GET for the further requests. This is only
10211 interesting when using -L/--location *and* doing a POST at the same time.
10213 While messing with this, I added another weird feature I call 'auto
10214 referer'. If you append ';auto' to the right of a given referer string (or
10215 only use that string as referer), libcurl will automatically set the
10216 previoud URL as refered when it follows a Location: and gets a succeeding
10219 - My hero Rich Gray found the very obscure FTP bug that happened to him only
10220 when passing through a particular firewall and using the PORT command. It
10221 turned out that PORT was the only command in the lib/ftp.c source that
10222 didn't send a proper \r\n sequence but instead used the faulty \n which as
10223 it seemed is supported by most major ftp servers... :-O
10227 Daniel (16 June 2000)
10228 - I had avoided this long enough now, so I moved the alternative progress bar
10229 stuff from the lib and added it to the client code. This is now using the
10230 recently added progress callback and it seems to work pretty much like
10231 before. Since it is only one progress bar and you and download and upload at
10232 the same time, this bar shows the combined progress of both directions. This
10233 code was just ported from the old place to this, Lars is still our saviour!
10234 ;-) This also made the documentation more accurate since I never removed
10235 this function from any docs! Although I now removed the CURLOPT_PROGRESSMODE
10236 from the library since the lib has only one internal progress meter and it
10237 will never get another. It is although likely that the internal one also
10238 will be moved to the client code in the future (when I have other means of
10239 getting the writeout data and move that too to the client).
10241 - I took the opportunity to verify that standard progress meter works and I
10242 found out it didn't get inited properly. Grrr. I corrected that as well.
10244 Daniel (15 June 2000)
10245 - I thought I'd better verify that the -F option still works in v7 and of
10246 course it didn't... :-/ Anyway, I had the problems I could discover
10247 corrected. About one month of beta testing and not a single person has used
10248 this feature with v7?
10250 - Björn correctly pointed out that the --progress-bar still doesn't work in
10253 Daniel (14 June 2000)
10254 - Tim Tassonis discovered that curl 7 didn't handle normal http POST as it
10255 should. I corrected this.
10259 Daniel (14 June 2000)
10260 - Björn Stenberg pointed out several problems (related to win32 compiling):
10261 lib/strequal.c had a bad #ifdef for one of the string comparisons (win32)
10262 src/main.c had several minor problems
10263 lib/makefile.m32 had getpass.[co] twice
10264 src/config-win32.h lacked the HAVE_FCNTL_H define
10265 both config-win32.h files now only set the HAVE_UNISTD_H define if the
10266 define MINGW32 is set, and I modified src/makefile.m32 and lib/makefile.m32
10271 Daniel (14 June 2000)
10272 - Applied Luong Dinh Dung's comments about a few win32 compile problems.
10274 - Applied Björn Stenberg's suggested fix that turns the win32 stdout to
10275 binary. It won't do it if the -B / --use-ascii option is used. That option
10276 is now an extended version of the previous -B /--ftp--ascii. The flag was
10277 already in use be the ldap as well so the new name fits pretty good. The
10278 libcyrl CURLOPT_TRANSFERTEXT was also introduced as an alias to the now
10279 obsolete CURLOPT_FTPASCII. Can't verify this fix myself as I have no win32
10282 Daniel (13 June 2000)
10283 - Luong Dinh Dung <dung at sch.bme.hu> found a problem in curl_easy_cleanup()
10284 since it free()ed the main curl struct *twice*. This is now corrected.
10286 Daniel (9 June 2000)
10287 - Updated the RESOURCES file, added a README.win32 file.
10289 Daniel (8 June 2000)
10290 - So I finally added the progress callback to the *setopt() options and it
10291 should work now. I don't have the energy to write any test program for it
10293 - Made the callback function typedefs public in curl/curl.h for comfort. Just
10294 in case anyone wanna fiddle with such pointers.
10295 - Updated the curl_easy_setopt() man page accordingly.
10299 Daniel (2 June 2000)
10300 - I noticed that when doing Location: following, we lost custom headers in all
10301 but the first request.
10302 - Removed the 'HttpPost' struct and moved the header stuff to the more generic
10304 - Added some better slist-cleanups in src/main.c
10308 Daniel (31 May 2000)
10309 - So I discovered that I released the 7.0.2beta without it being able to
10310 compile under Linux. gethostbyname_r() and gethostbyaddr_r() turned out to
10311 feature a different amount of arguments on different systems so I had to add
10312 a configure check for this and adjust the code slightly.
10316 Daniel (29 May 2000)
10317 - Corrected the bits.* assignments when using CURLOPT options that only
10318 toggles one of those bits.
10320 - Applied the huge patches from David LeBlanc <dleblanc at qnx.com> that add
10321 usage of the gethostbyname_r() and similar functions in case they're around,
10322 since that make libcurl much better threadsafe in many systems (such as
10323 solaris). I added the checks for these functions to the configure script.
10325 I can't explain why, but the inet_ntoa_r() function did not appear in my
10326 Solaris include files, I had to add my own include file for this for now.
10328 Daniel (22 May 2000)
10329 - Jörn Hartroth brought me fixes to make the win32 version compile properly as
10330 well as a rename of the 'interface' field in the urldata struct, as it seems
10331 to be reserved in some gcc versions!
10333 - Rich Gray struck back with yet some portability reports. Data General DG/UX
10334 needed a little fix in lib/ldap.c since it doesn't have RTLD_GLOBAL defined.
10335 More fixes are expected as a result of Richies very helpful work.
10339 Daniel (21 May 2000)
10340 - Updated lots of #defines, enums and variable type names in the library. No
10341 more weird URG or URLTAG prefixes. All types and names should be curl-
10342 prefixed to avoid name space clashes. The FLAGS-parameter to the former
10343 curl_urlget() has been converted into a bunch of flags to use in separate
10344 setopt calls. I'm still focusing on the easy-interface, as the curl tool is
10347 - Bjorn Reese has provided me with an asynchronous name resolver that I plan
10348 to use in upcoming versions of curl to be able to gracefully timeout name
10353 Daniel (18 May 2000)
10354 - Introduced LIBCURL_VERSION_NUM to the curl.h include file to better allow
10355 source codes to be dependent on the lib version. This define is now set to
10356 a dexadecimal number, with 8 bits each for major number, minor number and
10357 patch number. In other words, version 1.2.3 would make it 0x010203. It also
10358 makes a larger number a newer version.
10360 Daniel (17 May 2000)
10361 - Martin Kammerhofer correctly pointed out several flaws in the FTP range
10362 option. I corrected them.
10363 - Removed the win32 winsock init crap from the lib to the src/main.c file
10364 in the application instead. They can't be in the lib, especially not for
10365 multithreaded purposes.
10367 Daniel (16 May 2000)
10368 - Rewrote the src/main.c source to use the new easy-interface to libcurl 7.
10369 There is still more work to do, but the first step is now taken.
10370 <curl/easy.h> is the include file to use.
10372 Daniel (14 May 2000)
10373 - FTP URLs are now treated slightly different, more according to RFC 1738.
10374 - FTP sessions are now performed differently, with CWD commands to change
10375 directory instead of RETR/STOR/LIST with the full path. Discussions with
10376 Rich Gray made me notice these problems.
10377 - Janne Johansson discovered and corrected a buffer overflow in the
10378 src/usrglob.c file.
10379 - I had to add a lib/strequal.c file for doing case insensitive string
10380 compares on all platforms.
10382 Daniel (8 May 2000):
10383 - Been working lots on the new lib.
10384 - Together with Rich Gray, I've tried to adjust the configure script to work
10385 better on the NCR MP-RAS Unix.
10387 Daniel (2 May 2000):
10388 - Albert Chin-A-Young pointed out that I had a few too many instructions in
10389 configure.in that didn't do any good.
10391 Daniel (24 April 2000):
10392 - Added a new paragraph to the FAQ about what to do when configure can't
10393 find OpenSSL even though it is installed. Supplied by Bob Allison
10395 Daniel (12 April 2000):
10396 - Started messing around big-time to convert the old library interface to a
10399 Daniel (8 April 2000):
10400 - Made the progress bar look better for file sizes between 9999 kilobytes
10401 and 100 megabytes. They're now displayed XX.XM.
10402 - I also noticed that ftp fetches through HTTP proxies didn't add the user
10403 agent string. It does now.
10404 - Habibie <habibie at MailandNews.com> supplied a pretty good way to build RPMs
10405 on a Linux machine. It still a) requires me to be root to do it, b) leaves
10406 the rpm packages laying at some odd place on my disk c) doesn't work to
10407 build the ssl version of curl since I didn't install openssl from an rpm
10408 package so now the rpm crap thinks I don't have openssl and refuses to build
10409 a package that depends on ssl... Did I mention I don't get along with RPM?
10410 - Once again I received a bug report about autoconf not setting -L prior to -l
10411 on the command line when checking for libs. In this case it made the native
10412 cc compiler on Solaris 7 to fail the OpenSSL check. This has previously been
10413 reported to cause problems on HP-UX and is a known flaw in autoconf 2.13. It
10414 is a pity there's no newer release around...
10416 Daniel (4 April 2000):
10417 - Marco G. Salvagno supplied me with two fixes that
10418 appearantly makes the OS/2 port work better with multiple URLs.
10420 Daniel (2 April 2000):
10421 - Another Location: fix. This time, when curl connected to a port and then
10422 followed a location with an absolute URL to another port, it misbehaved.
10424 Daniel (27 March 2000):
10425 - H. Daphne Luong pointed out that curl was wrongly
10426 messing up the proxy string when fetching a document through a http proxy,
10427 which screwed up multiple fetches such as in location: followings.
10429 Daniel (23 March 2000):
10430 - Marco G. Salvagno corrected my badly applied patch he
10431 actually already told me about!
10433 - H. Daphne Luong brought me a fix that now makes curl
10434 ignore select() errors in the download if errno is EINTR, which turns out to
10435 happen every now and then when using libcurl multi-threaded...
10437 Daniel (22 March 2000):
10438 - Wham Bang supplied a couple of win32 fixes. HAVE_UNAME
10439 was accidentally #defined in config-win32.h, which it shouldn't have been.
10440 The HAVE_UNISTD_H is not defined when compiling with the Makefile.vc6
10441 makefile for MS VC++.
10443 Daniel (21 March 2000):
10444 - I removed the AC_PROG_INSTALL macro from configure.in, since it appears that
10445 one of the AM_* macros searches for a BSD compatible install already. Janne
10446 Johansson made me aware of this.
10450 Daniel (21 March 2000):
10451 - Paul Harrington quickly pointed out to me that 6.5.1
10452 crashes hard. I upload 6.5.2 now as quickly as possible! The problem was
10453 the -D adjustments in src/main.c.
10457 Daniel (20 March 2000):
10458 - An anonymous post on sourceforge correctly pointed out a possible buffer
10459 overflow in the curl_unescape() function for URL conversions. The main
10460 problem with this bug is that the ftp download uses that function and this
10461 single- byte overflow could lead to very odd bugs (as one reported by Janne
10464 Daniel (19 March 2000):
10465 - Marco G. Salvagno supplied me with a series of patches
10466 that now allows curl to get compiled on OS/2. It even includes a section in
10467 the INSTALL file. Very nice job!
10469 Daniel (17 March 2000):
10470 - Wham Bang supplied a patch for the lib/Makefile.vc6
10471 file. We still need some fixes for the config-win32.h since it appears that
10472 VC++ and mingw32 have different opinions about (at least) unistd.h's
10475 Daniel (15 March 2000):
10476 - I modified the -D/--dump-header workings so that it doesn't write anything
10477 to the file until it needs to. This way, you can actually use -b and -D
10478 on the same file if you want repeated invokes to store and read the cookies
10479 in that one single file.
10481 - Poked around in lots of texts. Added the BUGS file for bug reporting stuff.
10482 Added the classic HTTP POST question to the FAQ, removed some #ifdef WIN32
10483 stuff from the sources (they're covered by the config-win32.h now).
10485 - Pascal Gaudette fixed a missing ldap.c problem in the
10486 Makefile.vc6 file. He also addressed a problem in src/config-win32.h.
10488 Daniel (14 March 2000):
10489 - Paul Harrington pointed out that the 'http_code' variable in the -w output
10490 was never written. I fixed it now.
10492 - Janne Johansson reported the complaints that OpenBSD does
10493 when getdate.c #includes malloc.h. It claims stdlib.h should be included
10494 instead. I added #ifdef HAVE_MALLOC_H code in getdate.y and two checks in
10495 the configure.in for malloc.h and stdlib.h.
10499 Daniel (13 March 2000):
10500 - <curl at spam.wolvesbane.net> pointed out that the way curl sent cookies in a
10501 single line wasn't enjoyed by IIS4.0 servers. In my view, that is not what
10502 the standards say, but I added a white space between the name/value pairs to
10503 perhaps make them work better.
10505 - Added the perl check back in the configure.in again since the mkhelp.pl
10508 - Made some beautifications in the curl man page.
10510 Daniel (3 March 2000):
10511 - Jörn helped me update the config-win32.h files with HAVE_SETVBUF and
10514 Daniel (3 March 2000):
10515 - Uploaded the 6.5pre2 package.
10517 Daniel (2 March 2000):
10518 - Removed the perl-programs from the distribution, they never made many people
10519 happy and I'll still keep them available on the web.
10521 - Added the -w and -N stuff to the man page. Documented the new progress meter
10522 display in README.curl.
10524 - Jörn Hartroth, Chris <cbayliss at csc.come> and Ulf
10525 Möller from the openssl development team helped bringing me the details for
10526 fixing an OpenSSL usage flaw. It became apparent when they released openssl
10527 0.9.5 since that barfed on curl's bad behavior (not seeding a random number
10530 - Yet another option: -N/--no-buffer disables buffering in the output stream.
10531 Probably most useful for very slow transfers when you really want to get
10532 every byte curl receives within some preferred time. Andrew <tmr at gci.net>
10535 - Damien Adant mailed me his fixes for making curl compile on Ultrix.
10537 Daniel (24 February 2000):
10538 - Applied Jörn Hartroth's fixes for config-win32.h and lib/Makefile.w32.
10540 I should also make a note here, if nothing else to myself, that when using
10541 the %-syntax for variables in DOS command prompts, you must use two %-
10542 letters for each one since that is an escape letter there! Maybe I should
10543 use another letter instead!
10545 - Added more variables to -w:
10553 - Made -w@filename read the syntax from a file and -w@- reads the syntax from
10554 stdin in the good old "standard" curl way.
10556 Daniel (22 February 2000):
10557 - Released a 6.5pre1 version to get some test and user feedback.
10559 Daniel (21 February 2000):
10561 - I added the -w/--write-out flag and some variables to go with it. -w is a
10562 single string, whatever you enter there will be written out when curl has
10563 completed a successful request. There are some variable substitutions and
10564 they are specified as '%{variable}' (without the quotes). Variables that
10565 exist as of this moment are:
10567 total_time - total transfer time in seconds (with 2 decimals)
10568 size_download - total downloaded amount of bytes
10569 size_upload - total uploaded amount of bytes
10570 speed_download - the average speed of the entire download
10571 speed_upload - the average speed of the entire upload
10573 I will of course add more variables, but I need input on these and others.
10575 - It struck me that the -# progress bar will be hard to just apply on the new
10576 progress bar concept. I need some feedback on this before that'll get re-
10579 Daniel (16 February 2000):
10580 - Jörn Hartroth brought me some fixes for the progress meter and I continued
10581 working on it. It seems to work for http download, http post, ftp download
10582 and ftp upload. It should be a pretty good test it works generally good.
10584 - Still need to add the -# progress bar into the new style progress interface.
10586 - Gonna have a go at my new output option parameter next.
10588 Daniel (15 February 2000):
10589 - The progress meter stuff is slowly taking place. There's more left before it
10590 is working ok and everything is tested, but we're reaching there. Slowly!
10592 Daniel (11 February 2000):
10593 - Paul Marquis fixed the config file parsing of curl to
10594 deal with any-length lines, removing the previous limit of 4K.
10596 - Eetu Ojanen's suggestion of supporting the @-style for -b
10597 is implemented. Now -b@<filename> works as well as the old style. -b@- also
10598 similarly reads the cookies from stdin.
10600 - Reminder: -D should not write to the file until it needs to, in the same way
10601 -o does. That would enable curl to use -b and -D on the same file...
10603 - Ellis Pritchard made getdate.y work for MacOS X.
10605 - Paul Harrington helped me out finding the crash in the
10606 cookie parser. He also pointed out curl's habit of sending empty cookies to
10609 Daniel (8 February 2000):
10610 - Ron Zapp corrected a problem in src/urlglob.c that
10611 prevented curl from getting compiled on sunos 4. The problem had to do
10612 with the difference in sprintf() return code types.
10614 - Transfer() should now be able to download and upload simultaneously. Let's
10615 do some progress meter fixes later this week.
10617 Daniel (31 January 2000):
10618 - Paul Harrington found another core dump in the cookie
10619 parser. Curl doesn't properly recognize the 'version' keyword and I think
10620 that is what caused this. I need to refresh some specs on cookies and see
10621 what else curl lacks to improve this a bit more once and for all.
10623 RFC 2109 clearly specifies how cookies should be dealt with when they are
10624 compliant with that spec. I don't think many servers are though...
10626 - Mark W. Eichin found that while curl is uploading a form
10627 to a web site, it doesn't read incoming data why it'll hang after a while
10628 since the socket "pipe" becomes full.
10630 It took me two hours to rewrite Download() and Upload() into the new
10631 single function Transfer(). It even seems to work! More testing is required
10632 of course... I should get the header-sending together in a kind of queue
10633 and let them get "uploaded" in Transfer() as well.
10635 - Zhibiao Wu pointed out a curl bug in the location: area,
10636 although I did not get a reproducible way to do this why I have to wait
10637 with fixing anything.
10639 - Bob Schader suggested I should implement resume
10640 support for the HTTP PUT operation, and as I think it is a valid suggestion
10643 Daniel (25 January 2000):
10644 - M Travis Obenhaus pointed out a manual mixup with -y and -Y that was
10647 - Jens Schleusener pointed out a problem to compile
10648 curl on AIX 4.1.4 and gave me a solution. This problem was already fixed
10649 by Jörn's recent #include modifications!
10651 Daniel (19 January 2000):
10652 - Oskar Liljeblad pointed out and corrected a problem
10653 in the Location: following system that made curl following a location: to a
10654 different protocol to fail.
10656 At January 31st I re-considered this fix and the surrounding source code. I
10657 could not really see that the patch did any difference, why I removed it
10658 again for further research and debugging. (It disabled location: following
10659 on server not running on default ports.)
10661 - Jörn Hartroth brought a fix that once again
10662 made it possible to select progress bar.
10664 - Jörn also fixed a few include problems.
10668 Daniel (17 January 2000):
10669 - Based on suggestions from Björn Stenberg, I made the
10670 progress deal better with larger files and added a "Time" field which shows
10671 the time spent on the download so far.
10672 - I'm now using the CVS repository on sourceforge.net, which also allows web
10673 browsing. See http://curl.haxx.nu.
10675 Daniel (10 January 2000):
10676 - Renumbered some enums in curl/curl.h since tag number 35 was used twice!
10677 - Added "postquote" support to the ftp section that enables post-ftp-transfer
10679 - Now made the -Q/--quote parameter recognize '-' as a prefix, which means
10680 that command will be issued AFTER a successful ftp transfer. This can of
10681 course be used to delete or rename a file after it has been uploaded or
10682 downloaded. Use your imagination! ;-)
10683 - Since I do the main development on solaris 2.6 now, I had to download and
10684 install GNU groff to generate the hugehelp.c file. The solaris nroff cores
10685 on the man page! So, in order to make the solaris configure script find a
10686 better result I made gnroff get checked prior to the regular nroff.
10687 - Added all the curl exit codes to the man page.
10688 - Jim Gallagher properly tracked down a bug in autoconf
10689 2.13. The AC_CHECK_LIB() macro wrongfully uses the -l flag before the -L
10690 flag to 'ld' which causes the HP-UX 10.20 flavour to fail on all libchecks
10691 and therefore you can't make the configure script find the openssl libs!
10693 Daniel (28 December 1999):
10694 - Tim Verhoeven correctly identified that curl
10695 doesn't support URL formatted file names when getting ftp. Now, there's a
10696 problem with getting very weird file names off FTP servers. RFC 959 defines
10697 that the file name syntax to use should be the same as in the native OS of
10698 the server. Since we don't know the peer server system we currently just
10699 translate the URL syntax into plain letters. It is still better and with
10700 the solaris 2.6-supplied ftp server it works with spaces in the file names.
10702 Daniel (27 December 1999):
10703 - When curl parsed cookies straight off a remote site, it corrupted the input
10704 data, which, if the downloaded headers were stored made very odd characters
10705 in the saved data. Correctly identified and reported by Paul Harrington.
10707 Daniel (13 December 1999):
10708 - General cleanups in the library interface. There had been some bad kludges
10709 added during times of stress and I did my best to clean them off. It was
10710 both regarding the lib API as well as include file confusions.
10712 Daniel (3 December 1999):
10713 - A small --stderr bug was reported by Eetu Ojanen...
10715 - who also brought the suggestion of extending the -X flag to ftp list as
10716 well. So, now it is and the long option is now --request instead. It is
10717 only for ftp list for now (and the former http stuff too of course).
10719 Lars J. Aas (24 November 1999):
10720 - Patched curl to compile and build under BeOS. Doesn't work yet though!
10722 - Corrected the Makefile.am files to allow putting object files in
10723 different directories than the sources.
10727 Daniel (23 November 1999):
10728 - I've had this major disk crash. My good old trust-worthy source disk died
10729 along with the machine that hosted it. Thank goodness most of all the
10730 things I've done are either backed up elsewhere or stored in this CVS
10733 - Michael S. Steuer pointed out a bug in the -F handling
10734 that made curl hang if you posted an empty variable such as '-F name='. It
10735 was one of those old bugs that never have worked properly...
10737 - Jason Baietto pointed out a general flaw in the HTTP
10738 download. Curl didn't complain if it was prematurely aborted before the
10739 entire download was completed. It does now.
10741 Daniel (19 November 1999):
10742 - Chris Maltby very accurately criticized the lack of
10743 return code checks on the fwrite() calls. I did a thorough check for all
10744 occurrences and corrected this.
10746 Daniel (17 November 1999):
10747 - Paul Harrington pointed out that the -m/--max-time option
10748 doesn't work for the slow system calls like gethostbyname()... I don't have
10749 any good fix yet, just a slightly less bad one that makes curl exit hard
10750 when the timeout is reached.
10752 - Bjorn Reese helped me point out a possible problem that might be the reason
10753 why Thomas Hurst experience problems in his Amiga version.
10755 Daniel (12 November 1999):
10756 - I found a crash in the new cookie file parser. It crashed when you gave
10757 a plain http header file as input...
10761 Daniel (10 November 1999):
10762 - I kind of found out that the HTTP time-conditional GETs (-z) aren't always
10763 respected by the web server and the document is therefore sent in whole
10764 again, even though it doesn't match the requested condition. After reading
10765 section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
10766 my own check as well. If curl thinks the condition isn't met, the transfer
10767 is aborted prematurely (after all the headers have been received).
10769 - After comments from Robert Linden I also rewrote some parts of the man page
10770 to better describe how the -F works.
10772 - Michael Anti put up a new curl download mirror in
10773 China: http://www.pshowing.com/curl/
10775 - I added the list of download mirrors to the README file
10777 - I did add more explanations to the man page
10779 Daniel (8 November 1999):
10780 - I made the -b/--cookie option capable of reading netscape formatted cookie
10781 files as well as normal http-header files. It should be able to
10782 transparently figure out what kind of file it got as input.
10784 Daniel (29 October 1999):
10785 - Another one of Sebastiaan van Erk's ideas (that has been requested before
10786 but I seem to have forgotten who it was), is to add support for ranges in
10787 FTP downloads. As usual, one request is just a request, when they're two
10788 it is a demand. I've added simple support for X-Y style fetches. X has to
10789 be the lower number, though you may omit one of the numbers. Use the -r/
10790 --range switch (previously HTTP-only).
10792 - Sebastiaan van Erk suggested that curl should be
10793 able to show the file size of a specified file. I think this is a splendid
10794 idea and the -I flag is now working for FTP. It displays the file size in
10796 Content-Length: XXXX
10797 As it resembles normal headers, and leaves us the opportunity to add more
10798 info in that display if we can come up with more in the future! It also
10799 makes sense since if you access ftp through a HTTP proxy, you'd get the
10800 file size the same way.
10802 I changed the order of the QUOTE command executions. They're now executed
10803 just after the login and before any other command. I made this to enable
10804 quote commands to run before the -I stuff is done too.
10806 - I found out that -D/--dump-header and -V/--version weren't documented in
10809 - Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
10810 some text about this in the man page for the range option. The thread in
10811 the mailing list that started this was initiated by Michael Anti.
10813 - I get reports about nroff crashes on solaris 2.6+ when displaying the curl
10814 man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
10815 reported and brought the suggestion.
10817 - In a dialogue with Johannes G. Kristinsson we came
10818 up with the idea to let -H/--header specified headers replace the
10819 internally generated headers, if you happened to select to add a header
10820 that curl normally uses by itself. The advantage with this is not entirely
10821 obvious, but in Johannes' case it means that he can use another Host: than
10822 the one curl would set.
10824 Daniel (27 October 1999):
10825 - Jongki Suwandi brought a nice patch for (yet another) crash when following
10826 a location:. This time you had to follow a https:// server's redirect to
10831 Daniel (21 October 1999):
10832 - I think I managed to remove the suspicious (nil) that has been seen just
10833 before the "Host:" in HTTP requests when -v was used.
10834 - I found out that if you followed a location: when using a proxy, without
10835 having specified http:// in the URL, the protocol part was added once again
10836 when moving to the next URL! (The protocol part has to be added to the
10837 URL when going through a proxy since it has no protocol-guessing system
10839 - Benjamin Ritcey reported a core dump under solaris 2.6
10840 with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
10841 that occurred after the download was done and completed.
10842 - Benjamin found ftp downloads to show the first line of the download meter
10843 to get written twice, and I removed that problem. It was introduced with
10844 the multiple URL support.
10845 - Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
10846 honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
10847 case-insensitive..." HTTP header parsing assumed a certain casing. Dan
10848 also provided me with a patch that corrected this, which I took the liberty
10849 of editing slightly.
10850 - Dan Zitter also provided a nice patch for config.guess to better recognize
10852 - Dan also corrected a minor problem in the lib/Makefile that caused linking
10855 Daniel (19 October 1999):
10856 - Len Marinaccio came up with some problems with curl. Since Windows has a
10857 crippled shell, it can't redirect stderr and that causes trouble. I added
10858 --stderr today which allows the user to redirect the stderr stream to a
10861 Daniel (18 October 1999):
10862 - The configure script now understands the '--without-ssl' flag, which now
10863 totally disable SSL/https support. Previously it wasn't possible to force
10864 the configure script to leave SSL alone. The previous functionality has
10865 been retained. Troy Engel helped test this new one.
10867 Version 6.1 (October 17 1999)
10869 Daniel (17 October 1999):
10870 - I ifdef'ed or commented all the zlib stuff in the sources and configure
10871 script. It turned out we needed to mock more with zlib than I initially
10872 thought, to make it capable of downloading compressed HTTP documents and
10873 uncompress them on the fly. I didn't mean the zlib parts of curl to become
10874 more than minor so this means I halt the zlib expedition for now and wait
10875 until someone either writes the code or zlib gets updated and better
10876 adjusted for this kind of usage. I won't get into details here, but a
10877 short a summary is suitable:
10878 - zlib can't automatically detect whether to use zlib or gzip
10879 decompression methods.
10880 - zlib is very neat for reading gzipped files from a file descriptor,
10881 although not as nice for reading buffer-based data such as we would
10883 - there are still some problems with the win32 version when reading from
10884 a file descriptor if that is a socket
10886 Daniel (14 October 1999):
10887 - Moved the (external) include files for libcurl into a subdirectory named
10888 curl and adjusted all #include lines to use <curl/XXXX> to maintain a
10889 better name space and control of the headers. This has been requested.
10891 Daniel (12 October 1999):
10892 - I modified the 'maketgz' script to perform a 'make' too before a release
10893 archive is put together in an attempt to make the time stamps better and
10894 hopefully avoid the double configure-running that use to occur.
10896 Daniel (11 October 1999):
10897 - Applied Jörn's patches that fixes zlib for mingw32 compiles as well as
10898 some other missing zlib #ifdef and more text on the multiple URL docs in
10903 Daniel (6 October 1999):
10904 - Douglas E. Wegscheid sent me a patch that made the exact same thing as I
10905 just made: the -d switch is now capable of reading post data from a named
10906 file or stdin. Use it similarly to the -F. To read the post data from a
10909 curl -d @path/to/filename www.postsite.com
10911 or let curl read it out from stdin:
10913 curl -d @- www.postit.com
10915 Jörn Hartroth (3 October 1999):
10916 - Brought some more patches for multiple URL functionality. The MIME
10917 separation ideas are almost scrapped now, and a custom separator is being
10918 used instead. This is still compile-time "flagged".
10921 - Updated curl.1 with multiple URL info.
10923 Daniel (30 September 1999):
10924 - Felix von Leitner brought openssl-check fixes for configure.in to work
10925 out-of-the-box when the openssl files are installed in the system default
10928 Daniel (28 September 1999)
10929 - Added libz functionality. This should enable decompressing gzip, compress
10930 or deflate encoding HTTP documents. It also makes curl send an accept that
10931 it accepts that kind of encoding. Compressed contents usually shortens
10932 download time. I *need* someone to tell me a site that uses compressed HTTP
10933 documents so that I can test this out properly.
10935 - As a result of the adding of zlib awareness, I changed the version string
10936 a little. I plan to add openldap version reporting in there too.
10938 Daniel (17 September 1999)
10939 - Made the -F option allow stdin when specifying files. By using '-' instead
10940 of file name, the data will be read from stdin.
10942 Version 6.0 (September 14 1999)
10944 Daniel (13 September 1999)
10945 - Added -X/--http-request <request> to enable any HTTP command to be sent.
10946 Do not that your server has to support the exact string you enter. This
10947 should possibly a string like DELETE or TRACE.
10949 - Applied Douglas' mingw32-fixes for the makefiles.
10951 Daniel (10 September 1999)
10952 - Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
10953 servers return code properly after the --quote commands were issued. It
10954 took anything non 200 as an error, when all 2XX codes should be accepted as
10957 - Sending cookies to the same site in multiple lines like curl used to do
10958 turned out to be bad and breaking the cookie specs. Curl now sends all
10959 cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
10960 doubt that many servers do use that syntax (yet).
10962 Daniel (8 September 1999)
10963 - Jörn helped me make sure it still compiles nicely with mingw32 under win32.
10965 Daniel (7 September 1999)
10966 - FTP upload through proxy is now turned into a HTTP PUT. Requested by
10969 - Added the ldap files to the .m32 makefile.
10971 Daniel (3 September 1999)
10972 - Made cookie matching work while using HTTP proxy.
10974 Bjorn Reese (31 August 1999)
10975 - Passed his ldap:// patch. Note that this requires the openldap shared
10976 library to be installed and that LD_LIBRARY_PATH points to the
10977 directory where the lib will be found when curl is run with a
10980 Jörn Hartroth (31 August 1999)
10981 - Made the Mingw32 makefiles into single files.
10982 - Made file:// work for Win32. The same code is now used for unix as well for
10983 performance reasons.
10985 Douglas E. Wegscheid (30 August 1999)
10986 - Patched the Mingw32 makefiles for SSL builds.
10988 Matthew Clarke (30 August 1999)
10989 - Made a cool patch for configure.in to allow --with-ssl to specify the
10990 root dir of the openssl installation, as in
10992 ./configure --with-ssl=/usr/ssl_here
10994 - Corrected the 'reconf' script to work better with some shells.
10996 Jörn Hartroth (26 August 1999)
10997 - Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
11002 Daniel (25 August 1999)
11003 - John Weismiller pointed out a bug in the header-line
11004 realloc() system in download.c.
11006 - I added lib/file.[ch] to offer a first, simple, file:// support. It
11007 probably won't do much good on win32 system at this point, but I see it
11010 - Made the release archives get a Makefile in the root dir, which can be
11011 used to start the compiling/building process easier. I haven't really
11012 changed any INSTALL text yet, I wanted to get some feed-back on this
11015 Daniel (17 August 1999)
11016 - Another Location: bug. Curl didn't do proper relative locations if the
11017 original URL had cgi-parameters that contained a slash. Nusu's page
11020 - Corrected the NO_PROXY usage. It is a list of substrings that if one of
11021 them matches the tail of the host name it should connect to, curl should
11022 not use a proxy to connect there. Pointed out to me by Douglas
11023 E. Wegscheid. I also changed the README text a little regarding this.
11025 Daniel (16 August 1999)
11026 - Fixed a memory bug with http-servers that sent Location: to a Location:
11027 page. Nusu's page showed this too.
11029 - Made cookies work a lot better. Setting the same cookie name several times
11030 used to add more cookies instead of replacing the former one which it
11031 should've. Nusu <nus at intergorj.ro> brought me an URL that made this
11032 painfully visible...
11034 Troy (15 August 1999)
11035 - Brought new .spec files as well as a patch for configure.in that lets the
11036 configure script find the openssl files better, even when the include
11037 files are in /usr/include/openssl
11041 Daniel (13 August 1999)
11042 - SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
11043 OpenSSL. Now why couldn't they simply add a *new* function instead of
11044 modifying the parameters of an already existing function? This way, we get
11045 a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
11046 to come up with a #if construction that deals with this...
11048 - Made curl output the SSL version number get displayed properly with 0.9.4.
11050 Troy (12 August 1999)
11051 - Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
11054 Daniel (12 August 1999)
11055 - I had to copy a good <arpa/telnet.h> include file into the curl source
11056 tree to enable the silly win32 systems to compile. The distribution rights
11057 allows us to do that as long as the file remains unmodified.
11059 - I corrected a few minor things that made the compiler complain when
11060 -Wall -pedantic was used.
11062 - I'm moving the official curl web page to http://curl.haxx.nu. I think it
11063 will make it easier to remember as it is a lot shorter and less cryptic.
11064 The old one still works and shows the same info.
11066 Daniel (11 August 1999)
11067 - Albert Chin-A-Young mailed me another correction for NROFF in the
11068 configure.in that is supposed to be better for IRIX users.
11070 Daniel (10 August 1999)
11071 - Albert Chin-A-Young helped me with some stupid Makefile things, as well as
11072 some fiddling with the getdate.c stuff that he had problems with under
11073 HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
11074 yacc or bison is found by the configure script. Since this is slightly new,
11075 we need to test the output getdate.c with win32 systems to make sure it
11076 still compiles there.
11078 Daniel (5 August 1999)
11079 - I've just setup a new mailing list with the intention to keep discussions
11080 around libcurl development in it. I mainly expect it to be for thoughts and
11081 brainstorming around a "next generation" library, rather than nitpicking
11082 about the current implementation or details in the current libcurl.
11084 To join our happy bunch of future-looking geeks, enter 'subscribe
11085 <address>' in the body of a mail and send it to
11086 libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
11087 talk and everything else should still be kept in this mailing list. I've
11088 started to archive this mailing list and have put the libcurl web page at
11089 www.fts.frontec.se/~dast/libcurl/.
11091 - Stefan Kanthak contacted me regarding a few problems in the configure
11092 script which he discovered when trying to make curl compile and build under
11093 Siemens SINIX-Z V5.42B2004!
11095 - Marcus Klein very accurately informed me that src/version.h was not present
11096 in the CVS repository. Oh, how silly...
11098 - Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
11099 support. If you run curl like 'curl telnet://host' you'll get all output on
11100 the screen and curl will read input from stdin. You'll be able to login and
11101 run commands etc, but since the output is buffered, expect to get a little
11104 This is still in its infancy and it might get changed. We need your
11105 feed-back and input in how this is best done.
11107 WIN32 NOTE: I bet we'll get problems when trying to compile the current
11108 lib/telnet.c on win32, but I think we can sort them out in time.
11110 - David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
11111 defined for getdate.c to compile properly on HP-UX 11.0. I updated the
11112 configure script to check for alloca.h which should make it.
11114 Daniel (4 August 1999)
11115 - I finally got to understand Marcus Klein's ftp download resume problem,
11116 which turns out to be due to different outputs from different ftp
11117 servers. It makes ftp download resuming a little trickier, but I've made
11118 some modifications I really believe will work for most ftp servers and I do
11119 hope you report if you have problems with this!
11121 - Added text about file transfer resuming to README.curl.
11123 Daniel (2 August 1999)
11124 - Applied a progress-bar patch from Lars J. Aas. It offers
11125 a new styled progress bar enabled with -#/--progress-bar.
11127 T. Yamada <tai at imasy.or.jp> (30 July 1999)
11128 - It breaks with segfault when 1) curl is using .netrc to obtain
11129 username/password (option '-n'), and 2) is automatically redirected to
11130 another location (option '-L').
11132 There is a small bug in lib/url.c (block starting from line 641), which
11133 tries to take out username/password from user- supplied command-line
11134 argument ('-u' option). This block is never executed on first attempt since
11135 CONF_USERPWD bit isn't set at first, but curl later turns it on when it
11136 checks for CONF_NETRC bit. So when curl tries to redo everything due to
11137 redirection, it segfaults trying to access *data->userpwd.
11141 Daniel (30 July 1999)
11142 - Steve Walch pointed out that there is a memory leak in the formdata
11143 functions. I added a FormFree() function that is now used and supposed to
11146 - Mark Wotton reported:
11147 'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
11148 correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
11149 0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
11150 don't know whether it is curl or SSLeay that is to blame for that.
11153 Reported an FTP upload resume bug that I really can't repeat nor understand.
11154 I leave it here so that it won't be forgotten.
11156 Daniel (29 July 1999)
11157 - Costya Shulyupin suggested support for longer URLs when following Location:
11158 and I could only agree and fix it!
11160 - Leigh Purdie found a problem in the upload/POST department. It turned out
11161 that http.c accidentaly cleared the pointer instead of the byte counter
11164 - Costya Shulyupin pointed out a problem with port numbers and Location:. If
11165 you had a server at a non-standard port that redirected to an URL using a
11166 standard port number, curl still used that first port number.
11168 - Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
11169 and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
11170 the 302-code that the follow location header outputs it will never show any
11171 html on location: pages. I have now made it look for >=400 codes if
11172 CONF_FOLLOWLOCATION is set.
11174 - 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
11177 - Joshua Swink and Rick Welykochy were the first to point out to me that the
11178 latest OpenSSL package now have moved the standard include path. It is now
11179 in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
11180 option for the configure script to use that as the primary path, and I
11181 leave the former path too to work with older packages of OpenSSL too.
11183 Daniel (9 June 1999)
11184 - I finally understood the IRIX problem and now it seem to compile on it!
11185 I am gonna remove those #define strcasecmp() things once and for all now.
11187 Daniel (4 June 1999)
11188 - I adjusted the FTP reply 227 parser to make the PASV command work better
11189 with more ftp servers. Appearantly the Roxen Challanger server replied
11190 something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
11191 and Mark Butler brought a solution for it.
11193 Daniel (26 May 1999)
11194 - Rearranged. README is new, the old one is now README.curl and I added a
11195 README.libcurl with text I got from Ralph Beckmann.
11197 - I also updated the INSTALL text.
11199 Daniel (25 May 1999)
11200 - David Jonathan Lowsky correctly pointed out that curl didn't properly deal
11201 with form posting where the variable shouldn't have any content, as in curl
11202 -F "form=" www.site.com. It was now fixed.
11204 Version 5.9 (May 22 1999)
11206 Daniel (22 May 1999)
11207 - I've got a bug report from Aaron Scarisbrick in which he states he has some
11208 problems with -L under FreeBSD 3.0. I have previously got another bug
11209 report from Stefan Grether which points at an error with similar sympthoms
11210 when using win32. I made the allocation of the new url string a bit faster
11211 and different, don't know if it actually improves anything though...
11213 Daniel (20 May 1999)
11214 - Made the cookie parser deal with CRLF newlines too.
11216 Daniel (19 May 1999)
11217 - Download() didn't properly deal with failing return codes from the sread()
11218 function. Adam Coyne found the problem in the win32 version, and Troy Engel
11219 helped me out isolating it.
11221 Daniel (16 May 1999)
11222 - Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
11223 work anymore! :-/ I fixed it now.
11225 - After a suggestion by Joshua Swink I added -S / --show-error to force curl
11226 to display the error message in case of an error, even if -s/--silent was
11229 Daniel (10 May 1999)
11230 - I moved the stuff concerning HTTP, DICT and TELNET it their own source
11231 files now. It is a beginning on my clean-up of the sources to make them
11232 layer all those protocols better to enable more to be added easier in the
11235 - Leon Breedt sent me some files I've not put into the main curl
11236 archive. They're for creating the Debian package thingie. He also sent me a
11237 debian package that I've made available for download at the web page
11239 Daniel (9 May 1999)
11240 - Made it compile on cygwin too.
11242 Troy Engel (7 May 1999)
11243 - Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
11246 Daniel (6 May 1999)
11247 - I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
11248 will be easier to discover systems that don't have that function and thus
11249 can't use -z successfully. Made the strftime() get used if WIN32 is defined
11254 Daniel (5 May 1999)
11255 - I've had it with this autoconf/automake mess. It seems to work allright
11256 for most people who don't have automake installed, but for those who have
11257 there are problems all over.
11259 I've got like five different bug reports on this only the last
11260 week... Claudio Neves and Federico Bianchi and root <duggerj001 at
11261 hawaii.rr.com> are some of them reporting this.
11263 Currently, I have no really good fix since I want to use automake myself to
11264 generate the Makefile.in files. I've found out that the @SHELL@-problems
11265 can often be fixed by manually invoking 'automake' in the archive root
11266 before you run ./configure... I've hacked my maketgz script now to fiddle
11267 a bit with this and my tests seem to work better than before at least!
11269 Daniel (4 May 1999)
11270 - mkhelp.pl has been doing badly lately. I corrected a case problem in
11273 - I've now remade the -o option to not touch the file unless it needs to.
11274 I had to do this to make -z option really fine, since now you can make a
11275 curl fetch and use a local copy's time when downloading to that file, as
11278 curl -z dump -o dump remote.site.com/file.html
11280 This will only get the file if the remote one is newer than the local.
11281 I'm aware that this alters previous behaviour a little. Some scripts out
11282 there may depend on that the file is always touched...
11284 - Corrected a bug in the SSLv2/v3 selection.
11286 - Felix von Leitner requested that curl should be able to send
11287 "If-Modified-Since" headers, which indeed is a fair idea. I implemented it
11288 right away! Try -z <expression> where expression is a full GNU date
11289 expression or a file name to get the date from!
11291 Stephan Lagerholm (30 Apr 1999)
11292 - Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
11293 isn't set and causes the make to fail.
11295 Daniel (26 April 1999)
11296 - Am I silly or what? Irving Wolfe pointed out to me that the curl version
11297 number was not set properly. Hasn't been since 5.6. This was due to a bug
11298 in my maketgz script!
11300 David Eriksson (25 Apr 1999)
11301 - Found a bug in cookies.c that made it crash at times.
11305 Doug Kaufman (23 Apr 1999)
11306 - Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
11307 below and the other one a correction in include/stdcheaders.h
11309 - Added a paragraph about compiling with the US-version of openssl to the
11313 - New mailing list address. Info updated on the web page as well as in the
11316 Greg Onufer (20 Apr 1999)
11317 - hostip.c didn't compile properly on SunOS 5.5.1.
11318 It needs an #include <sys/types.h>
11322 Daniel (Apr 20 1999)
11323 - Decided to upload a non-beta version right now!
11325 - Made curl support any-length HTTP headers. The destination buffer is now
11326 simply enlarged every time it turns out to be too small!
11328 - Added the FAQ file to the archive. Still a bit smallish, but it is a
11331 Eric Thelin (15 Apr 1999)
11332 - Made -D accept '-' instead of filename to write to stdout.
11336 Daniel (Apr 12 1999)
11338 - Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
11339 in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
11340 try to get some decent win32-replacement there. Anyone?
11342 - The old -3/--crlf option is now ONLY --crlf!
11344 - I changed the "SSL fix" to a more lame one, but that doesn't remove as
11345 much functionality. Now I've enabled the lib to select what SSL version it
11346 should try first. Appearantly some older SSL-servers don't like when you
11347 talk v3 with them so you need to be able to force curl to talk v2 from the
11348 start. The fix dated April 6 and posted on the mailing list forced curl to
11349 use v2 at all times using a modern OpenSSL version, but we don't really
11350 want such a crippled solution.
11352 - Marc Boucher sent me a patch that corrected a math error for the
11353 "Curr.Speed" progress meter.
11355 - Eric Thelin sent me a patch that enables '-K -' to read a config file from
11358 - I found out we didn't close the file properly before so I added it!
11360 Daniel (Apr 9 1999)
11361 - Yu Xin pointed out a problem with ftp download resume. It didn't work at
11364 Daniel (Apr 6 1999)
11365 - Corrected the version string part generated for the SSL version.
11367 - I found a way to make some other SSL page work with openssl 0.9.1+ that
11368 previously didn't (ssleay 0.8.0 works with it though!). Trying to get
11369 some real info from the OpenSSL guys to see how I should do to behave the
11370 best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
11374 Daniel (Apr 4 1999)
11375 - Finally have curl more cookie "aware". Now read carefully. This is how
11377 To make curl read cookies from an already existing file, in plain header-
11378 format (like from the headers of a previous fetch) invoke curl with the
11381 curl -b file http://site/foo.html
11383 Curl will then use all cookies it finds matching. The old style that sets
11384 a single cookie with -b is still supported and is used if the string
11385 following -b includes a '=' letter, as in "-b name=daniel".
11387 To make curl read the cookies sent in combination with a location: (which
11388 sites often do) point curl to read a non-existing file at first (i.e
11389 to start with no existing cookies), like:
11391 curl -b nowhere http://site/setcookieandrelocate.html
11393 - Added a paragraph in the TODO file about the SSL problems recently
11394 reported. Evidently, some kind of SSL-problem curl may need to address.
11396 - Better "Location:" following.
11398 Douglas E. Wegscheid (Tue, 30 Mar 1999)
11399 - A subsecond display patch.
11401 Daniel (Mar 14 1999)
11402 - I've separated the version number of libcurl and curl now. To make
11403 things a little easier, I decided to start the curl numbering from
11404 5.6 and the former version number known as "curl" is now the one
11407 - Removed the 'enable-no-pass' from configure, I doubt anyone wanted
11410 - Made lots of tiny adjustments to compile smoothly with cygwin under
11411 win32. It's a killer for porting this to win32, bye bye VC++! ;-)
11412 Compiles and builds out-of-the-box now. See the new wordings in
11413 INSTALL for details.
11415 - Beginning experiments with downloading multiple document from a http
11416 server while remaining connected.
11420 Daniel (Mar 13 1999)
11421 - Since I've changed so much, I thought I'd just go ahead and implement the
11422 suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
11423 HTTP headers separately in the specified file.
11425 - Added new text to INSTALL on what to do to build this on win32 now.
11427 - Aaargh. I had to take a step back and prefix the shared #include files
11428 in the sources with "../include/" to please VC++...
11430 Daniel (Mar 12 1999)
11431 - Split the url.c source into many tiny sources for better readability
11434 Daniel (Mar 11 1999)
11435 - Started to change stuff for a move to make libcurl and a more separate
11436 curl application that uses the libcurl. Made the libcurl sources into
11437 the new lib directory while the curl application will remain in src as
11438 before. New makefiles, adjusted configure script and so.
11440 libcurl.a built quickly and easily. I better make a better interface to
11441 the lib functions though.
11443 The new root dir include/ is supposed to contain the public information
11444 about the new libcurl. It is a little ugly so far :-)
11447 Daniel (Mar 1 1999)
11448 - Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
11449 info that RFC 2109 specifies how to use them. The link is now in the
11450 README and the RFC in the RESOURCES.
11452 Daniel (Feb 23 1999)
11453 - Finally made configure accept --with-ssl to look for SSL libs and includes
11454 in the "standard" place /usr/local/ssl...
11456 Daniel (Feb 22 1999)
11457 - Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
11460 Henri Gomez (Fri Feb 5 1999)
11461 - Sent in an updated curl-ssl.spec. I still miss the script that builds an
11462 RPM automatically...
11466 Mark Butler (27 Jan 1999)
11467 - Corrected problems in Download().
11469 Danitel Stenberg (25 Jan 1999)
11470 - Jeremie Petit pointed out a few flaws in the source that prevented it from
11471 compile warning free with the native compiler under Digital Unix v4.0d.
11475 Daniel Stenberg (15 Jan 1999)
11476 - Added Bjorns small text to the README about the DICT protocol.
11478 Daniel Stenberg (11 Jan 1999)
11479 - <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
11480 ALL_PROXY environment variable". Turned out to be because of the static-
11481 buffer nature of the win32 environment variable calls!
11483 Bjorn Reese (10 Jan 1999)
11484 - I have attached a simple addition for the DICT protocol (RFC 2229).
11485 It performs dictionary lookups. The output still needs to be better
11488 To test it try (the exact format, and more examples are described in
11491 dict://dict.org/m:hello
11492 dict://dict.org/m:hello::soundex
11495 Vicente Garcia (10 Jan 1999)
11496 - Corrected the progress meter for files larger than 20MB.
11498 Daniel Stenberg (7 Jan 1999)
11499 - Corrected the -t and -T help texts. They claimed to be FTP only.
11505 - Irving Wolfe reported that curl -s didn't always supress the progress
11506 reporting. It was the form post that autoamtically always switched it on
11507 again. This is now corrected!
11510 - Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
11511 you use -t or -T now on a http or https server, PUT will be used for file
11514 I removed the former use of -T with HTTP. I doubt anyone ever really used
11518 - Erik Jacobsen found a width bug in the mprintf() function. I corrected it
11522 - As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
11523 should now accept path parts that are up to at least 4096 bytes.
11525 - Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
11528 Version 5.3a (win32 only)
11531 - Corrected a win32 bug in the environment variable part.
11535 Gilbert Ramirez Jr. (21 Dec 1998)
11536 - I have implemented the "quote" function of FTP clients. It allows you to
11537 send arbitrary commands to the remote FTP server. I chose the -Q/--quote
11538 command-line arguments.
11540 You can have more than one quoted string, and curl will apply them in
11541 order. This is what I use for my MVS upload:
11543 curl -B --crlf -Q "site lrecl=80" -Q "site blk=8000" -T file ftp://os390/test
11545 Curl will send the two quoted "site" commands in the proper order.
11547 - Made it compile smoothly on AIX.
11549 Gilbert Ramirez Jr. (18 Dec 1998)
11550 - Brought an MVS patch: -3/--mvs, for ftp upload to the MVS ftp server.
11552 Troy Engel (17 Dec 1998)
11553 - Brought a correction that fixes the win32 curl bug.
11556 - A bug, pointed out to me by Dr H. T. Leung, caused curl to crash on the -A
11557 flag on certain systems. Actually, all systems should've!
11559 - Added a few defines to make directories/file names get build nicer (with _
11560 instead of . and \ instead of / in win32).
11562 - steve <fisk at polar.bowdoin.edu> reported a weird bug that occured if the
11563 ftp server response line had a parenthesis on the line before the (size)
11564 info. I hope it works better now!
11568 Steven G. Johnson (Dec 14, 1998)
11569 - Brought a fix that corrected a crash in 5.2 due to bad treatment of the
11570 environment variables.
11574 Daniel Stenberg (Dec 14, 1998)
11575 - Rewrote the mkhelp script and now, the mkhelp.pl script generates the
11576 hugehelp.c file from the README *and* the man page file curl.1. By using
11577 both files, I no longer need to have double information in both the man
11578 page and the README as well. So, win32-users will only have the hugehelp.c
11579 file for all info, but then, they download the plain binary most times
11582 - gcc2.8.1 with the -Wall flag complaints a lot on subscript has type `char'
11583 if I don't explicitly typecast the argument to isdigit() or isspace() to
11584 int. So I did to compile warning free with that too.
11586 - Added checks for 'long double' and 'long long' in the configure script. I
11587 need those for the mprintf.c source to compile well on non long long
11588 comforming systems!
11590 Version 5.1 (not publicly released)
11592 Daniel Stenberg (Dec 10, 1998)
11593 - I got a request for a pre-compiled NT Alpha version. Anyone?
11595 - Added Lynx/CERN www lib proxy environment variable support. That means curl
11596 now reads and understands the following environment variables:
11598 HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
11600 They should be set for protocol-specific proxies. General proxy should be
11605 And a comma-separated list of host names that shouldn't go through any
11606 proxy is set in (only an asterisk, '*' matches all hosts).
11610 The usage of the -x/--proxy flag overrides the environment variables.
11612 - Proxy can now be specified with a procotol:// prefix.
11614 - Wrote the curl.1 man page.
11616 - Introduced a whole new dynamic buffer system for all sprintf()s. It is
11617 based on the *printf() package by yours truly and Bjorn Reese. Hopefully,
11618 there aren't that many buffer overflow risks left now.
11620 - Ah, I should mention I've compiled and built curl successfully under
11621 solaris 2.6 with gcc now, gcc 2.7.2 won't work but 2.8.1 did ok.
11623 Oren Tirosh (Dec 3, 1998)
11624 - Brought two .spec files, to use when creating (Linux) Redhat style RPM
11625 packages. They're named curl.spec and curl-ssl.spec.
11628 - Supplied the src/Makefile.vc6 for easy compiling with VC++ under Win32.
11632 Daniel Stenberg (Dec 1, 1998)
11633 - Not a single bug report in ages.
11634 - Corrected getpass.c and main.c to compile warning and error free with the
11637 Version 5.0 beta 24
11639 Daniel Stenberg (Nov 20, 1998)
11641 HOW TO BUILD A RELEASE ARCHIVE:
11643 * Pre-requisite software:
11644 What To build what Reads data from
11645 ==== ============= ===============
11646 GNU automake Makefile.in, aclocal.m4 configure.in
11649 GNU autoconf configure configure.in
11650 GNU autoheader(2) config.h.in configure.in, acconfig.h
11652 * Make sure all files that should be part of the archive are put in FILES.
11654 * Run './maketgz' and enter version number of the new to become archive.
11658 - Enters the newly created version number in url.h.
11659 - (If you don't have automake, this script will warn about that, but unless
11660 you have changed the Makefile.am files, that is nothing to care about.)
11661 If you have it, it'll run it.
11662 - If you have autoconf, the configure.in will be edited to get the newly
11663 created version number and autoconf will be run.
11664 - Creates a new directory named curl-<version>. (Actually, it uses the base
11665 name of the current directory up to the first '-'.)
11666 - Copies all files mentioned in FILES to the new directory. Saving
11667 permissions and directory structure.
11668 - Uses tar to create an archive of it all, named curl-<version>.tar.gz
11669 - gzips the archive
11670 - Removes the new directory and all its contents.
11672 * When done, you have an archive stored in your directory named
11673 curl-<version>.tar.gz.
11677 (1) They're required to make automake run properly.
11678 (2) It is distributed as a part of the GNU autoconf archive.
11680 Daniel Stenberg (Nov 18, 1998)
11681 - I changed the TAG-system. If you ever used urlget() from this package in
11682 another product, you need to recompile with the new headers. I did this
11683 new stuff to better deal with different compilers and system with different
11684 variable sizes. I think it makes it a little more portable. This proves
11685 to compile warning free with the problematic IRIX compiler!
11686 - Win32 compiled with a silly error. Corrected now.
11687 - Brian Chaplin reported yet another problem in
11688 multiline FTP responses. I've tried to correct it. I mailed him a new
11689 version and I hope he gets back soon with positive feedback!
11690 - Improved the 'maketgz' to create a temporary directory tree which it makes
11691 an archive from instead of the previous renaming of the current one.
11692 - Mailing list opened (see README).
11693 - Made -v more verbose on the PASV section of ftp transfers. Now it tells
11694 host name and IP of the new host (and port number). I also added a section
11695 about PORT vs PASV in the README.
11697 Version 5.0 beta 21
11699 Angus Mackay (Nov 15, 1998)
11700 - Introduced automake stuff.
11702 Daniel Stenberg (Nov 13, 1998)
11703 - Just made a successful GET of a document from an SSL-server using my own
11704 private certificate for authentication! The certificate has to be in PEM
11705 format. You do that the easiest way (although not *that* easy) by
11706 downloading the SSLyeay PKCS#12-patch by Dr Stephen N. Henson from his site
11707 at: http://www.drh-consultancy.demon.co.uk/. Using his tool, you can
11708 convert any modern Netscape or (even) MSIE certificate to PEM-format. Use
11709 it with 'curl -E <certificate:password> https://site.com'. If this isn't a
11710 cool feature, then I don't know what cool features look like! ;-)
11711 - Working slowly on telnet connections. #define TRY_TELNET to try it out.
11712 (curl -u user:passwd "telnet://host.com/cat .login" is one example) I do
11713 have problem to define how it should work. The prime purpose for this must
11714 be to get (8bit clean) files via telnet, and it really isn't that easy to
11715 get files this way. Still having problems with \n being converted to \r\n.
11717 Angus Mackay (Nov 12, 1998)
11718 - Corrected another bug in the long parameter name parser.
11719 - Modified getpass.c (NOTE: see the special licensing in the top of that
11722 Daniel Stenberg (Nov 12, 1998)
11723 - We may have removed the silly warnings from url.c when compiled under IRIX.
11724 Thanks again to Bjorn Reese and Martin Staael.
11725 - Wrote formfind.pl which is a new perl script intended to help you find out
11726 how a FORM submission should be done. This needs a little more work to get
11729 Daniel Stenberg (Nov 11, 1998)
11730 - Made the HTTP header-checker accept white spaces before the HTTP/1.? line.
11731 Appearantly some proxies/sites add such at times (my test proxy did when I
11732 downloaded a gopher page with it)!
11733 - Moved the former -h to -M and made -h show the short help text instead. I
11734 had to enable a forced help text option. Now an even shorter help text will
11735 be presented when an unknown option and similar, is used.
11736 - stdcheaders.h didn't work with IRIX 6.4 native cc compiler. I hope my
11737 changes don't make other versions go nuts instead.
11739 Daniel Stenberg (Nov 10, 1998)
11740 - Added a weird check in the configure script to check for the silly AIX
11741 warnings about my #define strcasecmp() stuff. I do that define to prevent
11742 me and other contributors to accidentaly use that function name instead
11744 - I bugfixed Angus's getpass.c very little.
11745 - Fixed the verbose flag names to getopt-style, i.e 'curl --loc' will be
11746 sufficient instead of --location as "loc" is a unique prefix. Also, anything
11747 after a '--' is treated as an URL. So if you do have a host with a weeeird
11748 name you can do 'curl -- -host.com'.
11749 - Another getopt-adjust; curl now accepts flags after the URL on the command
11750 line. 'curl www.foo.com -O' is perfectly valid.
11751 - Corrected the .curlrc parser so that strtok() is no longer used and I
11752 believe it works better. Even URLs can be specified in it now.
11754 Angus Mackay (Nov 9, 1998)
11755 - Replaced getpass.c with a newly written one, not under GPL license
11756 - Changed OS to a #define in config.h instead of compiler flag
11757 - Makefile now uses -DHAVE_CONFIG_H
11759 Daniel Stenberg (Nov 9, 1998)
11760 - Ok, I expanded the tgz-target to update the version string on each occation
11761 I build a release archive!
11762 - I reacted on Angus Mackay's initiative and remade the parameter parser to
11763 be more getopt compliant. Curl now supports "merged" flags as in
11764 curl -lsv ftp.site.com
11765 Do note that I had to move three short-names of the options. Parameters
11766 that needs an additional string such as -x must be stand-alone or the
11767 last in a merged sequence:
11768 curl -lsx my-proxy ftp.site.com
11769 is ok, but using the flags in a different order like '-lxs' would cause
11770 unexpected results (as the 's' option would be skipped).
11771 - I've changed the headers in all files that are subject to the MozPL
11772 license, as they are supposed to look like when conforming.
11773 - Made the configure script make the config.h. The former config.h is now
11775 - The RESOURCES and TODO files have been added to the archive.
11777 Angus Mackay (Nov 5, 1998)
11778 - Fixed getpass.c and various configure stuff
11780 Daniel Stenberg (Nov 3, 1998)
11781 - Use -H/--header for custom HTTP-headers. Lets you pass on your own
11782 specified headers to the remote server. I wouldn't recommend trying to use
11783 a header with a defined usage according to standards. Use this flag once
11784 for every custom header you want to add.
11785 - Use -B/--ftp-ascii to force ftp to use ASCII mode when transfering files.
11786 - Corrected the 'getlinks.pl' script, I accidentally left my silly proxy
11787 usage in there! Since the introduction of the .curlrc file, it is easier to
11788 write scripts that use curl since proxies and stuff should be in the
11789 .curlrc file anyway.
11790 - Introducing the new -F flag for HTTP POST. It supports multipart/form-data
11791 which means it is gonna be possible to upload files etc through HTTP POST.
11792 Shiraz Kanga asked for the feature and my brother,
11793 Björn Stenberg helped me design the user
11794 interface for this beast. This feature requires quite some docs,
11795 since it has turned out not only quite capable, but also complicated! :-)
11796 - A note here, since I've received mail about it. SSLeay versions prior to
11797 0.8 will *not* work with curl!
11798 - Wil Langford reported a bug that occurred since curl
11799 did not properly use CRLF when issuing ftp commands. I fixed it.
11800 - Rearranged the order config files are read. .curlrc is now *always* read
11801 first and before the command line flags. -K config files then act as
11802 additional config items.
11803 - Use -q AS THE FIRST OPTION specified to prevent .curlrc from being read.
11804 - You can now disable a proxy by using -x "". Useful if the .curlrc file
11805 specifies a proxy and you wanna fetch something without going through
11807 - I'm thinking of dropping the -p support. Its really not useful since ports
11808 could (and should?) be specified as :<port> appended on the host name
11809 instead, both in URLs and to proxy host names.
11810 - Martin Staael reports curl -L bugs under Windows NT
11811 (test with URL http://come.to/scsde). This bug is not present in this
11813 - Added support for the weird FTP URL type= thing. You can download a file
11814 using ASCII transfer by appending ";type=A" to the right of it. Other
11815 available types are type=D for dir-list (NLST) and type=I for binary
11816 transfer. I can't say I've ever seen anyone use this kind of URL though!
11818 - Troy Engel pointed out a bug in my getenv("HOME")
11819 usage for win32 systems. I introduce getenv.c to better cope with
11820 this. Mr Engel helps me with the details around that...
11821 - A little note to myself and others, I should make the win32-binary built
11822 with SSL support...
11823 - Ryan Nelson sent me comments about building curl
11824 with SSL under FreeBSD. See the Makefile for details. Using the configure
11825 script, it should work better and automatically now...
11826 - Cleaned up in the port number mess in the source. No longer stores and uses
11827 proxy port number separate from normal port number.
11828 - 'configure' script working. Confirmed compiles on:
11831 SunOS 5.5.1 yes gcc
11832 SunOS 5.6 no cc (with gcc, it has the "gcc include files" problem)
11833 SunOS 4.1.3 no gcc (without ANSI C headers)
11834 SunOS 4.1.2 no gcc (native compiler failed)
11835 Linux 2.0.18 no gcc
11836 Linux 2.0.32 yes gcc
11837 Linux 2.0.35 no gcc (with glibc)
11838 IRIX 6.2 no gcc (cc compiles generate a few warnings)
11839 IRIX 6.4 no cc (generated warnings though)
11843 - Ooops. The 5beta (and 4.10) under win32 failed if the HOME variable wasn't
11845 - When using a proxy, curl now guesses and uses the protocol part in cases
11847 curl -x proxy:80 www.site.com
11848 Proxies normally go nuts unless http:// is prepended to the host name, so
11849 if curl is used like this, it guesses protocol and appends the protocol
11850 string before passing it to the proxy. It already did this when used
11852 - Better port usage with SSL through proxy now. If you specified a different
11853 https-port when accessing through a proxy, it didn't use that number
11854 correctly. I also rewrote the code that parses the stuff read from the
11855 proxy when you wanna connect through it with SSL.
11856 - Bjorn Reese helped me work around one of the compiler
11857 warnings on IRIX native cc compiles.
11859 Version 4.10 (Oct 26, 1998)
11861 - John A. Bristor suggested a config file switch,
11862 and since I've been having that idea kind of in the background for a long
11863 time I rewrote the parameter parsing function a little and now I introduce
11864 the -K/--config flag. I also made curl *always* (unless -K is used) try to
11865 load the .curlrc file for command line parameters. The syntax for the
11866 config file is the standard command line argument style. Details in 'curl
11868 - I removed the -k option. Keep-alive isn't really anything anyone would
11869 want to enable with curl anyway.
11870 - Martin Staael helped me add the 'irix' target. Now
11871 "make irix" should build curl successfully on non-gcc SGI machines.
11872 - Single switches now toggle behaviours. I.e if you use -v -v the second
11873 will switch off the verbose mode the first one enabled. This is so that
11874 you can disable a default setting a .curlrc file enables etc.
11876 Version 4.9 (Oct 7, 1998)
11878 - Martin Staael suggested curl would support cookies.
11879 I added -b/--cookie to enable free-text cookie data to be passed. There's
11880 also a little blurb about general cookie stuff in the README/help text.
11881 - dmh <dmh at jet.es> suggested HTTP resume capabilities. Although you could
11882 manually get curl to resume HTTP documents, I made the -c resume flag work
11883 for HTTP too (unless -r is used too, which would be very odd anyway).
11884 - Added checklinks.pl to the archive. It is a still experimental perl script
11885 that checks all links of a web page by using curl.
11886 - Rearranged the archive hierarchy a little. Build the executable in the
11887 src/ dir from now on!
11888 - Version 4.9 and hereafter, is no longer released under the GPL license.
11889 I have now updated the LEGAL file etc and now this is released using the
11890 Mozilla Public License to avoid the plague known as "the GPL virus". You
11891 must make the source available if you decide to change and/or redistribute
11892 curl, but if you decide to use curl within something else you do not need
11893 to offer the world the source to that too.
11894 - Curl did not like HTTP servers that sent no headers at all on a GET
11895 request. It is a violation of RFC2068 but appearantly some servers do
11896 that anyway. Thanks to Gordon Beaton for the report!
11897 - -L/--location was added after a suggestion from Martin Staael. This makes
11898 curl ATTEMPT to follow the Location: redirect if one is present in the HTTP
11899 headers. If -i or -I is used with this flag, you will see headers from all
11900 sites the Location: points to. Do note that the first server can point to a
11901 second that points to a third etc. It seems the Location: parameter (said
11902 to be an AbsoluteURI in RFC2068) isn't always absolute.. :-/ Anyway, I've
11903 made curl ATTEMPT to do the best it can to deal with the reality.
11904 - Added getlinks.pl to the archive. getlinks.pl selectively downloads
11905 files that a web page links to.
11909 - As Julian Romero Nieto reported, curl reported wrong version number.
11910 - As Teemu Yli-Elsila pointed out, the win32 version of 4.8 (and probably all
11911 other versions for win32) didn't work with binary files since I'm too used
11912 to the UNIX style fopen() where binary and text don't differ...
11913 - Ralph Beckmann brought me some changes that lets curl compile error and
11914 warning free with -Wall -pedantic with g++. I also took the opportunity to
11915 clean off some unused variables and similar.
11916 - Ralph Beckmann made me aware of a really odd bug now corrected. When curl
11917 read a set of headers from a HTTP server, divided into more than one read
11918 and the first read showed a full line *exactly* (i.e ending with a
11919 newline), curl did not behave well.
11923 - I was too quick to release 4.8.2 with too little testing. One of the
11924 changes is now reverted slightly to the 4.8.1 way since 4.8.2 couldn't
11925 upload files. I still think both problems corrected in 4.8.2 remain
11926 corrected. Reported by Julian Romero Nieto.
11930 - Bernhard Iselborn reported two FTP protocol errors curl did. They're now
11931 corrected. Both appeared when getting files from a MS FTP server! :-)
11935 - Added a last update of the progress meter when the transfer is done. The
11936 final output on the screen didn't have to be the final size transfered
11937 which made it sometimes look odd.
11938 - Thanks to David Long I got rid of a silly bug that happened if a HTTP-page
11939 had nothing but header. Appearantly Solaris deals with negative sizes in
11940 fwrite() calls a lot better than Linux does... =B-]
11942 Version 4.8 (Aug 31, 1998)
11944 - Continue FTP file transfer. -c is the switch. Note that you need to
11945 specify a file name if you wanna resume a download (you can't resume a
11946 download sent to stdout). Resuming upload may be limited by the server
11947 since curl is then using the non-RFC959 command SIZE to get the size of
11948 the target file before upload begins (to figure out which offset to
11949 use). Use -C to specify the offset yourself! -C is handy if you're doing
11950 the output to something else but a plain file or when you just want to get
11952 - recursiveftpget.pl now features a maximum recursive level argument.
11956 - Added support to abort a download if the speed is below a certain amount
11957 (speed-limit) bytes per second for a certain (speed-time) time.
11958 - Wrote a perl script 'recursiveftpget.pl' to recursively use curl to get a
11959 whole ftp directory tree. It is meant as an example of how curl can be
11960 used. I agree it isn't the wisest thing to do to make a separate new
11961 connection for each file and directory for this.
11965 - Added a first attempt to optionally parse the .netrc file for login user
11966 and password. If used with http, it enables user authentication. -n is
11968 - Removed the extra newlines on the default user-agent string.
11969 - Corrected the missing ftp upload error messages when it failed without the
11970 verbose flag set. Gary W. Swearingen found it.
11971 - Now using alarm() to enable second-precision timeout even on the name
11972 resolving/connecting phase. The timeout is although reset after that first
11973 sequence. (This should be corrected.) Gary W. Swearingen reported.
11974 - Now spells "Unknown" properly, as in "Unknown option 'z'"... :-)
11975 - Added bug report email address in the README.
11976 - Added a "current speed" field to the progress meter. It shows the average
11977 speed the last 5 seconds. The other speed field shows the average speed of
11978 the entire transfer so far.
11982 - SSL through proxy fix
11983 - Added -A to allow User-Agent: changes
11986 - Made the -A work when SSL-through-proxy.
11990 - More SSL corrections
11991 - I've added a port to AIX.
11992 - running SSL through a proxy causes a chunk of code to be executred twice.
11993 one of those blocks needs to be deleted.
11996 - Made -i and -I work again
12000 - -x can now also specify proxyport when used as in 'proxyhost:proxyport'
12005 - Adjusted to compile under win32 (VisualC++ 5). The -P switch does not
12006 support network interface names in win32. I couldn't figure out how!
12009 Linas Vepstas / Sampo Kellomaki
12010 - Added SSL / SSLeay support (https://)
12011 - Added the -T usage for HTTP POST.
12014 - Bugfixed the SSL implementation.
12015 - Made -P a lot better to use other IP addresses. It now accepts a following
12016 parameter that can be either
12017 interface - i.e "eth0" to specify which interface's IP address you
12019 IP address - i.e "192.168.10.1" to specify exact IP number
12020 host name - i.e "my.host.domain" to specify machine
12021 "-" - (any single-letter string) to make it pick the machine's
12023 - The Makefile is now ready to compile for solaris, sunos4 and linux right
12025 - Better generated version string seen with 'curl -V'
12029 - The IP number returned by the ftp server as a reply to PASV does no longer
12030 have to DNS resolve. In fact, no IP-number-only addresses have to anymore.
12031 - Binds better to available port when -P is used.
12032 - Now LISTs ./ instead of / when used as in ftp://ftp.funet.fi/. The reason
12033 for this is that exactly that site, ftp.funet.fi, does not allow LIST /
12034 while LIST ./ is fine. Any objections?
12036 Version 4 (1998-03-20)
12038 - I took another huge step and changed both version number and project name!
12039 The reason for the new name is that there are just one too many programs
12040 named urlget already and this program already can a lot more than merely
12041 getting URLs, and the reason for the version number is that I did add the
12042 pretty big change in -P and since I changed name I wanted to start with
12044 - The --style flags are working better now.
12045 - Listing directories with FTP often reported that the file transfer was
12046 incomplete. Wrong assumptions were too common for directories, why no
12047 size will be attempted to get compared on them from now on.
12048 - Implemented the -P flag that let's the ftp control issue a PORT command
12049 instead of the standard PASV.
12050 - -a for appending FTP uploads works.
12052 ***************************************************************************
12054 Version 3.12 (14 March 1998)
12056 - End-of-header tracking still lacked support for \r\n or just \n at the
12057 end of the last header line.
12059 - Added PROXY authentication.
12061 - Fixed some little bugs.
12065 - The header parsing was still not correct since the 3.2 modification...
12069 - 3.7 and 3.9 were simultaneously developed and merged into this version.
12070 - FTP upload did not work correctly since 3.2.
12074 - Added the "-e <url> / --referer <url>" option where we can specify
12075 the referer page. Obviously, this is necessary only to fool the
12080 - Now checks the last error code sent from the ftp server after a file has
12081 been received or uploaded. Wasn't done previously.
12082 - When 'urlget <host>' is used without a 'protocol://' first in the host part,
12083 it now checks for host names starting with ftp or gopher and if it does,
12084 it uses that protocol by default instead of http.
12088 - Silly mistake made the POST bug. This has now also been tested to work with
12093 - Highly inspired by Rafael Sagula's changes to the 3.1 that added an almost
12094 functional POST, I applied his changes into this version and made them work.
12095 (It seems POST requires the Content-Type and Content-Length headers.) It is
12096 now usable with the -d switch.
12099 Passed to avoid confusions
12103 - Major rewrite of two crucial parts of this code: upload and download.
12104 They are both now using a select() switch, that allows much better
12105 progress meter and time control.
12106 - alarm() usage removed completely
12107 - FTP get can now list directory contents if the path ends with a slash '/'.
12108 Urlget on a ftp-path that doesn't end with a slash means urlget will
12109 attempt getting it as a file name.
12110 - FTP directory view supports -l for "list-only" which lists the file names
12112 - All operations support -m for max time usage in seconds allowed.
12113 - FTP upload now allows the size of the uploaded file to be provided, and
12114 thus it can better check it actually uploaded the whole file. It also
12115 makes the progress meter for uploads much better!
12116 - Made the parameter parsing fail in cases like 'urlget -r 900' which
12117 previously tried to connect to the host named '900'.
12121 - Pointed out how to correct the 3 warnings in win32-compiles.
12124 - Removed all calls to exit().
12125 - Made the short help text get written to stdout instead of stderr.
12126 - Made this file instead of keeping these comments in the source.
12127 - Made two callback hooks, that enable external programs to use urlget()
12128 easier and to grab the output/offer the input easier.
12129 - It is evident that Win32-compiles are painful. I watched the output from
12130 the Borland C++ v5 and it was awful. Just ignore all those warnings.
12134 - Added FTP upload capabilities. The name urlget gets a bit silly now
12135 when we can put too... =)
12136 - Restructured the source quite a lot.
12137 Changed the urlget() interface. This way, we will survive changes much
12138 better. New features can come and old can be removed without us needing
12139 to change the interface. I've written a small explanation in urlget.h
12141 - New flags include -t, -T, -O and -h. The -h text is generated by the new
12146 - Added a fix to make it compile smoothly on Amiga using the SAS/C
12150 - Believe it or not, but the STUPID Novell web server seems to require
12151 that the Host: keyword is used, so well I use it and I (re-introduce) the
12152 urlget User-Agent:. I still have to check that this Host: usage works with
12153 proxies... 'Host:' is required for HTTP/1.1 GET according to RFC2068.
12157 - some little modifications
12161 - Removed the -l option and introduced the -f option instead. Now I'll
12162 rewrite the former -l kludge in an external script that'll use urlget to
12163 fetch multipart files like that.
12164 - '-f' is introduced, it means Fail without output in case of HTTP server
12165 errors (return code >=300).
12166 - Added support for -r, ranges. Specify which part of a document you
12167 want, and only that part is returned. Only with HTTP/1.1-servers.
12168 - Split up the source in 3 parts. Now all pure URL functions are in
12169 urlget.c and stuff that deals with the stand-alone program is in main.c.
12170 - I took a few minutes and wrote an embryo of a README file to explain
12175 - Made the -l (loop) thing use the new CONF_FAILONERROR which makes
12176 urlget() return error code if non-successful. It also won't output anything
12177 then. Now finally removed the HTTP 1.0 and error 404 dependencies.
12178 - Added -I which uses the HEAD request to get the header only from a
12183 - Made the progress meter use HHH:MM:SS instead of only seconds.
12187 - Added progress meter. It appears when downloading > BUFFER SIZE and
12188 mute is not selected. I found out that when downloading large files from
12189 really really slow sites, it is desirable to know the status of the
12190 download. Do note that some downloads are done unawaring of the size, which
12191 makes the progress meter less thrilling ;) If the output is sent to a tty,
12192 the progress meter is shut off.
12193 - Increased buffer size used for reading.
12194 - Added length checks in the user+passwd parsing.
12195 - Made it grok user+passwd for HTTP fetches. The trick is to base64
12196 encode the user+passwd and send an extra header line. Read chapter 11.1 in
12197 RFC2068 for details. I added it to be used just like the ftp one. To get a
12198 http document from a place that requires user and password, use an URL
12201 http://user:passwd@www.site.to.leach/doc.html
12203 I also added the -u flag, since WHEN USING A PROXY YOU CAN'T SPECIFY THE
12204 USER AND PASSWORD WITH HTTP LIKE THAT. The -u flag works for ftp too, but
12205 not if used with proxy. To do the same as the above one, you can invoke:
12207 urlget -u user:passwd http://www.site.to.leach/doc.html
12211 - Added "-o" option (output file)
12212 - Added URG_HTTP_NOT_FOUND return code.
12214 Perhaps we should detect all kinds of errors and instead of writing that
12215 custom string for the particular 404-error, use the error text we actually
12216 get from the server. See further details in RFC2068 (HTTP 1.1
12217 definition). The current way also relies on a HTTP/1.0 reply, which newer
12218 servers might not do.
12219 - Looping mode ("-l" option). It's easier to get various split files.
12221 Use it like 'urlget -l 1 http://from.this.site/file%d.html', which will
12222 make urlget to attempt to fetch all files named file1.html, file2.html etc
12223 until no more files are found. This is only a modification of the
12224 STAND_ALONE part, nothing in the urlget() function was modfified for this.
12226 - Changed the -h to be -i instead. -h should be preserved to help use.
12227 - Bjorn Reese indicated that Borland _might_ use '_WIN32' instead of the
12228 VC++ WIN32 define and therefore I added a little fix for that.
12232 - The urlget function didn't set the path to url when using proxy.
12233 - Fixed bug with IMC proxy. Now using (almost) complete GET command.
12236 - Made it compile on Solaris. Had to reorganize the includes a bit.
12237 (so Win32, Linux, SunOS 4 and Solaris 2 compile fine.)
12238 - Made Johan's keepalive keyword optional with the -k flag (since it
12239 makes a lot of urlgets take a lot longer time).
12240 - Made a '-h' switch in case you want the HTTP-header in the output.
12243 Daniel Stenberg and Kjell Ericson
12245 - No more global variables
12246 - Mute option (no output at all to stderr)
12247 - Full range of return codes from urlget(), which is now written to be a
12248 function for easy-to-use in [other] programs.
12249 - Define STAND_ALONE to compile the stand alone urlget program
12250 - Now compiles with gcc options -ansi -Wall -pedantic ;)
12253 - Introducing ftp GET support. The FTP URL type is recognized and used.
12254 - Renamed the project to 'urlget'.
12255 - Supports the user+passwd in the FTP URL (otherwise it tries anonymous
12256 login with a weird email address as password).
12260 - The skip_header() crap messed it up big-time. By simply removing that
12261 one we can all of a sudden download anything ;)
12262 - No longer requires a trailing slash on the URLs.
12263 - If the given URL isn't prefixed with 'http://', HTTP is assumed and
12265 - 'void main()' is history.
12269 - The gopher source used the ppath variable instead of path which could
12274 - Well, I added a lame text about the time it took to get the data. I also
12275 fought against Johan to prevent his -f option (to specify a file name
12276 that should be written instead of stdout)! =)
12277 - Made it write 'connection refused' for that particular connect()
12279 - Renumbered the version. Let's not make silly 1.0.X versions, this is
12280 a plain 1.3 instead.
12284 - Discovered and fixed the problem with getting binary files. puts() is
12285 now replaced with fwrite(). (Daniel's note: this also fixed the buffer
12286 overwrite problem I found in the previous version.)
12289 - Let "-p" before "-x".
12292 - Bugfixed the proxy usage. It should *NOT* use nor strip the port number
12293 from the URL but simply pass that information to the proxy. This also
12294 made the user/password fields possible to use in proxy [ftp-] URLs.
12295 (like in ftp://user:password@ftp.my.site:8021/README)
12298 - Implemented HTTP proxy support.
12299 - Receive byte counter added.
12302 - Implemented URLs (and skipped the old syntax).
12303 - Output is written to stdout, so to achieve the above example, do:
12304 httpget http://143.54.10.6/info_logo.gif > test.gif
12308 - Adjusted it slightly to accept named hosts on the command line. We
12309 wouldn't wanna use IP numbers for the rest of our lifes, would we?
12313 - Wrote the initial httpget, which started all this!