CHANGES 87.6 KB
Newer Older
Daniel Stenberg's avatar
Daniel Stenberg committed
                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

                               History of Changes
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (19 January 2002)
- Antonio filed bug report #505514 and provided a fix! When doing multipart
  formposts, libcurl would include an error text in the actual post if a
  specified file wasn't found. This is not libcurl's job. Instead we add an
  empty part.

Daniel (18 January 2002)
- Played around with stricter compiler warnings for gcc (when ./configure
  --enable-debug is used) and changed some minor things to stop the warnings.

- Commented out the 'long long' and 'long double' checks in configure.in, as
  we don't currently use them anyway and the code in lib/mprintf.c that use
  them causes warnings.

- Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
  to correct them. Two compiler warnings were removed as well.

- Andrés García fixed two minor mingw32 building problems.

Version 7.9.3-pre3

Daniel (17 January 2002)
- docs/libcurl-the-guide is a new tutorial for our libcurl programming
  friends.

- Richard Archer brought back the ability to compile and build with OpenSSL
  versions before 0.9.5.
  [http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]

- The DNS cache code didn't take the port number into account, which made it
  work rather bad on IPv6-enabled hosts (especially when doing passive
  FTP). Sterling fixed it.

Daniel (16 January 2002)
- Georg Horn pointed out a timed out transfer without error text. I found it
  and corrected it.

- SSL writes didn't work, they return an uninitialized value that caused
  havoc all over. Georg Horn experienced this.

- Kevin Roth patched the curl_version() function to use the proper OpenSSL
  function for version information. This way, curl will report the version of
  the SSL library actually running right now, not the one that had its headers
  installed when libcurl was built. Mainly intersting when running with shared
  OpenSSL libraries.  

Version 7.9.3-pre2
Daniel (16 January 2002)
- Mofied the main transfer loop and related stuff to deal with non-blocking
  sockets in the upload section. While doing this, I've now separated the
  connection oriented buffers to have one for downloads and one for uploads
  (as two can happen simultaneously). I also shrunk the buffers to 20K
  each. As we have a scratch buffer twice the size of the upload buffer, we
  arrived at 80K for buffers compared with the previous 150K.

- Added the --cc option to curl-config command as it enables so very cool
  one-liners. Have a go a this one, building the simple.c example:

        $ `curl-config --cc --cflags --libs` -o example simple.c

Daniel (14 January 2002)
- I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
  only need to address all writes (send) too and then I'm ready for another
  pre-release...

- Stoned Elipot patched the in_addr_t configure test to make it work better on
  more platforms.

Daniel (9 January 2002)
- Cris Bailiff found out that filling up curl's SSL session cache caused a
  crash!

- Posted the curl questionnaire on the web site. If you haven't posted your
  opinions there yet, go there and do it now while it is still there:

        http://curl.haxx.se/q/

- Georg Horn quickly found out that the SSL reading no longer worked as
  supposed since the switch to non-blocking sockets. I've made a quick patch
  (for reading only) but we should improve it even further.

Version 7.9.3-pre1

- I made the 'bool' typedef use an "unsigned char". It makes it the same on
  all platforms, no matter what the platform thinks the default format for
  char is. This was noticed since we made a silly comparison involving such a
  bool variable, and only one compiler/platform combination (on Debian Linux)
  complained about it (that happened to have its char unsigned by default).

- Bug report #495290 identified a cookie parsing problem that was corrected.
  When a Set-Cookie: line is received without a trailing semicolon, libcurl
  didn't read the last "name=value" pair of the line, leading to confusions...

- Sterling committed his updated DNS cache code.

- I worked with Georg Horn and comments from Götz Babin-Ebell and switched
  curl's socket operations completely over to non-blocking for the entire
  operation (previously we used non-blocking only for the connection phase).
  We had to do this to make the SSL connection phase timeout properly without
  the use of signals. A little extra code to deal with this was added.

- T. Bharath pointed out a slightly obscure cookie engine flaw.

- Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
  204-replies never provides a response-body. This resulted in bad persistant
  behavior when 204 was received.

Daniel (5 January 2002)
- SM updated the VC++ library Makefiles for the new source files.

Daniel (4 January 2002)
- I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
  two places in the source code). One happened with VERBOSE set on connects,
  and the other when VERBOSE was on and krb4 over nat was used... I honestly
  don't think anyone has suffered from these mistakes.

- I replaced a lot of silly occurances of printf() to instead use the more
  appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
  affected.

- Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
  sparc on solaris 8).

- After discussions on the libcurl list with Raoul Cridlig, I just made FTP
  response lines get passed to the header callback if such a one is
  registered. It'll make it possible for any application to get all the
  responses an FTP server sends to libcurl.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (3 January 2002)
- Sterling Hughes brought a few buckets of code. Now, libcurl will
  automatically cache DNS lookups and re-use the previous results first if any
  such is available. It greatly improves speed when doing many repeated
  operations to the same host.

