CHANGES 101 KB
Newer Older
  wasn't complete and thus I wrote my own fix to the problem.

Daniel Stenberg (28 Dec 2008)
- Peter Korsgaard fixed building libcurl with "configure --with-ssl
  --disable-verbose".
Yang Tse's avatar
 
Yang Tse committed

- Anthony Bryan fixed more language and spelling flaws in man pages.

- Given a recent enough libssh2, libcurl can now seek/resume with SFTP even
  on file indexes beyond 2 or 4GB.

- Anthony Bryan provided a set of patches that cleaned up manual language,
  corrected spellings and more.

Daniel Stenberg (20 Dec 2008)
- Igor Novoseltsev fixed a bad situation for the multi_socket() API when doing
  pipelining, as libcurl could then easily get confused and A) work on the
  handle that was not "first in queue" on a pipeline, or even B) tell the app
  to REMOVE a socket while it was in use by a second handle in a pipeline. Both
  errors caused hanging or stalling applications.

- curl_multi_timeout() could return a timeout value of 0 even though nothing
  was actually ready to get done, as the internal time resolution is higher
  than the returned millisecond timer. Therefore it could cause applications
  running on fast processors to do short bursts of busy-loops.
  curl_multi_timeout() will now only return 0 if the timeout is actually
  alreay triggered.

- Using the libssh2 0.19 function libssh2_session_block_directions(), libcurl
  now has an improved ability to do right when the multi interface (both
  "regular" and multi_socket) is used for SCP and SFTP transfers. This should
  result in (much) less busy-loop situations and thus less CPU usage with no
  speed loss.

Daniel Stenberg (17 Dec 2008)
- SCP and SFTP with the multi interface had the same flaw: the 'DONE'
  operation didn't complete properly if the EAGAIN equivalent was returned but
  libcurl would simply continue with a half-completed close operation
  performed. This ruined persistent connection re-use and cause some
  SSH-protocol errors in general. The correction is unfortunately adding a
  blocking function - doing it entirely non-blocking should be considered for
  a better fix.

Gisle Vanem (16 Dec 2008)
- Added the possibility to use the Watt-32 tcp/ip stack under Windows.
  The change simply involved adding a USE_WATT32 section in the
  config-win32.h files (under ./lib and ./src). This section disables
  the use of any Winsock headers.

Daniel Stenberg (16 Dec 2008)
- libssh2_sftp_last_error() was wrongly used at some places in libcurl which
  made libcurl sometimes not properly abort problematic SFTP transfers.

