Version 0.14.1 released 4-September-05

    * New configure options:

        * ingnorecontentlength: Ignore the Content-Length header. This is
          useful for Apache 1.x (and similar servers) which will report
          incorrect content length for files over 2 gigabytes.

        * cookielist: Pass a string with a cookie. The cookie can be
          either in Netscape / Mozilla format or just regular HTTP-style
          header (Set-Cookie: ...) format.

          '$curlHandle getinfo cookielist' will return a list of all
          cookies TclCurl knows (expired ones, too).

        * When posting data, you can use the new 'filecontent' option to
          read a file and use its contents as data.

    * Bug fix: The code to post data was filled with memory leaks, I hope
      I have fixed them all.

Version 0.14.0 released 3-June-05

    * BEHAVIOUR CHANGE: To set the version SSL/TLS to use with
      '-sslversion' you can know use the values:

        * default
            The default action. When libcurl built with OpenSSL, this will
            attempt to figure out the remote SSL protocol version.
            Unfortunately there are a lot of ancient and broken servers in
            use which cannot handle this technique and will fail to
            connect. When libcurl is built with GnuTLS, this will mean SSLv3. 

        * tlsv1
            Force TLSv1

        * sslv2
            Force SSLv2

        * sslv3
            Force SSLv3

    * Bug fix: A report by Melissa Millard made me realise that the
      options 'httpauth', 'proxyauth', 'ipresolve', 'ftpssl' and
      'ftpsslauth' have, probably, never worked. They should now.

    * I updated 'configure.in' and 'Makefile.in' to the latest versions
      in Tcl's sample extension, unfortunately that's likely to introduce
      some bugs, so, please, report any problems.

Version 0.13.2 released 16-April-05

    * New features:

        * New configure options:

             * ftpaccount: When an FTP server asks for "account data"
               after user name and password has been provided.

             * sourceurl: When set, it enables a FTP third party transfer.

             * sourcequote: Exactly like '-quote', but for the source host.

        * The following options are now obsolete 'sourcehost', 'sourcepath',
          'sourceport' and 'pasvhost'.

        * curl::versioninfo will indicate if there is support for
          SSPI.

        * More information can be obtained using 'curl::getinfo':

              * numconnects: to get the number of new connections
                TclCurl had to create to achieve the previous transfer.

              * sslengines: returns a list of the OpenSSL crypto-engines
                supported.

              * httpconnectcode: returns the last received proxy
                response code to a CONNECT request

    * Bug fix:

        * Fixed the "-sourcepostquote" option.

        * Daniel A. Steffen fixed a bug with parallel builds.


Version 0.12.2 released 18-October-04

    * New features:

        * You can now share dns and cookie information among TclCurl
          handles, please check the docs for details.

        * New configure option: 'ftpsslauth', you may need this option
          because of servers like BSDFTPD-SSL from won't work properly
          when "AUTH SSL" is issued but require "AUTH TLS" instead.

        * Added three new commands to the 'curl' namespace:

            * curl::easystrerror   errorCode

            * curl::sharestrerror  errorCode

            * curl::multistrerror  errorCode

          All three will return a string explaining what the given error
          number means.

    * Bug fix:

        * Ralph Mitchell reported that the 'cookiejar' option wouldn't
          work in the latest version, it should now.

2004-10-06 Andres Garcia <fandom@retemail.es>

    * generic/tclcurl.h,
      generic/tclcurl.c,
      tests/strerror.tcl: Added the 'curl::easystrerror', 'curl::sharestrerror'
      and 'curl::multistrerror' commands.

2004-10-04 Andres Garcia <fandom@retemail.es>

    * generic/tclcurl.h,
      generic/tclcurl.c: Added support for CURLOPT_FTPSSLAUTH.


Version 0.12.1 released 30-September-04

    * New features:

        * Third party ftp support, you can now transfer a file between
          two different ftp servers. Check the 'ftp options' in the docs
          page for details.

        * A new command for curl handles 'reset' which re-initializes all
          options previously set on a specified handle to the default values.

          This puts back the handle to the same state as it was in when it
          was just created with curl::init.

          It does not change the following information kept in the handle:
          live connections, the Session ID cache, the DNS cache, the cookies
          and shares.

        * Hooked the multi interface to Tcl's event loop, so you can have
          fire-and-forget transfers:

                set multiHandle [curl::multiinit]
                set easyHandle  [curl::init]

                $easyHandle  configure -file home.tar.gz                  \
                        -url http://127.0.0.1/~andres/HomePage.tar.gz

                $multiHandle addhandle $easyHandle
                $multiHandle auto -command "CleanUp $multiHandle $easyHandle"

          This support is experimental, so any comments are welcome.

          Thanks to Eric Boudaillier who answered my question about how to
          do it.

        * New ssl data types have been added to 'debugproc'.

        * In case of error when setting post data, the error will include a
          code about the nature of the error.

    * Bug fix:

        * The 'autoreferer' option should now work.