Daniel Stenberg's avatar
Daniel Stenberg committed
- As the test case uses --include and then --head, I had to modify src/main.c
  to deal with this situation slightly better than previously. When done, we
  have 100% good tests again in the main branch.

Daniel (2 January 2002)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Made test case 25 run again in the multi-dev branch. But it seems that the
  changes done on dec-20 made test case 104 cease to work (in both branches).

- Philip Gladstone pointed out a few portability problems in the source code
  that didn't compile on 64-bit sparcs using Sun's native compiler...

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (20 December 2001)
- Björn Stenberg caught an unpleasent (but hard-to-find) bug that could cause
  libcurl to hang on transfers over proxy, when the proxy was specified with
  an environment variable!

- Added code to make ftp operations treat the NO_BODY and HEADERS options
  better:

   NO_BODY set TRUE and HEADERS set TRUE:
    Return a set of headers with file info

   NO_BODY set FALSE
    Transfer data as usual, HEADERS is ignored

   NO_BODY set TRUE and HEADERS set FALSE
    Don't transfer any data, don't return any headers. Just perform the set
    of FTP commands.

Daniel (17 December 2001)
- Götz Babin-Ebell dove into the dark dungeons of the OpenSSL ENGINE stuff and
  made libcurl support it! This allows libcurl to do SSL connections with the
  private key stored in external hardware.

  To make this good, he had to add a bunch of new library options that'll be
  useful to others as well:

   CURLOPT_SSLCERTTYPE  set SSL cert type (PEM/DER)
   CURLOPT_SSLKEY       set SSL private key (file)
   CURLOPT_SSLKEYTYPE:  set SSL key type (PEM/DER/ENG)
   CURLOPT_SSLKEYPASSWD: set the passphrase for your private key
                          (CURLOPT_SSLCERTPASSWD is an alias)
   CURLOPT_SSLENGINE:   set the name of the crypto engine
                        (returns CURLE_SSL_ENGINE_NOTFOUND on error)
   CURLOPT_SSLENGINE_DEFAULT: set the default engine

  There are two new failure codes:

   CURLE_SSL_ENGINE_NOTFOUND
   CURLE_SSL_ENGINE_SETFAILED

Daniel (14 December 2001)
- We have "branched" the source-tree at a few places. Checkout the CVS sources
  with the 'multi-dev' label to get the latest multi interface development
  tree. The idea is to only branch affected files and to restrict the branch
  to the v8 multi interface development only.

  *NOTE* that if we get bug reports and patches etc, we might need to apply
  them in both branches!

  The multi-dev branch is what we are gonna use as main branch in the future
  if it turns out successful. Thus, we must maintain both now in case we need
  them. The current main branch will be used if we want to release a 7.9.3 or
  perhaps a 7.10 release before version 8. Which is very likely.

- Marcus Webster provided code for the new CURLFORM_CONTENTHEADER option for
  curl_formadd(), that lets an application add a set of headers for that
  particular part in a multipart/form-post. He also provided a section to the
  man page that describes the new option.

Daniel (11 December 2001)
- Ben Greear made me aware of the fact that the Curl_failf() usage internally
  was a bit sloppy with adding newlines or not to the error messages. Let's
  once and for all say that they do not belong there!

- When uploading files with -T to give a local file name, and you end the URL
  with a slash to have the local file name used remote too, we now no longer
  use the local directory as well. Only the file part of the -T file name
  will be appended to the right of the slash in the URL.

Daniel (7 December 2001)
- Michal Bonino pointed out that Digital Unix doesn't have gmtime_r so the
  link failed. Added a configure check and corrected source code.

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.2

Daniel (5 December 2001)
- Jon Travis found out that if you used libcurl and CURLOPT_UPLOAD and then
  on the same handle used CURLOPT_HTTPGET it would still attempt to upload.
  His suggested fix was perfect.

Daniel (4 December 2001)
- Incorporated more macos fixes and added four specific files in a new
  subdirectory below src.

Daniel (3 December 2001)
- Eric Lavigne reported two problems:

  First one in the curl_strnequal() function. I think this problem is rather
  macos 9 specific, as most platform provides a function to use instead of the
  one provided by libcurl.

  A second, more important, was in the way we take care of FTP responses. The
  code would read a large chunk of data and search for the end-of-response
  line within that chunk. When found, it would just skip the rest of the
  data. However, when the network connections are special, or perhaps the
  server is, we could actually get more than one response in that chunk of
  data so that when the next invoke to this function was done, the response
  had already been read and thrown away. Now, we cache the data not used in
  one call, as it could be useful in the subsequent call. Test case 126 was
  added and the test ftp server modified, to exercise this particular case.

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.2-pre8

Daniel (2 December 2001)
- Bug report #487825 correctly identified a problem when using a proxy and
  following a redirection from HTTP to HTTPS. libcurl then re-used the same
  proxy connection but without doing a proper HTTPS request.

- Fixed win32 compiling quirks.

Version 7.9.2-pre7