Daniel Stenberg (12 Dec 2008)
- More work with Igor Novoseltsev to first fix the remaining stuff for
  removing easy handles from multi handles when the easy handle is/was within
  a HTTP pipeline. His bug report #2351653
  (http://curl.haxx.se/bug/view.cgi?id=2351653) was also related and was
  eventually fixed by a patch by Igor himself.

Yang Tse (12 Dec 2008)
- Patrick Monnerat fixed a build regression, introduced in 7.19.2, affecting
  OS/400 compilations with IPv6 enabled.

- Mark Karpeles filed bug report #2416182 titled "crash in ConnectionExists
  when using duphandle+curl_mutli"
  (http://curl.haxx.se/bug/view.cgi?id=2416182) which showed that
  curl_easy_duphandle() wrongly also copied the pointer to the connection
  cache, which was plain wrong and caused a segfault if the handle would be
  used in a different multi handle than the handle it was duplicated from.

Daniel Stenberg (11 Dec 2008)
- Keshav Krity found out that libcurl failed to deal with dotted IPv6
  addresses if they were very long (>39 letters) due to a too strict address
  validity parser. It now accepts addresses up to 45 bytes long.

Daniel Stenberg (11 Dec 2008)
- Internet Explorer had a broken HTTP digest authentication before v7 and
  there are servers "out there" that relies on the client doing this broken
  Digest authentication. Apache even comes with an option to work with such
  broken clients.

  The difference is only for URLs that contain a query-part (a '?'-letter and
  text to the right of it).

  libcurl now supports this quirk, and you enable it by setting the
  CURLAUTH_DIGEST_IE bit in the bitmask you pass to the CURLOPT_HTTPAUTH or
  CURLOPT_PROXYAUTH options. They are thus individually controlled to server
  and proxy.

  (note that there's no way to activate this with the curl tool yet)

Daniel Fandrich (9 Dec 2008)
- Added test cases 1089 and 1090 to test --write-out after a redirect to
  test a report that the size didn't work, but these test cases pass.

- Documented CURLOPT_CONNECT_ONLY as being useful only on HTTP URLs.

Daniel Stenberg (9 Dec 2008)
- Ken Hirsch simplified how libcurl does FTPS: now it doesn't assume any
  particular state for the control connection like it did before for implicit
  FTPS (libcurl assumed such control connections to be encrypted while some
  FTPS servers such as FileZilla assumes such connections to be clear
  mode). Use the CURLOPT_USE_SSL option to set your desired level.

Daniel Stenberg (8 Dec 2008)
- Fred Machado posted about a weird FTP problem on the curl-users list and when
  researching it, it turned out he got a 550 response back from a SIZE command
  and then I fell over the text in RFC3659 that says:

   The presence of the 550 error response to a SIZE command MUST NOT be taken
   by the client as an indication that the file cannot be transferred in the
   current MODE and TYPE.

  In other words: the change I did on September 30th 2008 and that has been
  included in the last two releases were a regression and a bad idea. We MUST
  NOT take a 550 response from SIZE as a hint that the file doesn't exist.

- Christian Krause filed bug #2221237
  (http://curl.haxx.se/bug/view.cgi?id=2221237) that identified an infinite
  loop during GSS authentication given some specific conditions. With his
  patience and great feedback I managed to narrow down the problem and
  eventually fix it although I can't test any of this myself!

Daniel Fandrich (3 Dec 2008)
- Fixed the getifaddrs version of Curl_if2ip to work on systems without IPv6
  support (e.g. Minix)

Daniel Stenberg (3 Dec 2008)
- Igor Novoseltsev filed bug #2351645
  (http://curl.haxx.se/bug/view.cgi?id=2351645) that identified a problem with
  the multi interface that occured if you removed an easy handle while in
  progress and the handle was used in a HTTP pipeline.

- Pawel Kierski pointed out a mistake in the cookie code that could lead to a
  bad fclose() after a fatal error had occured.
  (http://curl.haxx.se/bug/view.cgi?id=2382219)

Daniel Fandrich (25 Nov 2008)
- If a HTTP request is Basic and num is already >=1000, the HTTP test
  server adds 1 to num to get the data section to return. This allows
  testing authentication negotiations using the Basic authentication
  method.

- Added tests 1087 and 1088 to test Basic authentication on a redirect
  with and without --location-trusted

Daniel Stenberg (24 Nov 2008)
- Based on a patch by Vlad Grachov, libcurl now uses a new libssh2 0.19
  function when built to support SCP and SFTP that helps the library to know
  in which direction a particular libssh2 operation would return EAGAIN so
  that libcurl knows what socket conditions to wait for before trying the
  function call again. Previously (and still when using libssh2 0.18 or
  earlier), libcurl will busy-loop in this situation when the easy interface
  is used!

Daniel Fandrich (20 Nov 2008)
- Automatically detect OpenBSD's CA cert bundle.

- I removed the default use of "Pragma: no-cache" from libcurl when a proxy is
  used. It has been used since forever but it was never a good idea to use
  unless explicitly asked for.

- Josef Wolf's extension that allows a $TESTDIR/gdbinit$testnum file that when
  you use runtests.pl -g, will be sourced by gdb to allow additional fancy or
  whatever you see fit

- Christian Krause reported and fixed a memory leak that would occur with HTTP
  GSS/kerberos authentication (http://curl.haxx.se/bug/view.cgi?id=2284386)

- Andreas Wurf and Markus Koetter helped me analyze a problem that Andreas got
  when uploading files to a single FTP server using multiple easy handle
  handles with the multi interface. Occasionally a handle would stall in
  mysterious ways.

  The problem turned out to be a side-effect of the ConnectionExists()
  function's eagerness to re-use a handle for HTTP pipelining so it would
  select it even if already being in use, due to an inadequate check for its
  chances of being used for pipelnining.

Daniel Fandrich (17 Nov 2008)
- Added more compiler warning options for gcc 4.3

Yang Tse's avatar
Yang Tse committed
Yang Tse (17 Nov 2008)
- Fix a remaining problem in the inet_pton() runtime configure check. And
  fix internal Curl_inet_pton() failures to reject certain malformed literals.

- Make configure script check if ioctl with the SIOCGIFADDR command can be
  used, and define HAVE_IOCTL_SIOCGIFADDR if appropriate.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel Stenberg (16 Nov 2008)
- Christian Krause fixed a build failure when building with gss support
  enabled and FTP disabled.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Added check for NULL returns from strdup() in src/main.c and lib/formdata.c
  - reported by Jim Meyering also prevent buffer overflow on MSDOS when you do
  for example -O on a url with a file name part longer than PATH_MAX letters

- lib/nss.c fixes based on the report by Jim Meyering: I went over and added
  checks for return codes for all calls to malloc and strdup that were
  missing. I also changed a few malloc(13) to use arrays on the stack and a
  few malloc(PATH_MAX) to instead use aprintf() to lower memory use.

- I fixed a memory leak in Curl_nss_connect() when CURLOPT_ISSUERCERT is
  in use.

Daniel Fandrich (14 Nov 2008)
- Added .xml as one of the few common file extensions known by the multipart
  form generator.

- Added some #ifdefs around header files and change the EAGAIN test to
  fix compilation on Cell (reported by Jeff Curley).

Yang Tse's avatar
Yang Tse committed
Yang Tse (14 Nov 2008)
- Fixed several configure script issues affecting checks for inet_ntoa_r(),
  inet_ntop(), inet_pton(), getifaddrs(), fcntl() and getaddrinfo().

Yang Tse (13 Nov 2008)
- Refactored configure script detection of functions used to set sockets into
  non-blocking mode, and decouple function detection from function capability.