Version 0.12.0 released 09-July-04

    * New configure options:

        * '-port': Pass the number specifying what remote port to connect to,
          instead of the one specified in the URL or the default port for the
          used protocol.

        * '-tcpnodelay': To specify whether the TCP_NODELAY option should be
           set or cleared.

           Setting this option will disable TCP's Nagle algorithm. The purpose
           of this algorithm is to try to minimize the number of small packets
           on the network.

        * '-autoreferer': When enabled, TclCurl will automatically set the
          'Referer:' field in requests where it follows a 'Location:' redirect.


    * Bug fix:

        * Thanks to Stefano Federici I noticed that the 'ftpssl' option didn't
          work.


Version 0.11.0 released 04-febrary-04


    * New configure options:

        * 'ftpssl': You can use ftps:// URLs to explicitly switch on SSL/TSL
          for the control connection and the data connection.

          Alternatively you can set this option to one of these values:

              * 'nope': Do not attempt to use SSL

              * 'try': Try using SSL, proceed anyway otherwise.

              * 'control': Use SSL for the control conecction or fail.

              * 'all': Use SSL for all communication or fail.

        * 'netrcfile': Pass a string containing the full path name to the
          file you want to use as .netrc file. For the option to work, you
          have to set the 'netrc' option to 'required'. If this option is
          omitted, and 'netrc' is set, TclCurl will attempt to find the a
          .netrc file in the current user's home directory.

    * Bug fix: Fixed the 'netrc' option.


Version 0.10.8 released 29-december-03

    * New 'configure' options:

      * 'ftpresponsetimeout': Causes TclCurl to set a timeout period
        on the amount of time that the server is allowed to take in
        order to generate a response message for a command before the
        session is considered hung.

      * 'ipresolve': Allows an application to select what kind of
        IP addresses to use when resolving host names. This is only
        interesting when using host names that resolve addresses
        using more than one version of IP.

      * 'maxfilesize': Allows you to specify the maximum size
        of a file to download.

    * New 'getinfo' options:

      * 'httpauthavail': Returns a list with the authentication method(s)
        available.

      * 'proxyauthavail': Returns a list with the authentication method(s)
        available for your proxy athentication.

    * Misc:

      * 'curl::versioninfo' will now say if there is support for
        asynchronus DNS and SPNEGO.

      * The 'httpcode' for 'getinfo' is now called 'responsecode'
        since it will now work with FTP transfers. The old option
        name, while deprecated, will continue to work.

    * Bug fixes:

      * TclCurl still thought it was in version 0.10.4.

      * Fixed the 'httpauth' option.

      * The configure scripts would sometimes use the cURL in
        '/usr/bin' instead of the one in '/usr/local/bin' despite
        the '--with-curlprefix' tag.


Version 0.10.7 released 03-September-03

  * New configure options:

    * 'ftpcreatemissingdirs': If set to non-zero, TclCurl
      will attempt to create any remote directory that it
      fails to CWD into. CWD is the command that changes
      working directory.

    * 'httpauth': Set to the authentication method you want,
      the available ones are:

        * 'basic': HTTP Basic authentication. This is the
          default choice, and the only method that is in
          widespread use and supported virtually everywhere.
          It sends the user name and password over the network
          in plain text, easily captured by others.

        * 'digest': HTTP Digest authentication. Digest
           authentication is a more secure way to do
           authentication over public networks than the
           regular old-fashioned Basic method.

        * 'gssnegotiate': HTTP GSS-Negotiate authentication.
           The GSS-Negotiate method was designed by Microsoft
           and is used in their web aplications. It is primarily
           meant as a support for Kerberos5 authentication
           but may be also used along with another authenti-
           cation methods.

        * 'ntlm': HTTP NTLM authentication. A proprietary
          protocol invented and used by Microsoft.

        * 'any':TclCurl will automaticaly select the one it
          finds most secure.

        * 'anysafe': It may use anything but basic, TclCurl
          will automaticly select the one it finds most secure.


    * 'command': Executes a Tcl command after the transfer
      is done. So far it only works in blocking transfers
      which is pretty much useless.