Daniel (30 November 2001)
- Documented --disable-epsv and CURLOPT_FTP_USE_EPSV.

Daniel (29 November 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Added --disable-epsv as an option. When used, curl won't attempt to use the
Daniel Stenberg's avatar
Daniel Stenberg committed
  EPSV command when doing passive FTP downloads. Wrote a test case for it.
Daniel Stenberg's avatar
Daniel Stenberg committed

- Eric provided a few more fixes for building on Macs. He also pointed out
  a flaw in the signal handler restoration code.
Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (28 November 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Fiddled with some Tru64 problems reported by Dimitris Sarris. They appeared
Daniel Stenberg's avatar
Daniel Stenberg committed
  only when using VERBOSE ftp transfers. Do we use a too small buffer for
  gethostbyaddr_r(), was the lack of using in_addr_t wrong or is it that the
  hostent struct must be blanked before use? With Dimitris help and these
  patches, the problems seem to be history.
Daniel Stenberg's avatar
Daniel Stenberg committed

- CURLOPT_FTP_USE_EPSV was added and can be set to FALSE to prevent libcurl
  from using the EPSV command before trying the normal PASV. Heikki Korpela
  pointed out that some firewalls and similar don't like the EPSV so we must
  be able to shut if off to work everywhere.

- I added a configure check for 'in_addr_t' and made the ftp code use that to
  receive the inet_addr() return code in. Works on Solaris and Linux at
  least. The Linux man page for inet_addr() doesn't even mention in_addr_t...

- Adjusted (almost) all FTP tests to the new command sequence.

- FTP command sequence changes:

  EPSV is now always attempted before PASV. It is the final touch to make IPv6
  passive FTP downloads to work, but EPSV is not restricted to IPv6 but works
  fine with IPv4 too on the servers that support it.

  SIZE is now always issued before RETR. It makes curl know the actual
  download size before the download takes place, as it makes it less important
  to find the size sent in RETR responses. Many sites don't include the size
  in there.

  Both these changes made it necessary to change the test suite's ftp server
  code, and all FTP test cases need to be checked and adjusted!

Daniel (27 November 2001)
- Hans Steegers pointed out that the telnet code read from stdout, not stdin
  as it is supposed to do!

Version 7.9.2-pre6

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (27 November 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Eric Lavigne's minor changes to build on MacOS before OS X were applied.

- greep at mindspring.com provided a main index.html page for our release
  archive docs directory. It just links to all the existing HTML files, but
  I think it may come useful to people.

Daniel Stenberg's avatar
Daniel Stenberg committed
- There's now some initial code to support the EPSV FTP command. That should
  be used to do passive transfers IPv6-style. The code is still #if 0'ed in
  lib/ftp.c as I have no IPv6 ftp server to test this with.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (26 November 2001)
- Robert Schlabbach had problems to understand how to do resumed transfers,
  and I clarified the man page -C section somewhat.

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.2-pre5

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (22 November 2001)
- Andrés García helped me out to track down the roots of bug report #479537,
  which was concerning curl returning the wrong error code when failing to
  connect. This didn't happen on all systems, and more specificly I've so far
  only seen this happen on IPv4-only Linux hosts.

- I applied the fixes for the two bugs Eric Lavigne found when doing his MacOS
  port. A missing comma in arpa_telnet.h and a pretty wild write in the FTP
  response reader function. The latter write is however likely to occur in our
  own buffer unless very big FTP server replies (>25K) are read. I've never
  seen such a reply ever, so I think this is a relatively minor risk.

Daniel (21 November 2001)
- Moonesamy provided code to prevent junk from being output when libcurl
  returns an error code but no error description and that corrects how make is
  run in the Makefile.dist file (that appears as root Makefile in release
  archives).

- Eric Lavigne mailed me bugfixes and patches for building libcurl on MacOS
Daniel Stenberg's avatar
Daniel Stenberg committed
  (non-X).
Daniel Stenberg's avatar
Daniel Stenberg committed

- Kevin Roth modified the cygwin files once again, now to build against the
  shared OpenSSL DLLs.

Version 7.9.2-pre4

Daniel (20 November 2001)
- Georg Horn brought a patch that introduced CURLINFO_STARTTRANSFER_TIME,
  complete with man page updates!

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (19 November 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Miklos Nemeth provided details enough to update the Borland makefile
  properly.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Lars M Gustafsson found a case with a bad free(). In fact, it was so bad I'm
  amazed we never saw this before!

- Kevin Roth patched the cygwin Makfile.

Daniel (16 November 2001)
- Klevtsov Vadim fixed a bug in how time-conditionals were sent when doing
  HTTP.

Version 7.9.2-pre3

Daniel (14 November 2001)
- Samuel Listopad patched away the problem with SSL we got when someone call
  curl_global_init() => curl_global_cleanup() => curl_global_init(). The
  second init would not "take" and SSL would be unusable with curl from that
  point. This doesn't change the fact that calling the functions that way is
  wrong. curl_global_init() should be called exactly once and not more.

Daniel (13 November 2001)
- Fixed some minor variable type mixups in ftp.c that caused compiler warnings
  on HP-UX 11.00.

- The FTP fix I did yesterday used an uninitialized variable that caused
  spurious errors when doing FTP.

Version 7.9.2-pre2

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (12 November 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Ricardo Cadime fell over a multiple-requests problem when first a FTP
Daniel Stenberg's avatar
Daniel Stenberg committed
  directory fetch failed and then a second request is made after that. The
  second request happened to get the FTP server response back from the
  previous request, when it did its initial CWD command.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Bjorn Reese pointed out that we could improve the time diff function to
Daniel Stenberg's avatar
Daniel Stenberg committed
  prevent truncation a bit.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Kai-Uwe Rommel made me aware that -p (http proxy tunnel) silly enough didn't
  work for plain HTTP requests! So I made that work.

Version 7.9.2-pre1

Daniel (12 November 2001)
- Rewrote the Curl_ConnectHTTPProxyTunnel(). It should now not only work a lot
Daniel Stenberg's avatar
Daniel Stenberg committed
  faster, it should also support such ("broken") proxies that John Lask
Daniel Stenberg's avatar
Daniel Stenberg committed
  previously have reported problems with. His proxy sends a trailing zero byte
  after the end of the (proxy-) headers. I've tested this myself and it seems
  to work on a proxy the previous version also worked with...! This rewrite is
  due to the problems John Lask previously experienced.

- Andrés García found out why the "current speed" meter sometimes showed 2048K
  for very quick transfers. It turned out the "time diff"-function returned a
  zero millisecond diff. We now always say it is at least one millisecond! In
  reality, these timers very rarely have that good resolution so even though
  the time diff was longer than 1 millisecond, it was reported as no diff.

- I also modified the getinfo() again when returning times, as Paul Harrington
  reports that 7.9.1 only returns times with 1 second accuracy, which indeed
  is wrong.

Daniel (8 November 2001)
- Marcus Webster found out that curl_formadd() could read one byte outside a
  buffer boundary, which then of course could lead to a crash. Marcus also
  gracefully provided a patch for this this.

- Glen Scott ran configure on his Cobalt Qube and it didn't figure out the
  correct way of calling gethostbyname_r() and thus failed to resolve hosts.
  This is two errors: it shouldn't continue the configure script if it finds
  gethostbyname_r() but can't figure out how to use it, and it should really
  figure out how to use it as it was running Linux and we know how that
  works...
 
Daniel (7 November 2001)
- docs/VERSIONS is a new file in the archive that explains the version number
  system we use in the curl project.

- Did some more fixes that now makes libcurl only ignore signals as long as
  it needs to, and then restore (if any) previous signal handler again.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Enrik Berkhan posted bug report #478780, in which he very correctly pointed
  out two bad timeout matters in libcurl: we didn't restore the sigaction
  struct (the alarm handler for SIGALRM) nor did we restore the previous
  alarm() timeout that could've been set by a "parent" process or similar.

- Kevin Roth made the cygwin binary get stripped before install.

Daniel (5 November 2001)
- Detlef Schmier reported that curl didn't compile using Solaris 8 with the
  native cc compiler. It was due to a bad function prototype. Fixed now.
  Unfortunately, I can't enable the -Wstrict-prototypes in my debug builds
  though, as gcc then complains like crazy on OpenSSL include files... :-(

Daniel Stenberg's avatar
Daniel Stenberg committed
- John Lask provided SSL over HTTP proxy fixes. They'll need some tweaking
  to work on all platforms.

- John Lask added the -1/--TLSv1 options that forces SSL into using TLS
  version 1 when speaking HTTPS.

- John Lask brought a brand new VC++ makefile for the lib directory, that
  works a lot better than the previous!
Daniel Stenberg's avatar
Daniel Stenberg committed
- Ramana Mokkapati brought some clever insights on the LDAP failures (bug
  report #475407), and his suggested changes are now applied.
Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.1

Daniel (4 November 2001)
- I've added a number of new test cases the last few days. A few of them since
  I got reports that hinted on problems on timeouts, so I added four tests
  with timeouts for all sorts of protocols and stuff. I also came to think of
  a few other error scenarios that we currently didn't test properly, so I
  wrote up tests for a few of those too.

Daniel (2 November 2001)
- Replaced read() and write() with recv() and send() for socket operations
  even under normal unixes.

Daniel (1 November 2001)
- When an FTP transfer was aborted due to a timeout, it wasn't really aware of
  how many bytes that had been transferred and the error text always said 0
  bytes. I modified this to output the actually transferred amount! :-)

- The FTP fixes in pre7 didn't compile on IPv6 enabled hosts. Does now. I also
  added more comments in the lib/ftp.c source file.

- Minor updates to the FAQ, added a brand new section to the web site about
  the name issue (who owns "curl"? will someone sue us? etc etc):
  http://curl.haxx.se/legal/thename.html

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.1-pre7

Daniel (31 October 2001)
- The curl_easy_getinfo() timers accidentally lost their subsecond accuracy as
  the calculations used longs instead of doubles! Paul Harrington reported.
Daniel Stenberg's avatar
Daniel Stenberg committed

- The SSL SocketIsDead() checks weren't good enough (as expected really), so I
  had to add a generic internal try-it-out system. If the request on a re-used
  connection seems to fail, then we go back and get a new (fresh) connection
  and re-tries the request on that instead. It kind of makes the
  SocketIsDead() check obsolete, but I think it is a quicker way for those
  cases where it actually discovers that the connection is dead.

- When fixing the above, I noticed that we did quite a few writes to sockets
  in libcurl where we didn't check the return code (that it actually worked to
  send the data). With the new "attempted request" system we must detect those
  situations so I went over a bunch of functions, changed return types and
  added checks for what they actually return.

Version 7.9.1-pre6

Daniel (31 October 2001)
- Paul Harrington detected a problem with persistant SSL connections. Or to be
  more exact, we didn't properly detect that the connection was dead and then
  a second connection would try to re-use it wrongly. The solution to this
  problem is still not very clear and I'm working on it. One OpenSSL insider
  said there is no way to know if the SSL connection is alive or not without
  actually trying an operation.

Daniel (30 October 2001)
- If a cookie was read from a file, it could accidentally strdup() a NULL
  pointer. Paul Harrington reported. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/cookie.c.diff?r1=1.25&r2=1.26]

- The MANUAL file now documents -t correctly. I also fixed the -T description
  in the curl.1 man page.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (29 October 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- John Janssen found out that curl_formadd was missing in the libcurl.def file
  and that the docs stated the wrong return type for the function.

- Andrés García found a bug with multiple files in the curl_formadd() function,
  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].

Daniel Stenberg's avatar
Daniel Stenberg committed
- Kevin Roth brought another patch that moved the cygwin package files to the
  packages/Win32/cygwin directory.

- A bug in the connection re-use logic made repeated requests to the same FTP
  server (when using name+pasword in the URL) sometimes use more than one
Daniel Stenberg's avatar
Daniel Stenberg committed
  connection. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/url.c.diff?r1=1.166&r2=1.167]
Daniel Stenberg's avatar
Daniel Stenberg committed

- Moonesamy tracked down and fixed a problem with the new 7.9.1 connect
Daniel Stenberg's avatar
Daniel Stenberg committed
  code. This corrected the error Kevin Roth reported on the 7.9.1-pre5 release
  (test 19)...
  [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/connect.c.diff?r1=1.13&r2=1.14]
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (26 October 2001)
- Added test28 which verifies that "Location:"-following works even if the
  contents is separated with more than one space.

Daniel (25 October 2001)
- Ramana Mokkapati pointed out that LDAP transfers would 'hang' after the
  correct data has been output.

Version 7.9.1-pre5

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (24 October 2001)
- T. Bharath found a memory leak in the cookie engine. When we update a cookie
  that we already knew about, we lost a chunk of memory in the progress... The
  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]

Daniel (23 October 2001)
- pack_hostent() didn't properly align some pointers, so at least SPARC CPUs
  would core. [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/curl/curl/lib/hostip.c.diff?r1=1.34&r2=1.35]

Daniel (22 October 2001)
- Tom Benoist reported that this SGI IRIX compiler didn't handle indented
  preprocessor instructions, so they're no longer in the source code!

- Applied Kevin Roth's patches to make it easier to build cygwin packages from
  the out-of-the-box curl release archives.

- I forgot to mention it below, but libcurl now closes connections that report
  transfer failures. Unconditionally. This could be made more nicely in the
  future if we set a flag or something that the connection is still good to be
  used for the errors that know that for a fact. We have to close the
  connection for the cases where we abort for example a HTTP transfer in the
  middle, or otherwise we might re-use that connection later with lots of data
Daniel Stenberg's avatar
Daniel Stenberg committed
  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]
Daniel Stenberg's avatar
Daniel Stenberg committed

Daniel (19 October 2001)
- CURLE_GOT_NOTHING is now returned when a HTTP server doesn't return
  anything, not even a header. test case 37 was added to test for this.

- T. Bharath made curl_easy_duphandle() properly clone the cookie status as
  well.

Version 7.9.1-pre4

Daniel (18 October 2001)
- CURLOPT_FAILONERROR, set with "curl --fail" no longer returns an error if
  the HTTP return code is below 400.

Daniel (17 October 2001)
- The test suite now kills any running test http server when you re-start the
  tests.

Daniel Stenberg's avatar
Daniel Stenberg committed
- We had to remove 'use strict' from two perl scripts, as the cygwin
Daniel Stenberg's avatar
Daniel Stenberg committed
  adjustments didn't play nicely otherwise for some reason. Any perl wizard
  out there who can put the scrict back and still make it run good on unix and
  cygwin?

- A potential memory leak pointed out to us by Yanick Pelletier was removed.
  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]

