1
Version 0.15.3 released 17-April-06
3
* I update the autoconf scripts to TEA 3.5, this seems to prevent
4
the warnings about how the headers files couldn't be compiled,
5
but it may have (re)introduced other bugs.
7
* Removed feature: TclCurl no longer supports Gopher, it probably
10
* New configure options:
12
* localport: Sets the local port number of the socket used for
13
the connection. This can be used in combination with '-interface'
14
and you are recommended to use 'localportrange' as well when this
17
* localportrange: Number of attempts TclCurl should do to find a
18
working local port number. It starts with the given 'localport'
19
and adds one to the number for each retry.
21
Version 0.15.1 released 10-January-06
23
* New configure options:
25
* ftpskippasvip: If set to a non-zero value, it instructs TclCurl
26
not to use the IP address the server suggests in its 227-response
27
to TclCurl's PASV command when TclCurl connects the data connection.
28
Instead TclCurl will re-use the same IP address it already uses for
29
the control connection. But it will use the port number from the
32
* ftpfilemethod: It allows three values:
34
* multicwd: the default, TclCurl will do a single CWD operation
35
for each path part in the given URL. For deep hierarchies this
36
means very many commands. This is how RFC1738 says it should
39
* nocwd: no CWD at all is done, TclCurl will do SIZE, RETR, STOR
40
etc and give a full path to the server.
42
* singlecwd: make one CWD with the full target directory and then
43
operate on the file "normally".
45
The support for this options is still experimental, comments whether
46
the methods work or don't with different methods are welcome.
48
Likewise, the options, or their names, may change in future releases,
49
so they are not yet documented elsewhere.
51
* Bug fix: The Windows packages had defective 'doc' directories. Thanks to
52
Alex Hisen for letting me know.
54
Version 0.14.1 released 4-September-05
56
* New configure options:
58
* ingnorecontentlength: Ignore the Content-Length header. This is
59
useful for Apache 1.x (and similar servers) which will report
60
incorrect content length for files over 2 gigabytes.
62
* cookielist: Pass a string with a cookie. The cookie can be
63
either in Netscape / Mozilla format or just regular HTTP-style
64
header (Set-Cookie: ...) format.
66
'$curlHandle getinfo cookielist' will return a list of all
67
cookies TclCurl knows (expired ones, too).
69
* When posting data, you can use the new 'filecontent' option to
70
read a file and use its contents as data.
72
* Bug fix: The code to post data was filled with memory leaks, I hope
73
I have fixed them all.
75
Version 0.14.0 released 3-June-05
77
* BEHAVIOUR CHANGE: To set the version SSL/TLS to use with
78
'-sslversion' you can know use the values:
81
The default action. When libcurl built with OpenSSL, this will
82
attempt to figure out the remote SSL protocol version.
83
Unfortunately there are a lot of ancient and broken servers in
84
use which cannot handle this technique and will fail to
85
connect. When libcurl is built with GnuTLS, this will mean SSLv3.
96
* Bug fix: A report by Melissa Millard made me realise that the
97
options 'httpauth', 'proxyauth', 'ipresolve', 'ftpssl' and
98
'ftpsslauth' have, probably, never worked. They should now.
100
* I updated 'configure.in' and 'Makefile.in' to the latest versions
101
in Tcl's sample extension, unfortunately that's likely to introduce
102
some bugs, so, please, report any problems.
104
Version 0.13.2 released 16-April-05
108
* New configure options:
110
* ftpaccount: When an FTP server asks for "account data"
111
after user name and password has been provided.
113
* sourceurl: When set, it enables a FTP third party transfer.
115
* sourcequote: Exactly like '-quote', but for the source host.
117
* The following options are now obsolete 'sourcehost', 'sourcepath',
118
'sourceport' and 'pasvhost'.
120
* curl::versioninfo will indicate if there is support for
123
* More information can be obtained using 'curl::getinfo':
125
* numconnects: to get the number of new connections
126
TclCurl had to create to achieve the previous transfer.
128
* sslengines: returns a list of the OpenSSL crypto-engines
131
* httpconnectcode: returns the last received proxy
132
response code to a CONNECT request
136
* Fixed the "-sourcepostquote" option.
138
* Daniel A. Steffen fixed a bug with parallel builds.
141
Version 0.12.2 released 18-October-04
145
* You can now share dns and cookie information among TclCurl
146
handles, please check the docs for details.
148
* New configure option: 'ftpsslauth', you may need this option
149
because of servers like BSDFTPD-SSL from won't work properly
150
when "AUTH SSL" is issued but require "AUTH TLS" instead.
152
* Added three new commands to the 'curl' namespace:
154
* curl::easystrerror errorCode
156
* curl::sharestrerror errorCode
158
* curl::multistrerror errorCode
160
All three will return a string explaining what the given error
165
* Ralph Mitchell reported that the 'cookiejar' option wouldn't
166
work in the latest version, it should now.
168
2004-10-06 Andres Garcia <fandom@telefonica.net>
172
tests/strerror.tcl: Added the 'curl::easystrerror', 'curl::sharestrerror'
173
and 'curl::multistrerror' commands.
175
2004-10-04 Andres Garcia <fandom@telefonica.net>
178
generic/tclcurl.c: Added support for CURLOPT_FTPSSLAUTH.
181
Version 0.12.1 released 30-September-04
185
* Third party ftp support, you can now transfer a file between
186
two different ftp servers. Check the 'ftp options' in the docs
189
* A new command for curl handles 'reset' which re-initializes all
190
options previously set on a specified handle to the default values.
192
This puts back the handle to the same state as it was in when it
193
was just created with curl::init.
195
It does not change the following information kept in the handle:
196
live connections, the Session ID cache, the DNS cache, the cookies
199
* Hooked the multi interface to Tcl's event loop, so you can have
200
fire-and-forget transfers:
202
set multiHandle [curl::multiinit]
203
set easyHandle [curl::init]
205
$easyHandle configure -file home.tar.gz \
206
-url http://127.0.0.1/~andres/HomePage.tar.gz
208
$multiHandle addhandle $easyHandle
209
$multiHandle auto -command "CleanUp $multiHandle $easyHandle"
211
This support is experimental, so any comments are welcome.
213
Thanks to Eric Boudaillier who answered my question about how to
216
* New ssl data types have been added to 'debugproc'.
218
* In case of error when setting post data, the error will include a
219
code about the nature of the error.
223
* The 'autoreferer' option should now work.
225
Version 0.12.0 released 09-July-04
227
* New configure options:
229
* '-port': Pass the number specifying what remote port to connect to,
230
instead of the one specified in the URL or the default port for the
233
* '-tcpnodelay': To specify whether the TCP_NODELAY option should be
236
Setting this option will disable TCP's Nagle algorithm. The purpose
237
of this algorithm is to try to minimize the number of small packets
240
* '-autoreferer': When enabled, TclCurl will automatically set the
241
'Referer:' field in requests where it follows a 'Location:' redirect.
246
* Thanks to Stefano Federici I noticed that the 'ftpssl' option didn't
250
Version 0.11.0 released 04-febrary-04
253
* New configure options:
255
* 'ftpssl': You can use ftps:// URLs to explicitly switch on SSL/TSL
256
for the control connection and the data connection.
258
Alternatively you can set this option to one of these values:
260
* 'nope': Do not attempt to use SSL
262
* 'try': Try using SSL, proceed anyway otherwise.
264
* 'control': Use SSL for the control conecction or fail.
266
* 'all': Use SSL for all communication or fail.
268
* 'netrcfile': Pass a string containing the full path name to the
269
file you want to use as .netrc file. For the option to work, you
270
have to set the 'netrc' option to 'required'. If this option is
271
omitted, and 'netrc' is set, TclCurl will attempt to find the a
272
.netrc file in the current user's home directory.
274
* Bug fix: Fixed the 'netrc' option.
277
Version 0.10.8 released 29-december-03
279
* New 'configure' options:
281
* 'ftpresponsetimeout': Causes TclCurl to set a timeout period
282
on the amount of time that the server is allowed to take in
283
order to generate a response message for a command before the
284
session is considered hung.
286
* 'ipresolve': Allows an application to select what kind of
287
IP addresses to use when resolving host names. This is only
288
interesting when using host names that resolve addresses
289
using more than one version of IP.
291
* 'maxfilesize': Allows you to specify the maximum size
292
of a file to download.
294
* New 'getinfo' options:
296
* 'httpauthavail': Returns a list with the authentication method(s)
299
* 'proxyauthavail': Returns a list with the authentication method(s)
300
available for your proxy athentication.
304
* 'curl::versioninfo' will now say if there is support for
305
asynchronus DNS and SPNEGO.
307
* The 'httpcode' for 'getinfo' is now called 'responsecode'
308
since it will now work with FTP transfers. The old option
309
name, while deprecated, will continue to work.
313
* TclCurl still thought it was in version 0.10.4.
315
* Fixed the 'httpauth' option.
317
* The configure scripts would sometimes use the cURL in
318
'/usr/bin' instead of the one in '/usr/local/bin' despite
319
the '--with-curlprefix' tag.
322
Version 0.10.7 released 03-September-03
324
* New configure options:
326
* 'ftpcreatemissingdirs': If set to non-zero, TclCurl
327
will attempt to create any remote directory that it
328
fails to CWD into. CWD is the command that changes
331
* 'httpauth': Set to the authentication method you want,
332
the available ones are:
334
* 'basic': HTTP Basic authentication. This is the
335
default choice, and the only method that is in
336
widespread use and supported virtually everywhere.
337
It sends the user name and password over the network
338
in plain text, easily captured by others.
340
* 'digest': HTTP Digest authentication. Digest
341
authentication is a more secure way to do
342
authentication over public networks than the
343
regular old-fashioned Basic method.
345
* 'gssnegotiate': HTTP GSS-Negotiate authentication.
346
The GSS-Negotiate method was designed by Microsoft
347
and is used in their web aplications. It is primarily
348
meant as a support for Kerberos5 authentication
349
but may be also used along with another authenti-
352
* 'ntlm': HTTP NTLM authentication. A proprietary
353
protocol invented and used by Microsoft.
355
* 'any':TclCurl will automaticaly select the one it
358
* 'anysafe': It may use anything but basic, TclCurl
359
will automaticly select the one it finds most secure.
362
* 'command': Executes a Tcl command after the transfer
363
is done. So far it only works in blocking transfers
364
which is pretty much useless.
367
Version 0.10.5 released 21-May-03
369
* New configure option:
371
* 'ftpuseeptr': Set to non-zero, to tell TclCurl to use the EPRT
372
(and LPRT) command when doing active FTP downloads (which is
373
enabled by 'ftpport'). Using EPRT means that it will first attempt
374
to use EPRT and then LPRT before using PORT, if you pass zero to
375
this option, it will not try using EPRT or LPRT, only plain PORT
379
* The multi handles couldn't store the data of more than two
382
* Using the 'progressproc' option in Windows would crash Tcl.
384
* The '$multiHandle active' command wasn't returning anything.
388
* Updated ssl in Windows binaries to version 0.9.7b.
390
* Changed the way the http reponse header is dealt with in
391
the 'headervar' option. Now the whole header is put into
394
************** POTENTIAL INCOMPATIBILITY **************
397
Version 0.10.4 released 31-March-03
401
* Added 'getinfo' features to the 'curl::transfer' command.
403
You can now do things like:
405
curl::transfer -url http://www.curl.com \
406
-infohttpcode httpCode \
407
-infocontenttype contentType \
409
puts "Http code: $httpCode"
410
puts "Content type: $contentType"
412
* New configure option: -unrestrictedauth, a non-zero parameter
413
tells the extension it can continue to send authentication
414
(user+password) when following locations, even when hostname
415
changed. Note that this is meaningful only when setting
418
* The makefile now has an 'uninstall' target.
420
* The Windows packages are now zlib enabled.
422
* Added a 'packages' directory with a makefile to create the
423
Windows packages and the spec file for rpm.
427
* The configure script will no longer choke with the version
428
string of cURL's prereleases.
432
* If there is an error, the 'curl::transfer' command will now
433
return the code of the error, without the 'Couldn't perform
436
************** POTENTIAL INCOMPATIBILITY **************
438
* So that they have the same name in Windows and Linux, I have
439
changed the name of the certificate file in Windows to
440
'curl-ca-bundle.crt' and it will placed in the 'Windows'
443
************** POTENTIAL INCOMPATIBILITY **************
445
* Alex Khassin suggested using fully qualified in 'tclcurl.tcl'
446
names to prevent problems with namespaces.
449
Version 0.10.3 released 30-January-03
451
* New configure option:
453
* 'http200alieases': To pass a list of aliases to be treated as valid
458
* When using '-headervar' in Windows you could end up with carriage
459
returns in the name of the header.
461
* Julian let me know that TclCurl would crash when used in a thread
466
* Since compiling TclCurl in Windows is a real pain, I will provide
467
more packages for it, thread and ssl enabled.
469
* Alex Khassin has written instructions on how to get TclCurl to work
473
Version 0.10.1 released 14-October-02
475
* New configure options:
477
* 'proxytype': Allows you to set type of the proxy. Available options
478
are 'http' and 'socks5', with the HTTP one being default.
480
* 'encoding': TclCurl can now request compressed contents using the
483
* 'buffersize': To set prefered size for the receive buffer in TclCurl,
484
so that the write callback is called more often with smaller chunks.
486
* 'nosignal': Tells TclCurl not use any functions that install signal
487
handlers or any functions that cause signals to be sent to the process.
491
* 'curl::versioninfo': Returns information about various run-time
496
* Fixed to 'buffer' option to post data.
498
* Asif Haswarey reported that '--with-curlinclude' wouldn't work.
500
* The multi interface examples suddenly stopped working, they
504
Version 0.9.8 released 25-June-02
506
* Support for libcurl's multi interface, the main features are:
508
* Enable a "pull" interface. The application that uses TclCurl
509
decides where and when to get/send data.
511
* Enable multiple simultaneous transfers in the same thread
512
without making it complicated for the application.
514
* Keep Tk GUIs 'alive' while transfers are taking place.
517
* New 'httppost' options
519
* 'bufferName' and 'buffer', the contents of buffer will be sent
520
to the server as if they were a file whose name is in bufferName,
521
please check the 'httpBufferPost.tcl' example.
523
* New 'getinfo' options
525
* redirectime: Returns the total time, in seconds, it took for all
526
redirection steps including name lookup, connect, pretransfer and
527
transfer before the final transaction was started, it returns the
528
complete execution time for multiple redirections.
530
* redirectcount: Returns the total number of redirections that were
533
Version 0.9.6 released 30-April-02
535
* New configure options:
537
* dnscachetimeout, to set the timeout in seconds for keeping the name resolves
540
* dnsuseglobalcache, if set to '1' the DNS cache will be shared among
543
* debugproc, to set a procedure that will receive the debug data
544
produced by the 'verbose' option.
547
* Jonathan Matthew found and fixed a seg fault when you used
548
the 'httpheader' option twice with the same handle.
551
* The configure scripts saw more work in this release:
553
* I merged the latest changes to the TEA sample extension by
556
* Suresh K. Sastry found and fixed an incompatibility with Solaris.
558
* And I hope I have not forgotten any 'DESTDIR' this time.
561
Version 0.9.5 released 01-April-2002
563
* I have adapted the configure scripts to the new TEA scripts released by
564
Jeff Hobbs, for example, now it will compile 'out of the box' for freeBSD
565
systems (well, you may need to use '--with-curlprefix' and 'with-curlinclude')
567
* New configure option:
569
* prequote: use it to pass a list of ftp commands to execute *just before*
572
* New getinfo option:
574
* contenttype: if the servers bothers to tell you, this will return the type
575
of the downloadad object.
577
* Bug fix: 'curl::transfer' will return '0' if the transfer was successful.
578
*** POTENTIAL INCOMPATIBILITY ***
581
Version 0.9.3 released 29-Jan-2002
583
* Bug fix: There should no more seg faults because of trailing options
584
in configure commands.
586
* Bug fix: Binary transfer weren't done right in Windows, thanks to
587
Peter Waltenberg and Darren Blee for the report.
589
* TclCurl now supports OpenSSL engines, which allow you to keep your private
590
key stored in external hardware.
592
In order to manage this there are a few new configure options:
594
* sslcerttype: Set SSL cert type (PEM/DER).
596
* sslkey: Set SSL private key (file).
598
* sslkeytype: Set SSL key type (PEM/DER/ENG).
600
* sslkeypasswd: Set the passphrase for your private key.
602
* sslengine: Set the name of the crypto engine.
604
* sslenginedefault: Set the default engine.
606
* You can now add a set of headers for a particular part in a
607
multipart/form-post using the 'contentheader' option.
609
* It is now possible to execute commands in ftp servers without
610
transfering files, you have to set 'nobody' to '1' and 'header' to
613
Version 0.9.2 released 10-Dec-2001
615
* A port to Windows, using Mingw over a Cygwin environment.
617
* The 'perform' command now returns the exit code form 'curl_easy_perform'
619
* New configure option:
621
* ftpuseepvs: Set to one to tell TclCurl to use the EPSV command when
622
doing passive FTP downloads (which is always does by default). Using
623
EPSV means that it will first attempt to use EPSV before using PASV,
624
but if you pass a zero to this option, it will not try using EPSV,
627
* Changed configure option:
629
* httpversion: Set to one of the values decribed below, they force TclCurl
630
to use the specific http versions. It should only be used if you really
631
MUST do that because of a silly remote server.
633
* none: We don't care about what version the library uses.
634
TclCurl will use whatever it thinks fit.
636
* 1.0: Enforce HTTP 1.0 requests.
638
* 1.1: Enforce HTTP 1.1 requests.
640
* The 'configure' command will now also return the value given for the invalid option.
642
Version 0.9 released 05-Nov-2001
644
* New command: 'curlHandle duphandle', returns a new curl handle
645
that duplicates the original one.
647
* New configure options:
649
* cookiejar: Pass a file name in which TclCurl will dump all
650
internally known cookies when 'cleanup' is called. If no
651
cookies are known, no file will be created. Specify "-" to
652
have the cookies written to stdout.
654
* sslcipherlist: Pass a string holding the list of ciphers to
655
use for the SSL connection. The list must be syntactly correct,
656
it consists of one or more cipher strings separated by colons.
657
Commas or spaces are also acceptable separators but colons are
658
normally used, , - and + can be used as operators. Valid
659
examples of cipher lists include 'RC4-SHA', 'SHA1+DES', 'TLSv1'
660
and 'DEFAULT'. The default list is normally set when you compile
663
You will find more details about cipher lists on this URL:
664
http://www.openssl.org/docs/apps/ciphers.html
666
* httpversion: Use this options to request TclCurl to use HTTP 1.0
667
requests instead of the default version (1.1). It should only be
668
used if you really MUST do that because of a silly remote server.
670
* Changed configure options:
672
* The 'http' option to set the data for a POST, has now a different
673
syntax, check the docs for details. ** POTENCIAL INCOMPATIBILITY **
675
* The 'failonerror' option, no longer returns an error if the HTTP
676
return code is below 400. ** POTENCIAL INCOMPATIBILITY **
678
* Changed the options to the 'timecondition' configure option to lower
679
case. ** POTENCIAL INCOMPATIBILITY **
681
* Changed the options to the 'closepolicy' configure option to lower
682
case. ** POTENCIAL INCOMPATIBILITY **
686
* The makefile will now change 'init.tcl' so that the directory where
687
TclCurl is going to be installed will be included in the 'auto_path'
690
* libcurl, and therefore TclCurl too, now closes connections that
691
report transfer failures.
694
Version 0.8.0 released
696
* New command: 'curl::transfer' it takes the same arguments as
697
'curl::configure' and takes care of all the transfer details,
698
so, for example, instead of doing:
700
set curlHandle [curl::init]
701
$curlHandle configure -url http://curl.haxx.se -file index.html
705
You can now simply do:
707
curl::transfer -url http://curl.haxx.se -file index.html
709
This command is limited as you can't use it if you want persistant
710
connetions and you can't use the 'getinfo' command with the
714
* New configure options:
717
Use it to set a Tcl procedure that will be invoked by
718
TclCurl as soon as there is received data that needs
722
Sets a Tcl procedure to be called by TclCurl as soon as
723
it needs to read data in order to send it to the peer.
726
If set to non-zero forces the HTTP request to get back
727
to GET. Only really usable if POST, PUT or a custom request
728
have been used previously with the same curl handle.
730
Set to non-zero if we should verify the Common name from the
731
peer certificate in the SSL hand�shake, set 1 to check
732
existence, 2 to ensure that it matches the provided hostname.
736
* Using TclCurl to upload a file should not cause any more seg faults.
739
* INCOMPATIBILITIES WITH OTHER VERSIONS
741
* The options to the 'curl::configure' and 'getinfo' commands are now all
742
lowercase as usual in Tcl commands.
745
Version 0.7.0 released
747
* Added the option '-vernum' to 'curl::curlConfig' it returns
748
version information about the installed libcurl.
750
* By default 'noProgress' will be set to '1'.
752
*** POTENTIAL INCOMPATIBILITY ***
753
Your scripts may not behave the same
755
* The 'mute' option no longer does anything.
757
*** POTENTIAL INCOMPATIBILITY ***
758
Your scripts may not behave the same
760
* Fixed the bug by which TclCurl would return two many possible options
761
after using a wrong one.
763
* Created the 'configure' command.
765
*** POTENTIAL INCOMPATIBILITY ***
766
Even though the 'setopt' command will be supported indefinintely, some
767
of the options, the ones that needed lists as parameters like HTTPPOST
768
or QUOTE have changed, please look up the tests cases to for an example.
770
* TclCurl will no longer install the 'tclcurl.h' file.
772
* It is now possible to remove the CURLOPT_FILE, CURLOPT_INFILE and
773
CURLOPT_STDERR options between transfers in a persistant connection.
776
Version 0.6.1 released.
778
* Trying to set a HTTPPOST would provoke a seg fault.
780
* Prevented segfault when saving to a file without the right permissions or
781
reading for a file that does not exists.
783
* Added the CURLOPT_CANCELTRANSVAR option.
785
* Added the CURLOPT_PROGRESSPROC option.
787
* Added the CURLOPT_BODYVAR option to put the body of a request into
790
* Added support for the 'CURLOPT_HEADERFUNCTION' option
791
through 'CURLOPT_HEADERVAR'.
793
* tclcurl.tcl: Created this file to host the curl::curlConfig procedure.
795
* tests/getinfo.tcl: Added the option CURLOPT_FILETIME so
796
CURLINFO_FILETIME would work.