Version 0.10.5 released 21-May-03

  * New configure option:

    * 'ftpuseeptr': Set to non-zero, to tell TclCurl to use the EPRT
      (and LPRT) command when doing active FTP downloads (which is
      enabled by 'ftpport'). Using EPRT means that it will first attempt
      to use EPRT and then LPRT before using PORT, if you pass zero to
      this option, it will not try using EPRT or LPRT, only plain PORT

  * Bug fixes:

    * The multi handles couldn't store the data of more than two
     easy handles.

    * Using the 'progressproc' option in Windows would crash Tcl.

    * The '$multiHandle active' command wasn't returning anything.

  * Misc:

    * Updated ssl in Windows binaries to version 0.9.7b.

    * Changed the way the http reponse header is dealt with in
     the 'headervar' option. Now the whole header is put into
     foo(http).

     ************** POTENTIAL INCOMPATIBILITY **************


Version 0.10.4 released 31-March-03

  * New features:

    * Added 'getinfo' features to the 'curl::transfer' command.

     You can now do things like:

       curl::transfer -url http://www.curl.com   \
           -infohttpcode   httpCode              \
           -infocontenttype contentType          \

       puts "Http code: $httpCode"
       puts "Content type: $contentType"

    * New configure option: -unrestrictedauth, a non-zero parameter
      tells the extension it can continue to send authentication
      (user+password) when following locations, even when hostname
      changed. Note that this is meaningful only when setting
      -followlocation

    * The makefile now has an 'uninstall' target.

    * The Windows packages are now zlib enabled.

    * Added a 'packages' directory with a makefile to create the
      Windows packages and the spec file for rpm.

  * Bug fix:

    * The configure script will no longer choke with the version
      string of cURL's prereleases.

  * Misc

    * If there is an error, the 'curl::transfer' command will now
      return the code of the error, without the 'Couldn't perform
      transfer' message.

     ************** POTENTIAL INCOMPATIBILITY **************

    * So that they have the same name in Windows and Linux, I have
      changed the name of the certificate file in Windows to
      'curl-ca-bundle.crt' and it will placed in the 'Windows'
      directory.

     ************** POTENTIAL INCOMPATIBILITY **************

    * Alex Khassin suggested using fully qualified in 'tclcurl.tcl'
      names to prevent problems with namespaces.


Version 0.10.3 released 30-January-03

  * New configure option:

    * 'http200alieases': To pass a list of aliases to be treated as valid
       HTTP 200 responses.

  * Bug fixes:

    * When using '-headervar' in Windows you could end up with carriage
      returns in the name of the header.

    * Julian let me know that TclCurl would crash when used in a thread
      enabled Tcl.

  * Enhancements:

    * Since compiling TclCurl in Windows is a real pain, I will provide
      more packages for it, thread and ssl enabled.

    * Alex Khassin has written instructions on how to get TclCurl to work
      with AOLSever.


Version 0.10.1 released 14-October-02

  * New configure options:

    * 'proxytype': Allows you to set type of the proxy. Available options
      are 'http' and 'socks5', with the HTTP one being default.

    * 'encoding': TclCurl can now request compressed contents using the
      'deflate' method.

    * 'buffersize': To set prefered size for the receive buffer in TclCurl,
      so that the write callback is called more often with smaller chunks.

    * 'nosignal': Tells TclCurl not use any functions that install signal
      handlers or any functions that cause signals to be sent to the process.

  * New command:

    * 'curl::versioninfo': Returns information about various run-time
      features in TclCurl.

  * Bug fixes:

    * Fixed to 'buffer' option to post data.

    * Asif Haswarey reported that '--with-curlinclude' wouldn't work.

    * The multi interface examples suddenly stopped working, they
      should now.