- The memory debugging system should no longer display anything to stderr
  if the curl_memdebug() hasn't been used to explicitly say so. This makes it
  easier to use the memory debug system and switch the logging on/off.

Daniel (16 October 2001)
- Kevin Roth provided fixes for building curl nicer in cygwin environments.

Daniel (12 October 2001)
- Cleaning up the progress meter/info code. The "current speed" is now more
  accurate than before as we now use the true time spent between the measures,
  and not just "assuming" every-second-update like before. The output should
  now also be of the same width at all times, never to show "extra" zeroes on
  the right edge.

- After talking about possible Location: bugs on the mailing list, I modified
  the "absolute URL" checker in lib/transfer.c to be more strict when checking
  if the redirected URL is absolute.

Daniel (11 October 2001)
- Kevin Roth provided patches that make the test suite run fine on Windows
  2000 running cygwin.

Daniel (10 October 2001)
- Setting the -c or the CURLOPT_COOKIEJAR option now enables the cookie parser.
  Previously -b or CURLOPT_COOKIEFILE was also required for the jar to work.

Version 7.9.1-pre3

Daniel (9 October 2001)
- Added a new option to the command line client: -0/--http1.0. It uses the new
  libcurl option CURLOPT_HTTP_VERSION to request that libcurl uses HTTP 1.0
  requests instead of the default version (1.1). It should only be used if you
  really MUST do that because of a silly remote server.

