CHANGES 95.1 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 (25 February 2002)
- Fiddled with the automake files to make all source files in the lib
  directory not have ../src in the include path, and the src sources shouldn't
  have ../lib!

- All 79 test cases ran OK under Linux and Solaris using the new HTTP server
  in the test suite. The new HTTP server was first donated by Georg Horn and
  subsequently modified to work with the test suite. It is currently still not
  portable enough to run on "all over" but this is a start and I can run all
  curl tests on my machines. This is an important requirement for the upcoming
  public release.

- Using -d and -I on the same command line now reports an error, as it implies
  two different HTTP requests that can't be mixed.

- Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
  support %{content_type} to get the content type of the recent download.

- Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
  and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
  out if we could include winsock.h which turns out not to be a wise choice to
  do on cygwin since it has the file but can't include it!

Daniel (22 February 2002)
- Added src/config-vms.h to the release archive.

- Fixed the connection timeout value again, the change from February 18 wasn't
  complete.

Version 7.9.5-pre3

Daniel (21 February 2002)
- Kevin Roth and Andrés García both found out that lib/config.h.in was missing
  in the pre-release archive and thus the configure script failed.

Version 7.9.5-pre2

Daniel (20 February 2002)
- Andrés García provided a solution to bug report #515228. the total time
  counter was not set correctly when -I was used during some conditions (all
  headers were read in one single read).

- Nico Baggus provided a huge patch with minor tweaks all over to make curl
  compile nicely on VMS.

Daniel (19 February 2002)
- Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
  getaddrinfo() calls, he could speed up some name resolving calls with an
  order of magnitudes on his Redhat Linux 7.2.

- Philip Gladstone found a second INADDR_NONE problem where we used long
  intead of in_addr_t which caused 64bit problemos. We really shouldn't define
  that on two different places.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (18 February 2002)
- Philip Gladstone found a problem in how HTTP requests were sent if the
  request couldn't be sent all at once.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Emil found and corrected a bad connection timeout comparison that made curl
  use the longest of connect-timeout and timout as a timeout value, instead of
  the shortest as it was supposed to!

- Aron Roberts provided updated information about LDAP URL syntax to go into
  the manual as a replacement for the old references.

Daniel (17 February 2002)
- Philip Gladstone pointed out two missing include files that made curl core
  dump on 64bit architectures. We need to pay more attention on these details.
  It is *lethal* to for example forget the malloc() prototype, as 'int' is
  32bit and malloc() must return a 64bit pointer on these platforms.

- Giaslas Georgios fixed a problem with Host: headers on repeated requests on
  the same handle using a proxy.

Daniel (8 February 2002)
- Hanno L. Kranzhoff accurately found out that disabling the Expect: header
  when doing multipart formposts didn't work very well. It disabled other
  parts of the request header too, resulting in a broken header. When I fixed
  this, I also noticed that the Content-Type wasn't possible to disable. It is
  now, even though it probably is really stupid to try to do this (because of
  the boundary string that is included in the internally generated header,
  used as form part separator.)

Daniel (7 February 2002)
- I moved the config*.h files from the root directory to the lib/ directory.

- I've added the new test suite HTTP server to the CVS repository, It seems to
  work pretty good now, but we must make it get used by the test scripts
  properly and then we need to make sure that it compiles, builds and runs on
  most operating systems.

Version 7.9.5-pre1

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (6 February 2002)
- Miklos Nemeth provided updated windows makefiles and INSTALL docs.

- Mr Larry Fahnoe found a problem with formposts and I managed to track down
  and patch this bug. This was actually two bugs, as the posted size was also
  said to be two bytes too large.

- Brent Beardsley found out and brought a correction for the
  CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
  accidentaly broke Giaslas Georgios' patch.

Daniel (5 February 2002)
- Kevin Roth found yet another SSL download problem.

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.4

- no changes since pre-release

Version 7.9.4-pre2

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (3 February 2002)
- Eric Melville provided a few spelling corrections in the curl man page.

Daniel (1 February 2002)
- Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
  uses gmtime_r() on all hosts that have it.

Daniel (31 January 2002)
- An anonymous bug report identified a problem in the DNS caching which made it
  sometimes allocate one byte too little to store the cache entry in. This
  happened when the port number started with 1!

- Albert Chin provided a patch that improves the gethostbyname_r() configure
  check on HP-UX 11.00.

Version 7.9.4-pre1

Daniel (30 January 2002)
- Georg Horn found another way the SSL reading failed due to the non-blocking
  state of the sockets! I fixed.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (29 January 2002)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Multipart formposts now send the full request properly, including the CRLF.
  They were previously treated as part of the post data.

- The upload byte counter bugged.

Daniel Stenberg's avatar
Daniel Stenberg committed
- T. Bharath pointed out that we seed SSL on every connect, which is a time-
  consuming operation that should only be needed to do once. We patched
  libcurl to now only seed on the first connect when unseeded. The seeded
  status is global so it'll now only happen once during a program's life time.

Daniel Stenberg's avatar
Daniel Stenberg committed
  If the random_file or egdsocket is set, the seed will be re-made though.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
  curl_easy_getinfo() read the content-type from the previous request.

Daniel (28 January 2002)
- Kjetil Jacobsen found a way to crash curl and after much debugging, it
  turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
  name resolving.

- Andreas Damm posted a huge patch that made the curl_getdate() function fully
  reentrant!

- Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
  CURLOPT_POSTFIELDS. You can now!

Daniel (25 January 2002)
- Krishnendu Majumdar pointed out that the header length counter was not reset
  between multiple requests on the same handle.

- Pedro Neves rightfully questioned why curl always append \r\n to the data
  that is sent in HTTP POST requests. Unfortunately, this broke the test suite
  as the test HTTP server is lame enough not to deal with this... :-O

- Following Location: headers when the connection didn't close didn't work as
  libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
  the restructured internals. 'Frank' posted a bug report about this.

Daniel (24 January 2002)
- Kevin Roth very quickly spotted that we wrongly installed the example
  programs that were built in the multi directory, when 'make install' was
  used. :-/

Daniel Stenberg's avatar
Daniel Stenberg committed
Version 7.9.3

Daniel (23 January 2002)
- Andrés García found a persistancy problem when doing HTTP HEAD, that made
  curl "hang" until the connection was closed by the server. This problem has
  been introduced in 7.9.3 due to internal rewrites, this was not present in
  7.9.2.

Version 7.9.3-pre4

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)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Georg Horn could make a transfer time-out 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.