Skip to content
CHANGES 97.2 KiB
Newer Older
Daniel Stenberg's avatar
Daniel Stenberg committed
                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

Daniel Stenberg's avatar
Daniel Stenberg committed
                                  Changelog

- David Byron found and fixed a small bug with the --fail and authentication
  stuff added a few weeks ago.  Turns out that if you specify --proxy-ntlm and
  communicate with a proxy that requires basic authentication, the proxy
  properly returns a 407, but the failure detection code doesn't realize it
  should give up, so curl returns with exit code 0. Test case 162 added to
  verify the functionality.

- If a transfer is found out to be only partial, libcurl will now treat that
  as a problem serious enough to skip the final QUIT command before closing
  the control connection. To avoid the risk that it will "hang" waiting for
  the QUIT response. Added test case 161 to verify this.

Daniel (21 April 2004)
- Modified the heuristics for dealing with the test 160 scenario. When a
  connection is re-used and nothing at all is received from it (because the
  server closes the connection), we will now retry the request on a fresh new
  connection. The previous ECONNRESET stuff from January 30 was removed again
  as it didn't detect the situation good enough.

Daniel (20 April 2004)
- Added test case 160 to verify that curl works correctly when it gets a
  connection reset when trying to re-use a connection. It should then simply
  create a new connection and resend the request.

Daniel (19 April 2004)
- No more 512 byte limit for host name (inclusing name + password) in libcurl.
  An added bonus is that we use less memory for the typical (shorter URL)
  case.

- Cleaned up the sources to better use the terms 'hostname' and 'path'
  internally when referring to that data. The buffers used for keep that info
  is called 'namebuffer' and 'pathbuffer'. Much easier to read and understand
  than the previous mess.

Daniel (15 April 2004)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Modified runtests.pl again to remove all log files in the log/ dir between
  each test, and then made -p display all non-zero byte files in the log dir.
  It should make that data more usable and contain less rubbish.

- ftpserver.pl now produces log files more similar to how the sws ones look
  and they now also contains a bit more details to help debugging ftp
  problems.

- Removed the fixed maximum amount of dir levels the FTP code supported.
  Previously we had a fixed array for 100 levels, now we save space in each
  handle by allocating only for a few level by default and then enlarging that
  in case of need (with no maximum depth). Adjusted test case 142 to verify
  that 150 dir levels work fine.  An added bonus is that we use less memory
  for the typical (not very deep) case.
Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (14 April 2004)
Daniel Stenberg's avatar
Daniel Stenberg committed
- Asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will
  now cause the resolve function to return NULL immediately. This flaw was
  pointed out by Gisle Vanem.

- Gisle Vanem made curl -4/-6 actually set the desired option to libcurl.

Daniel Stenberg's avatar
Daniel Stenberg committed
- runtests.pl now has a new option (-p) that will display "interesting" log
  files to stdout in case of a test failure. This is primarily intended to be
  used in the 'full-test' make target that is used by the autobuild tests, as
  we then get a much better chance to understand (remote) test failures based
  on autobuild logs alone.

Daniel (13 April 2004)
- Gisle Vanem made the multi interface work again on Windows even when built
  without ares. Before this, select() would return -1 during the name resolve
  phase since curl_multi_fdset() didn't return any fd_set at all which wasn't
  appreciated!

- curl_easy_duphandle() now duplicates the tcp_nodelay info as well.

Daniel (11 April 2004)
- Applied David Byron's patch for the MSVC libcurl makefile for builds with
  zlib.

Daniel (9 April 2004)
- Dirk Manske improved the timer resolution for CURLINFO_*_TIME, it can now
  be down to usec if the system sypports it.

Daniel (7 April 2004)
- A request that sends "Expect: 100-continue" and gets nothing but a single
  100 response back will now return a CURLE_GOT_NOTHING. Test 158 verifies.

- The strtoofft() macro is now named curlx_strtoofft() to use the curlx_*
  approach fully.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (6 April 2004)
- Gisle Vanem's fixed bug #927979 reported by Nathan O'Sullivan. The problem
  made libcurl on Windows leak a small amount of memory in each name resolve
  when not used as a DLL.