- Renamed the 'TimeCond' typedef in curl/curl.h to use a 'curl_' prefix as
  all public curl-symbols should.

- libcurl now explicitly ignores the SIGPIPE signal.

Daniel (8 October 2001)
- Kevin Roth's change to the cookie-jar comment (in the stored file) was
  applied.

- Lucas Adamski's minor bug in the bind error code failf() was fixed.

Daniel (5 October 2001)
- Moonesamy fixed the Curl_connecthost() function to not give compiler errors
  on a bunch of compilers, due to the argument named 'socket'.

- Moonesamy also provided updated VC++ makefiles and project files.

Version 7.9.1-pre2

Daniel (4 October 2001)
- Albert Chin provided a configure patch that makes the script detect proper
  gethostbyname_r() method without actually running any code, only compiling
  is necessary. This also removes the need of having a resolving 'localhost'
  name.

- Found and removed memory leakage (name resolve data) in libcurl on
  IPv6-enabled hosts. These could sneak through because we didn't have any
  resource tracing on the IPv6-related functions. We do now.

Daniel (3 October 2001)
- Keith McGuigan patched away a (mainly Windows-) problem with the name
  resolver data being kept in the static memory area, which is removed when a
  thread is killed. The curl handle itself though perfectly handles being
  passed between threads.