Version 0.9.8 released 25-June-02

  * Support for libcurl's multi interface, the main features are:

    * Enable a "pull" interface. The application that uses TclCurl
      decides where and when to get/send data.

    * Enable multiple simultaneous transfers in the same thread
      without making it complicated for the application.

    * Keep Tk GUIs 'alive' while transfers are taking place.


  * New 'httppost' options

    * 'bufferName' and 'buffer', the contents of buffer will be sent
       to the server as if they were a file whose name is in bufferName,
       please check the 'httpBufferPost.tcl' example.

  * New 'getinfo' options

    * redirectime: Returns the total time, in seconds, it took for all
      redirection steps including name lookup, connect, pretransfer and
      transfer before the final transaction was started, it returns the
      complete execution time for multiple redirections.

    * redirectcount: Returns the total number of redirections that were
      actually followed.

Version 0.9.6 released 30-April-02

  * New configure options:

    * dnscachetimeout, to set the timeout in seconds for keeping the name resolves
      in memory.

    * dnsuseglobalcache, if set to '1' the DNS cache will be shared among
      curl handles.

    * debugproc, to set a procedure that will receive the debug data
      produced by the 'verbose' option.


  * Jonathan Matthew found and fixed a seg fault when you used
    the 'httpheader' option twice with the same handle.


  * The configure scripts saw more work in this release:

    * I merged the latest changes to the TEA sample extension by
      Jeff Hobbs.

    * Suresh K. Sastry found and fixed an incompatibility with Solaris.

    * And I hope I have not forgotten any 'DESTDIR' this time.


Version 0.9.5 released 01-April-2002

  * I have adapted the configure scripts to the new TEA scripts released by
    Jeff Hobbs, for example, now it will compile 'out of the box' for freeBSD
    systems (well, you may need to use '--with-curlprefix' and 'with-curlinclude')

  * New configure option:

    * prequote: use it to pass a list of ftp commands to execute *just before*
      the transfer.

  * New getinfo option:

    * contenttype: if the servers bothers to tell you, this will return the type
      of the downloadad object.

  * Bug fix: 'curl::transfer' will return '0' if the transfer was successful.
                     *** POTENTIAL INCOMPATIBILITY ***


Version 0.9.3 released 29-Jan-2002

  * Bug fix: There should no more seg faults because of trailing options
    in configure commands.

  * Bug fix: Binary transfer weren't done right in Windows, thanks to
    Peter Waltenberg and Darren Blee for the report.

  * TclCurl now supports OpenSSL engines, which allow you to keep your private
    key stored in external hardware.

        In order to manage this there are a few new configure options:

            * sslcerttype: Set SSL cert type (PEM/DER).

            * sslkey: Set SSL private key (file).

            * sslkeytype: Set SSL key type (PEM/DER/ENG).

            * sslkeypasswd: Set the passphrase for your private key.

            * sslengine: Set the name of the crypto engine.

            * sslenginedefault: Set the default engine.

  * You can now add a set of headers for a particular part in a
    multipart/form-post using the 'contentheader' option.

  * It is now possible to execute commands in ftp servers without
    transfering files, you have to set 'nobody' to '1' and 'header' to
    '0'.

Version 0.9.2 released 10-Dec-2001

  * A port to Windows, using Mingw over a Cygwin environment.

  * The 'perform' command now returns the exit code form 'curl_easy_perform'

  * New configure option:

    * ftpuseepvs: Set to one to tell TclCurl to use the EPSV command when
      doing passive FTP downloads (which is always does by default). Using
      EPSV means that it will first attempt to use EPSV before using PASV,
      but if you pass a zero to this option, it will not try using EPSV,
      only plain PASV.

  * Changed configure option:

    * httpversion: Set to one of the values decribed below, they force TclCurl
      to use the specific http versions. It should only be used if you really
      MUST do that because of a silly remote server.

        * none: We don't care about what version the library uses.
          TclCurl will use whatever it thinks fit.

        * 1.0: Enforce HTTP 1.0 requests.

        * 1.1: Enforce HTTP 1.1 requests.

   * The 'configure' command will now also return the value given for the invalid option.