- New authentication code added, particularly noticable when doing POST or PUT
  with Digest or NTLM. libcurl will now use HEAD to negotiate the
  authentication and when done perform the requested POST. Previously libcurl
  sent POST immediately and expected the server to reply a final status code
  with an error and then libcurl would not send the request-body but instead
  send then next request in the sequence.

  The reason for this change is due to IIS6 barfing on libcurl when we attempt
  to POST with NTLM authentication. The reason for the problems is found in
  RFC2616 section 8.2.3 regarding how servers should deal with the 100
  continue request-header:

        If it responds with a final status code, it MAY close the transport
        connection or it MAY continue to read and discard the rest of the
        request.

  Previous versions of IIS clearly did close the connection in this case,
  while this newer version decided it should "read and discard". That would've
  forced us to send the whole POST (or PUT) data only to have it discarded and
  then be forced to send it again. To avoid that huge penality, we switch to
  using HEAD until we are authenticated and then send the POST.

  The only actual drawback I can think of (except for the odd sites that might
  treat HEAD differently than they would treat POST/PUT when given the same
  URL) is that if you do POST with CURLAUTH_ANY set and the site requires NO
  authentication, libcurl will still use a HEAD in a first round and then do a
  POST.

  If you do a HEAD or a GET on a site using CURLAUTH_ANY, libcurl will send
  an un-authenticated request at once, which then is the only request if the
  site requires no auth.

  Alan Pinstein helped me work out the protocol details by figuring out why
  libcurl failed and what IIS6 expects.

- The --limit-rate logic was corrected and now it works a lot better for
  higher speeds, such as '10m' or similar. Reported in bug report #930249.

- Introducing curlx_tvnow() and curlx_tvdiff() using the new curlx_* fashion.
  #include "timeval.h" from the lib dir to get the protos etc.  Note that
  these are NOT part of the libcurl API. The curl app simply uses the same
  source files as the library does and therefore the file needs to be compiled
  and linked with curl too, not just when creating libcurl.

Daniel Stenberg's avatar
Daniel Stenberg committed
- lib/strerror.c no longer uses sys_nerr on non-windows platforms since it
  isn't portable enough

Daniel (2 April 2004)
- In the curl_strnqual.3 man page, we now prepend the man3 dir to the file
  name to work better. As pointed out by Robin Kay.

- Andrés García updated the mingw makefiles.

- Dirk Manske fixed a problem I recently added in the progress meter code that
  broke subsecond resolution for CURLINFO_TOTAL_TIME. He also pointed out a
  mistake in the code that produces the final update of the progress meter
  that would often prevent it from actually being updated that final time.

Daniel (1 April 2004)
- Dirk Manske fixed a memory leak that happened when we use ares for name
  resolves and decides to time-out before ares does it. This fix uses the
  brand new ares_cancel() function which is not present in c-ares 1.1.0.

  When told to enable ares, the configure script now checks for presence of
  the ares_cancel function to alert users if they attempt to use a too old
  c-ares library.

Daniel Stenberg's avatar
Daniel Stenberg committed
Daniel (31 March 2004)
- Roy Shan fixed a flaw that prevented ares name resolve timeouts to occur!

- Dirk Manske found out that libcurl timed out waiting for resolves far too
  easy when libcurl was built to use (c-)ares for name resolving.

- Further Digest fixing and a successful test case 153 now makes me believe
  Mitz Wark's problems are fixed.

- Andres Garcia figured out that test case 63, while working, only proved a
  flaw in libcurl's 'http_proxy' parser when a user name and password is
  provided. The user name was not extracted properly (and 'http' was always
  used as user name).

- Andrés García fixed compiler warnings in our ioctlsocket() usage.

Daniel Stenberg's avatar
Daniel Stenberg committed
- Joe Halpin faced problems with the getnameinfo() argument ai_flags and the
  particular bit named 'NI_WITHSCOPEID' on Solaris 9 for Intel.  I've now
  written a configure test that checks for a working NI_WITHSCOPEID
  implemenation. No code uses the result from this test yet, it is still
  experimental. James Carlson wrote in comp.unix.solaris: "It's a bug
  (5006623) -- it's not supported and shouldn't be in the header file."

- I provided Mitz Wark with a first patch in order to fix libcurl's problems
  to re-negotiate Digest authentication (when 'stale=true' is included in the
  response header).

- Roy Shan discovered that the multi interface didn't properly timeout name
  lookups which could make handles get stuck in that state and thus never get
  completed. I've produced a first test patch that attempts to correct this.

- David Byron's patch was appplied to make CURLOPT_FAILONERROR work nicely
Loading full blame...