- Dirk Eddelbuettel reported an odd bug that turned out to be his proxy that
  required an Authorization: header. Now, proxies are not supposed to require
  that header, that is for true servers...

- I accidentally ruined Georg's curl_formadd(). Uh, bad me. Corrected now.

Version 7.9.1-pre1

Daniel (3 October 2001)
- Georg Huettenegger once again made an effort beyond the call of duty and not
  only improved the curl_formadd() function, but also took care of adjusting
  the curl command line client to use this new function instead of the
  obsoleted curl_formparse.

Daniel (2 October 2001)
- Major fix in how libcurl does TCP connects. It now does non-blocking
  connects to enable good timeouts without signals, and it now tries all IP
  addresses for any given host (if it resolves more than one and the first
  one(s) don't connect). Added a new source file 'connect.c' to deal with all
  the TCP connect stuff.

- We now support IPv4-style IP-addresses in rfc2732-format, to better support
  people writing scripts without knowing what address there is.

Daniel (28 September 2001)
- Cleanups in the FTP source code. Divided the code into even more smaller
  functions and generally tried to make the differences between IPv4 and IPv6
  get less noticable in the sources.

- If the remote file time is not readable/accessable/understood by libcurl,
  libcurl now returns -1 in the CURLINFO_FILETIME data, not 0 as it previously
  did. This should make curl not touch the file data unless there was a known
  remote date when -R is used.

Daniel (27 September 2001)
- Working on getting non-blocking connects working platform independent. We
  will also make curl try all IPs for a given host if the first one should
  fail.

Daniel (26 September 2001)
- Kevin Roth provided a cookie example that proved the cookie jar
  functionality wasn't working properly. I added test case 46 and made it
  work.

Daniel (25 September 2001)
- Jörn Hartroth updated the mingw32 makefiles.

Version 7.9

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (23 September 2001)
- Found and removed a 'socket leak' that would occur on IPv6 enabled hosts
  when FTP RETR failed.

- Made the FTP upload tests run fine on machines with IPv6 enabled.

Version 7.9-pre8

Daniel (19 September 2001)
- Vojtech Minarik set up a special-purpose test server and provided me with
  test certificates in order for me to repeat the bug reports #440068 and
  #440373. It turned out we didn't check all the error codes properly. We do
  now, and connecting with a unacceptable certificate will make libcurl fail
  to connect with an error code returned.

- Ramana Mokkapati found a case when the Location: following code did wrong.
  I wrote a test case for this (45).

Version 7.9-pre7

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (17 September 2001)
- Linus Nielsen Feltzing fixed telnet for win32. It makes libcurl require
  winsock 2.0.

Version 7.9-pre6

Daniel Stenberg's avatar
Daniel Stenberg committed
- libtool 1.4.2 is now in use!

Version 7.9-pre5

Daniel (14 September 2001)
- Added another 14 ftp tests.

Daniel (13 September 2001)
- Added curl_easy_duphandle() to the easy.h header file. It has now been
  tested and proved to work in a real-world tests by T Bharath. We still need
  to write up some docs for this function.

- Added four more ftp tests to the test suite.

Daniel (12 September 2001)
- CURLOPT_SSL_CIPHER_LIST was added, and the curl tool option is named
  --ciphers. Use them to specify a list of ciphers to use in the SSL
  connection.

- T. Bharath found a memory leak in libcurl's windows version. It turned out
  to be the new duphandle() that didn't quite work yet.

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9-pre4

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (11 September 2001)
- Added verbose output for SSL connections that output the server
  certificate's start and expire dates. As suggested by Paul Harrington.

- Heikki Korpela found problems in the perl ftp server used for the test
  suite, when he runs on on OpenBSD with perl 5.6. Some changes have been
  made, but nothing really certain.

- T. Bharath has experienced problems with libcurl's stack usage on windows
  and works on reducing it.

Daniel (10 September 2001)
- Cris Bailiff fixed the perl interface. It stopped working since the changed
  behavior with WRITEHEADER and NULL pointers.

- The "output cookies" function could dump core if no cookies were enabled.

Daniel (7 September 2001)
- SM pointed out that the SSL code didn't compile any longer if SSL was
  disabled... Also, we needed to correct the #include for the utime stuff on
  windows.

Daniel (6 September 2001)
- T. Bharath pointed out a flaw in the SSL session cache code that made it
  sometimes read from a NULL pointer.

Version 7.9-pre3

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (3 September 2001)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Added the -R/--remote-time option, that uses the remote file's datestamp to
  set the local file's datestamp. Thus, when you get a remote file your local
  file will get the same time and date. Note that this only works when you use
  -o or -O.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Installed libtool 1.4.1, libtoolized and everything.

Daniel (1 September 2001)
- Heikki Korpela pointed out that I did not ship the proper libtool stuff in 
  the pre-releases, even though that was my intention. libtoolize has now
  been re-run.

- Heikki also patched away the bad use of 'make -C' in the test suite
  makefile. make -C is not very portable and is now banned from here.

Version 7.9-pre2

Daniel (31 August 2001)
- I just made a huge internal struct rehaul, and all the big internally used
  structs have been renamed, redesigned and stuff have been moved around a bit
  to make the source easier to follow, more logically grouped and to hopefully
  decrease future bugs. I also hope that this will make new functions to get
  easier to add, and make it less likely that we have bugs left like the URL-
  free bug from August 23.

Version 7.9-pre1

Daniel (29 August 2001)
- The new cookie code have enabled the brand new '-c/--cookie-jar' option. Use
  that to specify the file name in which you want to have all cookies curl
  knows of, dumped to. It'll be written using the netscape cookie format.

  This is internally done with the new CURLOPT_COOKIEJAR option to libcurl,
  which in turn dumps this information when curl_easy_cleanup() is invoked.
  There might be reasons to re-consider my choice of putting it there. Perhaps
  it is better placed to get done just before *_perform() is done. It is all
  of course depending on how you guys want to use this feature...

- Added ftpupload.c in the source examples section, based on source code posted
  by Erick Nuwendam.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (28 August 2001)
- Now running libtool CVS branch-1-4 to generate stuff. Should fix problems
  on OpenBSD and hopefully on FreeBSD as well!

Daniel Stenberg's avatar
Daniel Stenberg committed
- Georg Huettenegger modified the curl_formadd() functionality slightly, and
  added support for error code 417 when doing form post and using the Expect:
  header. Great work!

- Made some tests with cached SSL session IDs, and they seem to work. There
  should be a significant speed improvement in the SSL connection phase, but
  in my tiny tests it just isn't possible to notice any difference. Like other
  caching in libcurl, you must reuse the same handle for the caching to take
  effect. SSL session ID caching is done on a per host-name and destination
  port number basis.

  Set verbose, and you'll get informational tests when libcurl detects and
  uses a previous SSL session ID.
Daniel Stenberg's avatar
Daniel Stenberg committed

- Upgraded to automake 1.5 on my development/release machine.

Daniel (27 August 2001)
- Slowly started writing SSL session ID caching code

Daniel (24 August 2001)
- T. Bharath removed compiler warnings on windows and updated the MS project
  files.

- Kevin Roth reported two kinds of command line constructs with the new -G that
  curl didn't really deal with the way one would like.

- Tim Costello patched away a use of strcasecmp() in the SSL code. We have our
  own portable version named strequal() that should be used!

- Tim also pointed out a problem in the lib/Makefile.vc6 file that made it mix
  debug object modules causing confusions.

Daniel (23 August 2001)
- T. Bharath accurately found a libcurl bug that would happen when doing a
  second invoke of curl_easy_perform() with a new URL when the previous invoke
  followed a Location: header.

- Started the improvement work on the cookie engine:
  - Now keeps cookies in the same order as the cookie file
  - A write to the possibly static string was removed
  - Added a function that can output all cookies
  - Now supports reading multiple cookie files

- Steve Lhomme corrected a DLL naming issue in the MSVC++ project file.

- Split up the monster function in lib/ftp.c to use more smallish functions to
  increase readability and maintainability.

- Georg Huettenegger's big patch was applied. Now we have:
  o "Expect: 100-continue" support. We will from now on send that header in
    all rfc1867-posts, as that makes us abort much faster when the server
    rejects our POST. Posting without the Expect: header is still possible in
    the standard replace-internal-header style.
  o curl_formadd() is a new formpost building function that is introduced to
    replace the now deprecated curl_formparse() function. The latter function
    will still hang around for a while, but the curl_formadd() is the new way
    and correct way to build form posts.
  o Documentation has been updated to reflect these changes

  These changes are reason enough to name the next curl release 7.9...

- We now convert man pages to HTML pages and include them in the release
  archive. For the pleasure of everyone without nroff within reach.

- Andrés García's suggested flushing of the progress meter output stream was
  added. It should make the progress meter look better on Windows.

- Troy Engel pointed out a mistake in the configure script that made it fail
  on many Red Hat boxes!

Daniel (20 August 2001)
- We need an updated libtool to make a better build environment for OpenBSD
  as well as FreeBSD

Version 7.8.1

Daniel (20 August 2001)
- Brad pointed out that we ship two extra libtool files in the tarballs that
  we really don't need to! Removing them makes the gz-archive about 60K
  smaller!

- Albert Chin brought fixes for the configure script to detect socklen_t
  properly as well as moving lots of our custom autoconf macros to
  acinclude.m4.

Daniel (19 August 2001)
- Moonesamy improved his -G feature for host names only URLs...

Daniel (17 August 2001)
- Finally cleaned up the kerberos code to use Curl_ prefixes on all global
  symbols and to not use global variables.

Version 7.8.1-pre6

Daniel (16 August 2001)
- S. Moonesamy added the -G option to curl, that converts the data specified
  with -d to a GET request. Default action when using -d is POST. When -G is
  used, the -d specified data will be appended to the URL with a '?'
  separator. As suggested previously by Kevin Roth.

- curl-config --libs should now display all linker options required to link
  with libcurl. It includes the path and options for libcurl itself.
  curl-config --cflags displays the compiler option(s) needed to compile
  source files that use libcurl functions. Basically, that sets the include
  path correct.

- Arkadiusz Miskiewicz pointed out a mistake in how IPv6-style IP-addresses
  were parsed and used. (RFC2732-format)

- Bug #12733 over on php.net identified a problem in libcurl that made it core
  dump if you used CURLOPT_POST without setting any data to post with
  CURLOPT_POSTFIELDS! This is no longer the case. Not using CURLOPT_POSTFIELDS
  now equals setting it to no data at all.

- Ramana Mokkapati reported that curl with '-w %{http_code}' didn't work
  properly when used for multiple URLs on a single command line. Indeed, the
  variable was not reset between the requests. This is now fixed.

- David James fixed the Borland makefile so that libcurl still compiles and
  builds with that compiler.

Daniel (14 August 2001)
- Oops. I ruined Nico's socklen_t define in config-vms.h, corrected it now.

- An older item not mentioned here before: CURL_GLOBAL_WIN32 is a define for
  windows users to curl_global_init(), that makes libcurl init the winsock
  stuff. If libcurl is all socket stuff you do, then allowing it to fiddle
  with this is a comfortable shortcut to fame.

Version 7.8.1-pre5

Daniel (14 August 2001)
- Nico Baggus provided more feedback from his VMS porting efforts and a few
  minor changes were necessary.

- I modified configure.in so that --enable-debug sets more picky gcc options.
  I then removed almost all the new warnings that appeared, and by doing so I
  corrected the size_t-treated-as-signed problem that has been discussed on
  the mailing list previously. I also removed a bunch of the just recently
  added #ifdef VMS lines.

- I removed the use of a global variable in the SSL code. It was once
  necessary but hasn't been needed since OpenSSL 0.9.4. The old code should
  (hopefully) still work if libcurl is built against an ancient version of
  OpenSSL.

Daniel (13 August 2001)