Daniel Stenberg [Tue, 7 Mar 2006 23:11:41 +0000 (23:11 +0000)]
Markus Koetter filed debian bug report #355715 which identified a problem
with the multi interface and multi-part formposts. The fix from February
22nd could make the Curl_done() function get called twice on the same
connection and it was not designed for that and thus tried to call free() on
an already freed memory area!
Daniel Stenberg [Mon, 6 Mar 2006 22:35:51 +0000 (22:35 +0000)]
Lots of users on Windows have reported getting the "SSL: couldn't set
callback" error message so I've now made the setting of that callback not be
as critical as before. The function is only used for additional loggging/
trace anyway so a failure just means slightly less data. It should still be
able to proceed and connect fine to the server.
Daniel Stenberg [Thu, 23 Feb 2006 12:20:48 +0000 (12:20 +0000)]
Lots of work and analysis by "xbx___" in bug #1431750
(http://curl.haxx.se/bug/view.cgi?id=1431750) helped me identify and fix two
different but related bugs:
1) Removing an easy handle from a multi handle before the transfer is done
could leave a connection in the connection cache for that handle that is
in a state that isn't suitable for re-use. A subsequent re-use could then
read from a NULL pointer and segfault.
2) When an easy handle was removed from the multi handle, there could be an
outstanding c-ares DNS name resolve request. When the response arrived,
it caused havoc since the connection struct it "belonged" to could've
been freed already.
Now Curl_done() is called when an easy handle is removed from a multi handle
pre-maturely (that is, before the transfer was complteted). Curl_done() also
makes sure to cancel all (if any) outstanding c-ares requests.
Daniel Stenberg [Tue, 21 Feb 2006 07:46:41 +0000 (07:46 +0000)]
Peter Su added support for SOCKS4 proxies. Enable this by setting the proxy
type to the already provided type CURLPROXY_SOCKS4.
I added a --socks4 option that works like the current --socks5 option but
instead use the socks4 protocol.
Daniel Stenberg [Sat, 18 Feb 2006 22:27:01 +0000 (22:27 +0000)]
Ulf Härnhammar fixed a format string (printf style) problem in the Negotiate
code. It should however not be the cause of any troubles. He also fixed a
few similar problems in the HTTP test server code.
Daniel Stenberg [Thu, 16 Feb 2006 23:42:32 +0000 (23:42 +0000)]
Shmulik Regev provided a fix for the DNS cache when using short life times,
as previously it could be holding on to old cached entries longer than
requested.
Daniel Stenberg [Wed, 15 Feb 2006 09:36:39 +0000 (09:36 +0000)]
32. (At least on Windows) If libcurl is built with c-ares and there's no DNS
server configured in the system, the ares_init() call fails and thus
curl_easy_init() fails as well. This causes weird effects for people who use
numerical IP addresses only.
Daniel Stenberg [Sat, 11 Feb 2006 22:35:16 +0000 (22:35 +0000)]
Karl M added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options that
an app can use to let libcurl only connect to a remote host and then extract
the socket from libcurl. libcurl will then not attempt to do any transfer at
all after the connect is done.
Daniel Stenberg [Tue, 7 Feb 2006 23:09:04 +0000 (23:09 +0000)]
Philippe Vaucher provided a brilliant piece of test code that show a problem
with re-used FTP connections. If the second request on the same connection was
set not to fetch a "body", libcurl could get confused and consider it an
attempt to use a dead connection and would go acting mighty strange.
Daniel Stenberg [Mon, 30 Jan 2006 08:24:07 +0000 (08:24 +0000)]
Added CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE to libcurl. Set with the
curl tool with --local-port. Plain and simply set the range of ports to bind
the local end of connections to. Implemented on to popular demand.
Not extensively tested. Please let me know how it works.
Daniel Stenberg [Mon, 30 Jan 2006 08:20:52 +0000 (08:20 +0000)]
Based on an error report by Philippe Vaucher, we no longer count a retried
connection setup as a follow-redirect. It turns out 1) this fails when a FTP
connection is re-setup and 2) it does make the max-redirs counter behave
wrong. This fix was not verified since the reporter vanished, but I believe
this is the right fix nonetheless.
Daniel Stenberg [Sat, 28 Jan 2006 13:14:38 +0000 (13:14 +0000)]
we should fix the system includes in the public headers to be based on checks
of the system instead of depending on what particular systems we think need
various headers
Daniel Stenberg [Tue, 24 Jan 2006 14:40:43 +0000 (14:40 +0000)]
Michal Marek provided a patch for FTP that makes libcurl continue to try PASV
even after EPSV returned a positive response code, if libcurl failed to
connect to the port number the EPSV response said. Obviously some people are
going through protocol-sensitive firewalls (or similar) that don't understand
EPSV and then they don't allow the second connection unless PASV was
used. This also called for a minor fix of test case 238.
Daniel Stenberg [Thu, 19 Jan 2006 23:52:03 +0000 (23:52 +0000)]
Duane Cathey was one of our friends who reported that curl -P [IP]
(CURLOPT_FTPPORT) didn't work for ipv6-enabed curls if the IP wasn't a
"native" IP while it works fine for ipv6-disabled builds!
In the process of fixing this, I removed the support for LPRT since I can't
think of many reasons to keep doing it and asking on the mailing list didn't
reveal anyone else that could either. The code that sends EPRT and PORT is
now also a lot simpler than before (IMHO).
Daniel Stenberg [Tue, 17 Jan 2006 17:39:39 +0000 (17:39 +0000)]
David Shaw: Here is the latest libcurl.m4 autoconf tests. It is updated with
the latest features and protocols that libcurl supports and has a minor fix to
better deal with the obscure case where someone has more than one libcurl
installed at the same time.
Daniel Stenberg [Mon, 16 Jan 2006 22:14:37 +0000 (22:14 +0000)]
David Shaw finally removed all traces of Gopher and we are now officially
not supporting it. It hasn't been functioning for years anyway, so this is
just finally stating what already was true. And a cleanup at the same time.
Daniel Stenberg [Sun, 15 Jan 2006 23:55:53 +0000 (23:55 +0000)]
Bryan Henderson turned the 'initialized' variable for curl_global_init()
into a counter, and thus you can now do multiple curl_global_init() and you
are then supposed to do the same amount of calls to curl_global_cleanup().
Bryan also updated the docs accordingly.
Daniel Stenberg [Tue, 10 Jan 2006 23:03:22 +0000 (23:03 +0000)]
When using a bad path over FTP, as in when libcurl couldn't CWD into all
given subdirs, libcurl would still "remember" the full path as if it is the
current directory libcurl is in so that the next curl_easy_perform() would
get really confused if it tried the same path again - as it would not issue
any CWD commands at all, assuming it is already in the "proper" dir.
Starting now, a failed CWD command sets a flag that prevents the path to be
"remembered" after returning.