Version 0.9 released 05-Nov-2001

   * New command: 'curlHandle duphandle', returns a new curl handle
     that duplicates the original one.

   * New configure options:

     * cookiejar: Pass a file name in which TclCurl will dump all
       internally known cookies when 'cleanup' is called. If no
       cookies are known, no file will be created. Specify "-" to
       have the cookies written to stdout.

    * sslcipherlist: Pass a string holding the list of ciphers to
      use for the SSL connection. The list must be syntactly correct,
      it consists of one or more cipher strings separated by colons.
      Commas or spaces are also acceptable separators but colons are
      normally used, , - and + can be used as operators. Valid
      examples of cipher lists include 'RC4-SHA', 'SHA1+DES', 'TLSv1'
      and 'DEFAULT'. The default list is normally set when you compile
      OpenSSL.

      You will find more details about cipher lists on this URL:
      http://www.openssl.org/docs/apps/ciphers.html

    * httpversion: Use this options to request TclCurl to use 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.

  * Changed configure options:

    * The 'http' option to set the data for a POST, has now a different
      syntax, check the docs for details. ** POTENCIAL INCOMPATIBILITY **

    * The 'failonerror' option, no longer returns an error if the HTTP
      return code is below 400. ** POTENCIAL INCOMPATIBILITY **

    * Changed the options to the 'timecondition' configure option to lower
      case. ** POTENCIAL INCOMPATIBILITY **

    * Changed the options to the 'closepolicy' configure option to lower
      case. ** POTENCIAL INCOMPATIBILITY **

  * Misc

    * The makefile will now change 'init.tcl' so that the directory where
      TclCurl is going to be installed will be included in the 'auto_path'
      variable.

    * libcurl, and therefore TclCurl too, now closes connections that
      report transfer failures.


Version 0.8.0 released

  * New command: 'curl::transfer' it takes the same arguments as
   'curl::configure' and takes care of all the transfer details,
    so, for example, instead of doing:

      set curlHandle [curl::init]
      $curlHandle configure -url http://curl.haxx.se -file index.html
      $curlHandle perform
      $curlHandle cleanup

    You can now simply do:

      curl::transfer -url http://curl.haxx.se -file index.html

    This command is limited as you can't use it if you want persistant
    connetions and you can't use the 'getinfo' command with the
    transfer.


  * New configure options:

    * writeproc
        Use it to set a Tcl procedure that will be invoked by
        TclCurl as soon as there is received data that needs
        to be written down.

    * readproc
        Sets a Tcl procedure to be called by TclCurl as soon as
        it needs to read data in order to send it to the peer.

    * httpget
        If set to non-zero forces the HTTP request to get back
        to GET. Only really usable if POST, PUT or a custom request
        have been used previously with the same curl handle.
    * sslverifyhost
        Set to non-zero if we should verify the Common name from the
        peer certificate in the SSL handshake, set 1 to check
        existence, 2 to ensure that it matches the provided hostname.

  * Bug fix:

    * Using TclCurl to upload a file should not cause any more seg faults.


  * INCOMPATIBILITIES WITH OTHER VERSIONS

    * The options to the 'curl::configure' and 'getinfo' commands are now all
     lowercase as usual in Tcl commands.


Version 0.7.0 released

  * Added the option '-vernum' to 'curl::curlConfig' it returns
    version information about the installed libcurl.

  * By default 'noProgress' will be set to '1'.

            *** POTENTIAL INCOMPATIBILITY ***
    Your scripts may not behave the same

  * The 'mute' option no longer does anything.

            *** POTENTIAL INCOMPATIBILITY ***
    Your scripts may not behave the same

  * Fixed the bug by which TclCurl would return two many possible options
    after using a wrong one.

  * Created the 'configure' command.

            *** POTENTIAL INCOMPATIBILITY ***
    Even though the 'setopt' command will be supported indefinintely, some
    of the options, the ones that needed lists as parameters like HTTPPOST
    or QUOTE have changed, please look up the tests cases to for an example.

  * TclCurl will no longer install the 'tclcurl.h' file.

  * It is now possible to remove the CURLOPT_FILE, CURLOPT_INFILE and
    CURLOPT_STDERR options between transfers in a persistant connection.


Version 0.6.1 released.

  * Trying to set a HTTPPOST would provoke a seg fault.

  * Prevented segfault when saving to a file without the right permissions or
    reading for a file that does not exists.

  * Added the CURLOPT_CANCELTRANSVAR option.

  * Added the CURLOPT_PROGRESSPROC option.

  * Added the CURLOPT_BODYVAR option to put the body of a request into
    a Tcl variable.

  * Added support for the 'CURLOPT_HEADERFUNCTION' option
    through 'CURLOPT_HEADERVAR'.

  * tclcurl.tcl: Created this file to host the curl::curlConfig procedure.

  * tests/getinfo.tcl: Added the option CURLOPT_FILETIME so
    CURLINFO_FILETIME would work.


First release 0.5

