Curl and libcurl 7.21.3

 Public curl releases:         119
 Command line options:         143
 curl_easy_setopt() options:   185
 Public functions in libcurl:  58
 Known libcurl bindings:       39
 Contributors:                 827

This release includes the following changes:

 o Added --noconfigure switch to testcurl.pl
 o Added --xattr option
 o Added CURLOPT_RESOLVE and --resolve
 o Added CURLAUTH_ONLY
 o Added version-check.pl to the examples dir

This release includes the following bugfixes:

 o check for libcurl features for some command line options
 o Curl_setopt: disallow CURLOPT_USE_SSL without SSL support
 o http_chunks: remove debug output
 o URL-parsing: consider ? a divider
 o SSH: avoid using the libssh2_ prefix
 o SSH: use libssh2_session_handshake() to work on win64
 o ftp: prevent server from hanging on closed data connection when stopping
   a transfer before the end of the full transfer (ranges)
 o LDAP: detect non-binary attributes properly
 o ftp: treat server's response 421 as CURLE_OPERATION_TIMEDOUT
 o gnutls->handshake: improved timeout handling
 o security: Pass the right parameter to init
 o krb5: Use GSS_ERROR to check for error
 o TFTP: resend the correct data
 o configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected
 o GnuTLS: now detects socket errors on Windows
 o symbols-in-versions: updated en masse
 o added a couple examples that were missing from the tar ball
 o Curl_send/recv_plain: return errno on failure
 o Curl_wait_for_resolv (for c-ares): correct timeout
 o ossl_connect_common: detect connection re-use
 o configure: Prevent link errors with --librtmp
 o openldap: use remote port in URL passed to ldap_init_fd()
 o url: provide dead_connection flag in Curl_handler::disconnect
 o lots of compiler warning fixes
 o ssh: fix a download resume point calculation
 o fix getinfo CURLINFO_LOCAL* for reused connections
 o multi: the returned running handles conuter could turn negative
 o multi: only ever consider pipelining for connections doing HTTP(S)

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (http://curl.haxx.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

 Dan Fandrich, Guenter Knauf, Pat Ray, Hongli Lai, Kamil Dudka,
 Stefan Tomanek, Alfred Gebert, Yang Tse, Julien Chaffraix, Adam Light,
 Rutger Hofman, Matthias Bolte, Heinrich Ko, Dmitri Shubin

        Thanks! (and sorry if I forgot to mention someone)
