3 Version 7.19.0 released 1-Sep-2008
7 * curlHandle pause and curlHandle resume: Pause and resume a
8 tranfer from within a progress callback procedure.
10 * New configure options:
12 * addressscope: Pass a number specifying the scope_id value to
13 use when connecting to IPv6 link-local or site-local addresses.
15 * proxytranfermode: Pass a number. If the value is set to 1 (one),
16 it tells TclCurl to set the transfer mode (binary or ASCII) for
17 FTP transfers done via an HTTP proxy, by appending ;type=a or
18 ;type=i to the URL. Without this setting, or if set to 0 (zero,
19 the default), '-tranfertext' has no effect when doing FTP via a
20 proxy. Beware that not all proxies support this feature.
22 * Added two new types for the '-proxytype' option: 'socks4a'
25 * New info available through the 'getinfo' command:
27 * appconnecttime: Returns the time, in seconds, it took from the start
28 until the SSL/SSH connect/handshake to the remote host was completed.
30 * primaryip: Returns the IP address of the most recent connection done
33 * redirecturl: Returns the URL a redirect would take you to if you would
34 enable 'followlocation'. This can come very handy if you think using
35 the built-in redirect logic isn't good enough for you but you would
36 still prefer to avoid implementing all the magic of figuring out the
39 * Bug fix: The 'writeproc' option didn't work right.
44 * When compìling against Tcl 8.5.3 I had to remove a lot of CONSTs to
45 prevent warnings, and then I had to add them back with Tcl 8.5.4,
46 so, depending on which version you use you might get quite a few
47 warnings while compiling, they should be harmless though.
49 * The internal workings of the 'any' http authentication has been changed.
51 2008-08-25 Andres Garcia <fandom@telefonica.net>
54 generic/tclcurl.c: Changed the 'anyauth rewind' to use the new
55 CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA.
57 Version 7.17.1 released 1-Nov-2007
59 * New configure options:
61 * post301: A non-zero parameter tells TclCurl to respect
62 RFC 2616/10.3.2 and not convert POST requests into GET
63 requests when following a 301 redirection like browsers
66 * sshhostpublickeymd5: Pass a string containing 32 hexadecimal
67 digits. The string should be the 128 bit MD5 cheksum of the
68 remote host public key, and TclCurl will reject the connection
69 to the host unless the md5sums match.
71 * If you pass the magic string 'FLUSH' to the '-cookielist'
72 option all known cookies will be written to the file
73 specified by '-cookiejar'.
77 Some configure options have been renamed so they get more general
78 names, the old names are deprecated even if they may be supported
81 * sslpasswd => keypasswd
83 * ftplistonly => dirlistonly
88 Up until the current version when we wanted libcurl to use a value
89 in a string, like the URL to download, we had to keep the string as
90 long as libcurl could use it. Since 7.17.0 libcurl keeps it own
91 copies, so I no longer make TclCurl do it.
93 That means this is a handle-with-care release, please report any
94 problems you may have.
97 Version 7.16.4 released 19-July-07
99 * New configure options:
101 * newfileperms: Used to set the permissions, defalt 0664, that will be
102 assigned to newly created files on the remote server.
104 * newdirectoryperms: Used to set the permissions, default 0755, that
105 will be assigned to newly created directories on the remote server.
107 They can both be used for SFTP, SCP and FILE transfers.
109 * Changed option: The option to set the Kerberos security
110 level for FTP is now called 'krblevel', the old name
111 'krb4level' will be kept for some time for compatibility.
113 * New option for multi handles:
115 * maxconnects: Sets the maximum amount of simultaneously open
116 connections that TclCurl may cache. Default is 10.
118 * Bug fix: Sven Hoexter fixed a couple of errors in the man page.
120 Version 7.16.2 released 16-April-07
122 * New feature: TclCurl now supports SSH for SFTP and SCP transfers as long
123 as libcurl has been compiled with libssh2 support.
125 * New configure options:
127 * publickeyfile: name of the file with the public key to use with SSH.
129 * privatekeyfile: name of the file with the provate key to use with SSH.
131 * sshauthtypes: Allowed types are "publickey", "password", "host",
132 "keyboard", or "any" to let TclCurl choose one.
134 * timeoutms and connectimeoutms: The work like 'timeout' and
135 'connectimeout' except the timout is given in miliseconds.
137 * ftpsslccc: If enabled, it will make libcurl shutdown SSL/TLS after
138 the authentication is done on a FTP-SSL operation.
140 * httpcontentdecoding: If set to zero content decoding is disabled.
142 * httptransferdecoding: If set to zero Set transfer decoding is
143 disabled. TclCurl does chunked transfer decoding by default
144 unless this option is set to zero.
146 * ftpsslccc: If enabled, it will make libcurl shutdown SSL/TLS after
147 the authentication is done on a FTP-SSL operation.
151 * Olivier Lenormand reported that in case the server sends more than
152 one 'Set-Cookie' header, TclCurl would only save the last one in
153 the header array. Now the array will contain a list with all the
156 * Jos Decoster reported and helped fixing a crash that happened when
157 changing a handle from using a 'writeproc' to not using one.
159 * I have updated the configure scripts to TEA 3.6, hope you don't bump into
162 Version 7.16.0 released 15-November-06
164 * Removed feature: TclCurl no longer supports third party FTP transfers.
166 * New configure options:
168 * ftpalternativetouser: Pass a string which will be used to authenticate
169 if the usual FTP "USER user" and "PASS password" negotiation fails. This
170 is currently only known to be required when connecting to Tumbleweed's
171 Secure Transport FTPS server using client certificates for
174 * ftpentrypath: Returns a string holding the path of the entry path.
175 That is the initial path TclCurl ended up in when logging on to the
176 remote FTP server. Returns an empty string if something is wrong.
178 * maxsendspeed: Pass a speed in bytes per seconds. If an upload exceeds this
179 speed on cumulative average during the transfer, the transfer will pause to
180 keep the average rate less than or equal to the parameter value.
182 * maxrecvspeed: Pass a speed in bytes per second. If a download exceeds this
183 speed on cumulative average during the transfer, the transfer will pause to
184 keep the average rate less than or equal to the parameter value.
186 * New command for multi handles 'configure', so far the is only one option to set:
188 * pipelining: Pass a 1 to enable or 0 to disable. Enabling pipelining on a multi
189 handle will make it attempt to perform HTTP Pipelining as far as possible for
190 transfers using this handle. This means that if you add a second request that
191 can use an already existing connection, the second request will be "piped" on
192 the same connection rather than being executed in parallel.
194 Version 0.15.3 released 17-April-06
196 * I updated the autoconf scripts to TEA 3.5, this seems to prevent
197 the warnings about how the headers files couldn't be compiled,
198 but it may have (re)introduced other bugs.
200 * Removed feature: TclCurl no longer supports Gopher, it probably
203 * New configure options:
205 * localport: Sets the local port number of the socket used for
206 the connection. This can be used in combination with '-interface'
207 and you are recommended to use 'localportrange' as well when this
210 * localportrange: Number of attempts TclCurl should do to find a
211 working local port number. It starts with the given 'localport'
212 and adds one to the number for each retry.
214 Version 0.15.1 released 10-January-06
216 * New configure options:
218 * ftpskippasvip: If set to a non-zero value, it instructs TclCurl
219 not to use the IP address the server suggests in its 227-response
220 to TclCurl's PASV command when TclCurl connects the data connection.
221 Instead TclCurl will re-use the same IP address it already uses for
222 the control connection. But it will use the port number from the
225 * ftpfilemethod: It allows three values:
227 * multicwd: the default, TclCurl will do a single CWD operation
228 for each path part in the given URL. For deep hierarchies this
229 means very many commands. This is how RFC1738 says it should
232 * nocwd: no CWD at all is done, TclCurl will do SIZE, RETR, STOR
233 etc and give a full path to the server.
235 * singlecwd: make one CWD with the full target directory and then
236 operate on the file "normally".
238 The support for this options is still experimental, comments whether
239 the methods work or don't with different methods are welcome.
241 Likewise, the options, or their names, may change in future releases,
242 so they are not yet documented elsewhere.
244 * Bug fix: The Windows packages had defective 'doc' directories. Thanks to
245 Alex Hisen for letting me know.
247 Version 0.14.1 released 4-September-05
249 * New configure options:
251 * ingnorecontentlength: Ignore the Content-Length header. This is
252 useful for Apache 1.x (and similar servers) which will report
253 incorrect content length for files over 2 gigabytes.
255 * cookielist: Pass a string with a cookie. The cookie can be
256 either in Netscape / Mozilla format or just regular HTTP-style
257 header (Set-Cookie: ...) format.
259 '$curlHandle getinfo cookielist' will return a list of all
260 cookies TclCurl knows (expired ones, too).
262 * When posting data, you can use the new 'filecontent' option to
263 read a file and use its contents as data.
265 * Bug fix: The code to post data was filled with memory leaks, I hope
266 I have fixed them all.
268 Version 0.14.0 released 3-June-05
270 * BEHAVIOUR CHANGE: To set the version SSL/TLS to use with
271 '-sslversion' you can know use the values:
274 The default action. When libcurl built with OpenSSL, this will
275 attempt to figure out the remote SSL protocol version.
276 Unfortunately there are a lot of ancient and broken servers in
277 use which cannot handle this technique and will fail to
278 connect. When libcurl is built with GnuTLS, this will mean SSLv3.
289 * Bug fix: A report by Melissa Millard made me realize that the
290 options 'httpauth', 'proxyauth', 'ipresolve', 'ftpssl' and
291 'ftpsslauth' have, probably, never worked. They should now.
293 * I updated 'configure.in' and 'Makefile.in' to the latest versions
294 in Tcl's sample extension, unfortunately that's likely to introduce
295 some bugs, so, please, report any problems.
297 Version 0.13.2 released 16-April-05
301 * New configure options:
303 * ftpaccount: When an FTP server asks for "account data"
304 after user name and password has been provided.
306 * sourceurl: When set, it enables a FTP third party transfer.
308 * sourcequote: Exactly like '-quote', but for the source host.
310 * The following options are now obsolete 'sourcehost', 'sourcepath',
311 'sourceport' and 'pasvhost'.
313 * curl::versioninfo will indicate if there is support for
316 * More information can be obtained using 'curl::getinfo':
318 * numconnects: to get the number of new connections
319 TclCurl had to create to achieve the previous transfer.
321 * sslengines: returns a list of the OpenSSL crypto-engines
324 * httpconnectcode: returns the last received proxy
325 response code to a CONNECT request
329 * Fixed the "-sourcepostquote" option.
331 * Daniel A. Steffen fixed a bug with parallel builds.
333 Version 0.12.2 released 18-October-04
337 * You can now share dns and cookie information among TclCurl
338 handles, please check the docs for details.
340 * New configure option: 'ftpsslauth', you may need this option
341 because of servers like BSDFTPD-SSL from won't work properly
342 when "AUTH SSL" is issued but require "AUTH TLS" instead.
344 * Added three new commands to the 'curl' namespace:
346 * curl::easystrerror errorCode
348 * curl::sharestrerror errorCode
350 * curl::multistrerror errorCode
352 All three will return a string explaining what the given error
357 * Ralph Mitchell reported that the 'cookiejar' option wouldn't
358 work in the latest version, it should now.
360 Version 0.12.1 released 30-September-04
364 * Third party ftp support, you can now transfer a file between
365 two different ftp servers. Check the 'ftp options' in the docs
368 * A new command for curl handles 'reset' which re-initializes all
369 options previously set on a specified handle to the default values.
371 This puts back the handle to the same state as it was in when it
372 was just created with curl::init.
374 It does not change the following information kept in the handle:
375 live connections, the Session ID cache, the DNS cache, the cookies
378 * Hooked the multi interface to Tcl's event loop, so you can have
379 fire-and-forget transfers:
381 set multiHandle [curl::multiinit]
382 set easyHandle [curl::init]
384 $easyHandle configure -file home.tar.gz \
385 -url http://127.0.0.1/~andres/HomePage.tar.gz
387 $multiHandle addhandle $easyHandle
388 $multiHandle auto -command "CleanUp $multiHandle $easyHandle"
390 This support is experimental, so any comments are welcome.
392 Thanks to Eric Boudaillier who answered my question about how to
395 * New ssl data types have been added to 'debugproc'.
397 * In case of error when setting post data, the error will include a
398 code about the nature of the error.
402 * The 'autoreferer' option should now work.
404 Version 0.12.0 released 09-July-04
406 * New configure options:
408 * '-port': Pass the number specifying what remote port to connect to,
409 instead of the one specified in the URL or the default port for the
412 * '-tcpnodelay': To specify whether the TCP_NODELAY option should be
415 Setting this option will disable TCP's Nagle algorithm. The purpose
416 of this algorithm is to try to minimize the number of small packets
419 * '-autoreferer': When enabled, TclCurl will automatically set the
420 'Referer:' field in requests where it follows a 'Location:' redirect.
424 * Thanks to Stefano Federici I noticed that the 'ftpssl' option didn't
427 Version 0.11.0 released 04-febrary-04
430 * New configure options:
432 * 'ftpssl': You can use ftps:// URLs to explicitly switch on SSL/TSL
433 for the control connection and the data connection.
435 Alternatively you can set this option to one of these values:
437 * 'nope': Do not attempt to use SSL
439 * 'try': Try using SSL, proceed anyway otherwise.
441 * 'control': Use SSL for the control conecction or fail.
443 * 'all': Use SSL for all communication or fail.
445 * 'netrcfile': Pass a string containing the full path name to the
446 file you want to use as .netrc file. For the option to work, you
447 have to set the 'netrc' option to 'required'. If this option is
448 omitted, and 'netrc' is set, TclCurl will attempt to find the a
449 .netrc file in the current user's home directory.
451 * Bug fix: Fixed the 'netrc' option.
453 Version 0.10.8 released 29-december-03
455 * New 'configure' options:
457 * 'ftpresponsetimeout': Causes TclCurl to set a timeout period
458 on the amount of time that the server is allowed to take in
459 order to generate a response message for a command before the
460 session is considered hung.
462 * 'ipresolve': Allows an application to select what kind of
463 IP addresses to use when resolving host names. This is only
464 interesting when using host names that resolve addresses
465 using more than one version of IP.
467 * 'maxfilesize': Allows you to specify the maximum size
468 of a file to download.
470 * New 'getinfo' options:
472 * 'httpauthavail': Returns a list with the authentication method(s)
475 * 'proxyauthavail': Returns a list with the authentication method(s)
476 available for your proxy athentication.
480 * 'curl::versioninfo' will now say if there is support for
481 asynchronus DNS and SPNEGO.
483 * The 'httpcode' for 'getinfo' is now called 'responsecode'
484 since it will now work with FTP transfers. The old option
485 name, while deprecated, will continue to work.
489 * TclCurl still thought it was in version 0.10.4.
491 * Fixed the 'httpauth' option.
493 * The configure scripts would sometimes use the cURL in
494 '/usr/bin' instead of the one in '/usr/local/bin' despite
495 the '--with-curlprefix' tag.
497 Version 0.10.7 released 03-September-03
499 * New configure options:
501 * 'ftpcreatemissingdirs': If set to non-zero, TclCurl
502 will attempt to create any remote directory that it
503 fails to CWD into. CWD is the command that changes
506 * 'httpauth': Set to the authentication method you want,
507 the available ones are:
509 * 'basic': HTTP Basic authentication. This is the
510 default choice, and the only method that is in
511 widespread use and supported virtually everywhere.
512 It sends the user name and password over the network
513 in plain text, easily captured by others.
515 * 'digest': HTTP Digest authentication. Digest
516 authentication is a more secure way to do
517 authentication over public networks than the
518 regular old-fashioned Basic method.
520 * 'gssnegotiate': HTTP GSS-Negotiate authentication.
521 The GSS-Negotiate method was designed by Microsoft
522 and is used in their web aplications. It is primarily
523 meant as a support for Kerberos5 authentication
524 but may be also used along with another authenti-
527 * 'ntlm': HTTP NTLM authentication. A proprietary
528 protocol invented and used by Microsoft.
530 * 'any':TclCurl will automaticaly select the one it
533 * 'anysafe': It may use anything but basic, TclCurl
534 will automaticly select the one it finds most secure.
537 * 'command': Executes a Tcl command after the transfer
538 is done. So far it only works in blocking transfers
539 which is pretty much useless.
541 Version 0.10.5 released 21-May-03
543 * New configure option:
545 * 'ftpuseeptr': Set to non-zero, to tell TclCurl to use the EPRT
546 (and LPRT) command when doing active FTP downloads (which is
547 enabled by 'ftpport'). Using EPRT means that it will first attempt
548 to use EPRT and then LPRT before using PORT, if you pass zero to
549 this option, it will not try using EPRT or LPRT, only plain PORT
553 * The multi handles couldn't store the data of more than two
556 * Using the 'progressproc' option in Windows would crash Tcl.
558 * The '$multiHandle active' command wasn't returning anything.
562 * Updated ssl in Windows binaries to version 0.9.7b.
564 * Changed the way the http reponse header is dealt with in
565 the 'headervar' option. Now the whole header is put into
568 ************** POTENTIAL INCOMPATIBILITY **************
570 Version 0.10.4 released 31-March-03
574 * Added 'getinfo' features to the 'curl::transfer' command.
576 You can now do things like:
578 curl::transfer -url http://www.curl.com \
579 -infohttpcode httpCode \
580 -infocontenttype contentType \
582 puts "Http code: $httpCode"
583 puts "Content type: $contentType"
585 * New configure option: -unrestrictedauth, a non-zero parameter
586 tells the extension it can continue to send authentication
587 (user+password) when following locations, even when hostname
588 changed. Note that this is meaningful only when setting
591 * The makefile now has an 'uninstall' target.
593 * The Windows packages are now zlib enabled.
595 * Added a 'packages' directory with a makefile to create the
596 Windows packages and the spec file for rpm.
600 * The configure script will no longer choke with the version
601 string of cURL's prereleases.
605 * If there is an error, the 'curl::transfer' command will now
606 return the code of the error, without the 'Couldn't perform
609 ************** POTENTIAL INCOMPATIBILITY **************
611 * So that they have the same name in Windows and Linux, I have
612 changed the name of the certificate file in Windows to
613 'curl-ca-bundle.crt' and it will placed in the 'Windows'
616 ************** POTENTIAL INCOMPATIBILITY **************
618 * Alex Khassin suggested using fully qualified in 'tclcurl.tcl'
619 names to prevent problems with namespaces.
621 Version 0.10.3 released 30-January-03
623 * New configure option:
625 * 'http200alieases': To pass a list of aliases to be treated as valid
630 * When using '-headervar' in Windows you could end up with carriage
631 returns in the name of the header.
633 * Julian let me know that TclCurl would crash when used in a thread
638 * Since compiling TclCurl in Windows is a real pain, I will provide
639 more packages for it, thread and ssl enabled.
641 * Alex Khassin has written instructions on how to get TclCurl to work
644 Version 0.10.1 released 14-October-02
646 * New configure options:
648 * 'proxytype': Allows you to set type of the proxy. Available options
649 are 'http' and 'socks5', with the HTTP one being default.
651 * 'encoding': TclCurl can now request compressed contents using the
654 * 'buffersize': To set prefered size for the receive buffer in TclCurl,
655 so that the write callback is called more often with smaller chunks.
657 * 'nosignal': Tells TclCurl not use any functions that install signal
658 handlers or any functions that cause signals to be sent to the process.
662 * 'curl::versioninfo': Returns information about various run-time
667 * Fixed to 'buffer' option to post data.
669 * Asif Haswarey reported that '--with-curlinclude' wouldn't work.
671 * The multi interface examples suddenly stopped working, they
674 Version 0.9.8 released 25-June-02
676 * Support for libcurl's multi interface, the main features are:
678 * Enable a "pull" interface. The application that uses TclCurl
679 decides where and when to get/send data.
681 * Enable multiple simultaneous transfers in the same thread
682 without making it complicated for the application.
684 * Keep Tk GUIs 'alive' while transfers are taking place.
686 * New 'httppost' options
688 * 'bufferName' and 'buffer', the contents of buffer will be sent
689 to the server as if they were a file whose name is in bufferName,
690 please check the 'httpBufferPost.tcl' example.
692 * New 'getinfo' options
694 * redirectime: Returns the total time, in seconds, it took for all
695 redirection steps including name lookup, connect, pretransfer and
696 transfer before the final transaction was started, it returns the
697 complete execution time for multiple redirections.
699 * redirectcount: Returns the total number of redirections that were
702 Version 0.9.6 released 30-April-02
704 * New configure options:
706 * dnscachetimeout, to set the timeout in seconds for keeping the name resolves
709 * dnsuseglobalcache, if set to '1' the DNS cache will be shared among
712 * debugproc, to set a procedure that will receive the debug data
713 produced by the 'verbose' option.
716 * Jonathan Matthew found and fixed a seg fault when you used
717 the 'httpheader' option twice with the same handle.
720 * The configure scripts saw more work in this release:
722 * I merged the latest changes to the TEA sample extension by
725 * Suresh K. Sastry found and fixed an incompatibility with Solaris.
727 * And I hope I have not forgotten any 'DESTDIR' this time.
729 Version 0.9.5 released 01-April-2002
731 * I have adapted the configure scripts to the new TEA scripts released by
732 Jeff Hobbs, for example, now it will compile 'out of the box' for freeBSD
733 systems (well, you may need to use '--with-curlprefix' and '--with-curlinclude')
735 * New configure option:
737 * prequote: use it to pass a list of ftp commands to execute *just before*
740 * New getinfo option:
742 * contenttype: if the servers bothers to tell you, this will return the type
743 of the downloadad object.
745 * Bug fix: 'curl::transfer' will return '0' if the transfer was successful.
746 *** POTENTIAL INCOMPATIBILITY ***
748 Version 0.9.3 released 29-Jan-2002
750 * Bug fix: There should no more seg faults because of trailing options
751 in configure commands.
753 * Bug fix: Binary transfer weren't done right in Windows, thanks to
754 Peter Waltenberg and Darren Blee for the report.
756 * TclCurl now supports OpenSSL engines, which allow you to keep your private
757 key stored in external hardware.
759 In order to manage this there are a few new configure options:
761 * sslcerttype: Set SSL cert type (PEM/DER).
763 * sslkey: Set SSL private key (file).
765 * sslkeytype: Set SSL key type (PEM/DER/ENG).
767 * sslkeypasswd: Set the passphrase for your private key.
769 * sslengine: Set the name of the crypto engine.
771 * sslenginedefault: Set the default engine.
773 * You can now add a set of headers for a particular part in a
774 multipart/form-post using the 'contentheader' option.
776 * It is now possible to execute commands in ftp servers without
777 transfering files, you have to set 'nobody' to '1' and 'header' to