Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2014-05-20
00:39
Use [expr 1] instead of [list 1] as a minor performance optimization. leaf check-in: c639ddbed7 user: andy tags: handler-script
2014-05-19
23:27
Rework configuration to have handlers be a script, not a list. Move [dict getnull] into the wibble namespace. Use [info level 0] instead of trying to figure out the current command name. Add [intercept] command for use in handler script. Add [stop] command to kill servers by port. check-in: 71011d06ab user: andy tags: handler-script
2014-05-10
02:38
Fix shebang per comment from andrewsh. leaf check-in: 180aada6d2 user: andy tags: trunk
2014-05-02
21:14
Correct HTTP/1.1 comparison per comment from andrewsh. check-in: 6dc367091c user: andy tags: trunk
2014-04-21
00:01
Incorporate patch for HTTP/1.0 and connection: close from andrewsh. Reference [http://wiki.tcl.tk/_/revision?N=27382&V=54#pagetoc0aa08018] for discussion. check-in: c62e5a1b5d user: andy tags: trunk
2012-09-22
08:32
SEH: Ver 0.4.3: more unneeded code ripped out after consultation with AMG. Source: [http://wiki.tcl.tk/_/revision?N=27377.code&V=34]. leaf check-in: e0addd3c71 user: andy tags: SEH-performance, version-0.4.3
04:46
SEH: Ver. 0.4.2: pulled out some unnecessary changes in how request and response vars are handled. Source: [http://wiki.tcl.tk/_/revision?N=27377.code&V=33]. check-in: bf836b2349 user: andy tags: SEH-performance, version-0.4.2
2012-09-21
07:49
SEH: I take Andy up on his offer to make code changes here and humbly offer a version I've labeled 0.4.1. Details at [http://wiki.tcl.tk/_/revision?N=27381&V=84]. Source: [http://wiki.tcl.tk/_/revision?N=27377.code&V=32]. check-in: f3ed7b0923 user: andy tags: SEH-performance, version-0.4.1
2012-04-13
16:50
<b>Friday the Thirteenth special edition</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=31">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc42e963e2">announcement</a>. Only two things are fixed in this version. * Quote ' (apostrophe) as &amp;apos; in HTML attributes. * Automatically focus the entry widget when using the non-console Tk command interface. * Bump version number. check-in: dc124f9048 user: andy tags: trunk, version-0.4
2012-04-01
19:42
<b>April Fool's special edition</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=29">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetocfe0a5a45">announcement</a>. Any bugs introduced by this release are intentional April Fool's pranks, not careless mistakes. * Add [dict getnull] command to simplify the common task of checking if a dict key exists before getting its value. It's very common to want to treat missing values as empty, so this new command makes sense. * Double the performance of [dehex]. * Simplify [icc::catch] a tiny bit. * Remove some looping and [set]s in the path normalization code in [getrequest]. * Allow for custom POST content-types such as application/json-rpc. * Let the application replace [socket] with a custom command, e.g. [tls::socket]. * Add rudimentary history support to the command entry window, used when running Wibble with wish on a platform where there's no [console] command. * Bump version number. I should do this every time... check-in: e8d8fa09c7 user: andy tags: trunk, version-0.3
2011-11-29
23:38
<b>[icc catch] fix</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=28">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc899455f6">announcement</a>. Just one change this time. * Fix [icc catch] to properly bytecode the script and to correctly handle [return], etc. inside the script. check-in: 15a13c3ae5 user: andy tags: trunk
2011-11-28
08:31
<b>[icc] improvements</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=26">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetocadc2cbf6">announcement</a>. Some [icc] stuff... * Improve comments. * In [deheader], split if-match and if-none-match to be separate header types. * Always accept exception and timeout events. * Remove unnecessary ifs. * Add [icc destroy] to destroy a feed, performing cleanup along the way. * Add support for exception events to [icc get]. * Guard against [icc destroy] happening in the middle of [icc get]. * Add [icc catch] to get exception events. * Don't explicitly accept timeout in the coroutine feed. * In [panic], don't attempt to send errors to the client if not using HTTP. * Improve demo to use docroot directory if it exists. check-in: a5738e0779 user: andy tags: trunk
2011-11-25
04:31
<b>New outgoing header format, Thanksgiving bonanza</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=25">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc58b50302">announcement</a>. Major revision! <ul> <li>Bump revision to 0.2.</li> <li>Put zone handlers in "::wibble::zone" namespace.</li> <li>Rewrite zone handlers to properly inherit from the existing state dicts.</li> <li>Rename the [static], [template], and [script] zone handlers to [staticfile], [templatefile], and [scriptfile], respectively.</li> <li>Change [compiletemplate] to [template], which immediately expands the template rather than just compiling it.</li> <ul> <li>This effectively reverts a change made in the 2010-11-06 revision [eaa66764e3].</li> </ul> <li>Use [template] in zone handlers when appropriate.</li> <li>Fundamentally change the format of response headers generated by zone handlers.</li> <ul> <li>The new format mirrors the format of request headers.</li> </ul> <li>Change the branch order of [indexfile] to prefer serving index.html.</li> <li>Remove caching of template scripts.</li> <ul> <li>Writing files into the docroot made me nervous...</li> </ul> <li>Add [contenttype] zone handler to guess content-type from file extension.</li> <li>Expand [dumprequest] into [dumpstate] which analyzes the entire state dictionary, not just a request dictionary.</li> <li>Remove [enurl] and [deurl].</li> <li>Make [enhex] more flexible to make up for the loss of [enurl].</li> <li>Update [enquery]/[dequery] to use [enhex]/[dehex] instead of [enurl]/[deurl].</li> <li>Add [entime] and [detime] to process HTTP time/date, both relative and absolute.</li> <li>Improve correctness of [delist], and teach it to recognize weak tag prefix ("w/").</li> <li>Add [enquote] to complement [dequote].</li> <li>Add [entag] and [detag] to process HTTP entity tags, including weak tags.</li> <li>Add [enheader] to complement [deheader].</li> <ul> <li>HUGE new feature!</li> </ul> <li>Update [deheader] for changes in encode/decode procs.</li> <li>Add support for cache-control, if-range, and date headers to [deheader].</li> <li>Correct if-match and if-none-match support in [deheader].</li> <li>Beef up warning support in [deheader].</li> <li>Call [dequote] by default in [deheader].</li> <li>Eliminate duplicate filters in [icc configure accept].</li> <li>Style tweak to [icc put].</li> <li>Search for zone handler commands in the new "::wibble::zone" namespace.</li> <li>Add cleanup script naming and cancellation capabilities to [cleanup].</li> <li>Simplify path normalization regexp in [getrequest].</li> <li>Add TE/transfercoding to accept dictionary generation.</li> <li>Prefer [dict for] over [foreach].</li> <li>Replace [deurl] with [dehex] in [getrequest].</li> <li>Add blank response dictionary to initial system dictionary in [getresponse].</li> <li>Set charset to utf-8 in various places.</li> <ul> <li>This change is probably a mistake, since the output will be converted to iso8859-1 anyway.</li> </ul> <li>Move much of the guts of [process] into [defaultsend].</li> <li>In [defaultsend], use the updated [cleanup] facility to close the contentfile.</li> <li>Use [enheader] in [defaultsend] to encode the outgoing headers for HTTP.</li> <li>Remove header capitalization normalization.</li> <li>Add connection: close capability via the return value of [defaultsend].</li> <li>Update [process] for the change in [cleanup].</li> <li>Have [process] call [defaultsend] or a custom send command supplied by the zone handler.</li> <ul> <li>This can be used to implement upgrading, e.g. WebSocket and Server-Sent Events [http://en.wikipedia.org/wiki/Server-sent_events].</li> </ul> <li>Move the error log code into [panic] which can be overridden by the application.</li> <li>Update panic code to use [dumpstate] instead of [dumprequest].</li> <li>In Wibble demo, explicitly initialize zonehandlers to empty.</li> <ul> <li>This facilitates re-sourcing wibble.tcl in the middle of execution.</li> </ul> <li>Add sample content-type zone handler configuration.</li> <li>Add Tk console to demo.</li> <ul> <li>Use [console show] if available. Customize it, too.</li> <li>If that fails, provide a bare-bones command prompt window.</li> </ul> </ul> check-in: 6cd02937b9 user: andy tags: trunk, version-0.2
2011-02-05
00:52
<b>Inter-coroutine communication, text/xml POST, cleanup scripts, contentchan</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=24">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc56a64650">announcement</a>. I added a bunch of new features. * Change "wibble" to "::wibble" to support being sourced, etc. when not in the :: namespace. This was done by JCW's request. * Add [redirect] zone handler. * Modify [dirslash] to chain to [redirect]. * Add [forbidden] zone handler. * Modify [dirlist] to chain to [forbidden]. * Add [string trimright] to end of [compiletemplate]. I can't remember exactly why I did this, but I think it cleans up the output a little bit in some obscure corner case. * Allow display of multiline data in [dumprequest], so long as the hard-coded string length limit isn't exceeded. * Remove [resume] and [suspend]. * Remove argument from [getline] and [getblock]; instead derive the socket name from the coroutine name. * Use the new [icc] commands instead of [resume] and [suspend]. * Strip CR in [enhtml], [enattr], and [enpre]. * Add new [icc] commands. * Add [cleanup] command. * Update accept list generation logic to discard elements with a nonpositive qvalue. * Restructure the POST content-type dispatch code. * Add text/xml POST support. * Add default set of cleanup scripts. * Create an ICC feed for each coroutine. * Add support for contentchan/contentsize in addition to content and contentfile. * Don't error on flushing an output socket. (Maybe I should revert this change.) * Call cleanup scripts when the coroutine terminates. * Avoid gratuitous use of [namespace code]. check-in: d8efc44d96 user: andy tags: trunk
2010-12-23
06:04
<b>Fix 501 bug, remove empty query and post</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=21">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc41bb1c27">announcement</a>. Oops. The 501 code didn't work. I forgot to quote the value of the header key, resulting in an extra argument to [dict create]. Also, I removed the query, rawquery, post, and rawpost keys from the request dictionary when no query or post was made. This makes it easier to check if there was a query or a post. * Fix 501 bug. * Remove empty query, rawquery, post, and rawpost dicts. check-in: 2240c95caa user: andy tags: trunk
2010-12-20
14:25
<b>Remove no-op [nexthandler] invocations, rearrange [suspend]</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=18">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetocc7121a3d">announcement</a>. Per JBR's suggestion, I removed the [nexthandler $state] calls when $state is unmodified. Instead the zone handler just returns. This winds up having the same effect, because the no-op [nexthandler $state] was changing $system without really modifying it. ;^) * Remove no-op [nexthandler] invocations throughout Wibble. * Clarify the comment for [resume]. * Rearrange [suspend] to be a little easier to understand. check-in: 4a8b958f02 user: andy tags: trunk
2010-12-18
23:51
<b>State dicts, coroutine helpers, fixed zone handler order</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=17">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetocab50d82b">announcement</a>. I changed the zone handler arguments, so any existing zone handlers will have to be rewritten. I hope this new method works better than the fixed request/response approach I had before. Also, I changed the way the coroutines [yield] and are resumed; this should make AJAX work better. (Yes, Wibble supports AJAX!) * Cutesy CSS changes in [vars]. * Update all zone handlers to receive a unified state dict instead of request and response dicts. * Update [vars] to display all sub-dicts in $state. * Pointless wording, capitalization, comment, and indentation changes. * Fix [dumprequest] to format query the same as post. * Write [resume] and [suspend] as wrappers around reinvoking the coroutine and [yield]. * Remove [chan names] testing code since it didn't work anyway. * Update [getline] and [getblock] to use [suspend]. * Rename $zones to $zonehandlers. * Change $zonehandlers to be a flat list instead of a dict. * Rewrite [getresponse] to use state dictionaries instead of request/response pairs. * Don't merge options into the request dict; instead make a separate options dict in $state. * Fix zone order handling in [getresponse]. * Fix a subtle bug in [getresponse] that can make it replace the wrong state entry in $system. * Update the [chan copy] code to use [resume] and [suspend]. * Don't install the [chan event] handler in [listen] since it'll be installed by [suspend]. check-in: 804f37444e user: andy tags: trunk
2010-11-13
06:50
<b>Non-blocking file transfers, bug workarounds</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=13">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc8a441aa4">announcement</a>. Sorry about the blocking [chan copy]. It's fixed now. * Don't initialize $wibble::zones to empty string. This makes it easier to re-[source] wibble.tcl while it's running. * Remove some extra [chan close]s. The channel will be closed anyway by the finally clause at the end of [process]. * Add workaround for the Wiki bug that was corrupting [enhtml] and [enattr] (see [http://wiki.tcl.tk/27382#pagetoc5da162fc]). * Remove the question mark from [enquery] to make it mirror [dequery] * Make [chan copy] be non-blocking. * Add workaround for the "command returned bad code: 2" Tcl bug (see [http://wiki.tcl.tk/27382#pagetoc640ac485]). * Spell out "peerhost" and "peerport". * Re-fix the [namespace code] in [accept] (see [http://wiki.tcl.tk/27382#pagetoca290566b]). check-in: 122ff1895b user: andy tags: trunk
2010-11-07
05:04
<b>Separate templates and scripts, improved request dictionary reporting</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=11">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc40fc9a27">announcement</a>. Now that I've finished reorganizing all the Wibble pages, I'm eager to edit them some more! :^) <ul> <li>Write [dumprequest] to partially "flatten" a request dictionary to make it easier to display.</li> <li>Make the output of the vars zone handler much nicer.</li> <li>Make the error log nicer too.</li> <li>Split the template zone handler into two pieces:</li> <ul> <li>[template]: Compile *.tmpl files into *.script files.</li> <li>[script]: Execute *.script files.</li> </ul> <li>Add rawtime, time, and port to the request dictionary.</li> <li>Completely remove PUT.</li> <li>Slightly simplify POST handling.</li> <li>Replace [dict for] with [foreach] to support duplicate keys.</li> <li>Improve the failsafe ![info exists $request] error log.</li> <li>Remove -nonewline option from [log].</li> <li>Move \n from the end to the beginning of the line.</li> <li>Add new script zone handler to example code.</li> <li>Remove special logging of the never-implemented "content" key in the request dictionary.</li> <li>Remove [accept] and changed [listen] to use [apply].</li> </ul> check-in: bd595e7814 user: andy tags: trunk
2010-11-06
19:33
<b>Header and POST parsing.</b> <a href="http://wiki.tcl.tk/_/revision?N=27377&V=4">Source</a>, <a href="http://wiki.tcl.tk/_/revision?N=27383&V=29#pagetoc7f4ca42f">announcement</a>. I've been holding on to these changes for far too long, and I'm glad to finally publish them. <ul> <li>Add separator comments delimiting major sections of the code.</li> <li>Change usage of [dict with request] to cut down on indenting.</li> <li>Add many conversion routines:</li> <ul> <li>[enhtml]: Encode for HTML.</li> <li>[enattr]: Encode for HTML tag attribute.</li> <li>[enpre]: Encode for HTML &lt;pre&gt;.</li> <li>[enquery]: Encode a query string.</li> <li>[dequery]: Decode a query string into a list.</li> <li>[enhex]: Encode most non-alphanumerics with hexadecimal codes.</li> <li>[dehex]: Decode hexadecimal encoding.</li> <li>[enurl]: Encode for URLs.</li> <li>[deurl]: Decode URL encoding.</li> <li>[delist]: Decode header list encoding.</li> <li>[dequote]: Decode header quoting.</li> <li>[deheader]: Decode HTTP headers. (!!!)</li> </ul> <li>Actually, [dehex] already existed, named [unhex]. Rename because [enhex] and [unhex] are too similar.</li> <li>Modify zone handlers to use new conversion routines, e.g. [enhtml].</li> <li>Replace &lt;td&gt;&lt;b&gt; with &lt;th&gt; in [vars].</li> <li>Simplify the way [dirlist] adds .. to the directory listing.</li> <li>Change [applytemplate] to [compiletemplate], which returns the script instead of running it.</li> <li>Make [template] cache the result of [compiletemplate].</li> <li>Simplify append's arguments in [compiletemplate].</li> <li>Add channel closure detection to [getline] and [getblock].</li> <li>Revert second-chance [chan gets] in [getline], since I'm not convinced it's necessary (see [http://wiki.tcl.tk/27382#pagetoc3c65f636]).</li> <li>Change the way [nexthandler] and [sendresponse] pass control back to [getresponse].</li> <li>Add accept, post, and rawpost to the request dictionary.</li> <li>Add Accept*: header handling.</li> <li>Add POST handling.</li> <li>Unset request dictionary after sending the response to avoid stale data.</li> <li>Correct error report charset.</li> <li>Incorporate APN's [accept] fix (see [http://wiki.tcl.tk/27382#pagetoc8c99f371]).</li> </ul> The channel closure detection makes it possible to close connections due to timeouts. This isn't implemented yet, but it would be nice to harden Wibble against basic DoS attacks. check-in: eaa66764e3 user: andy tags: trunk
2009-12-19
17:14
Use neither [namespace code] nor [namespace current] to identify the coroutine command. [http://wiki.tcl.tk/_/revision?N=23626&V=80] check-in: 902f2fb0a0 user: andy tags: trunk
2009-12-18
07:45
Instead of [namespace code], explicitly use [namespace current] to identify the coroutine command. [http://wiki.tcl.tk/_/revision?N=23626&V=76] check-in: 3920957b86 user: andy tags: trunk
07:27
Use [namespace code] to armor the coroutine command being executed. [http://wiki.tcl.tk/_/revision?N=23626&V=75] check-in: 6c59e8eb84 user: andy tags: trunk
2009-12-02
17:55
Per Miguel Sofer, use [variable] instead of giving the namespace'd variable name. [http://wiki.tcl.tk/_/revision?N=23626&V=61] check-in: 3b5983aeb4 user: andy tags: trunk
2009-11-17
05:14
Use [getblock] instead of [getline] to get non-chunked request body. [http://wiki.tcl.tk/_/revision?N=23626&V=57] check-in: fe25f88b0f user: andy tags: trunk
2009-11-12
14:57
Remove charset=utf-8. [http://wiki.tcl.tk/_/revision?N=23626&V=56] check-in: 4bccaaab72 user: andy tags: trunk
03:05
Add header comment giving name, URL, (obsolete) email contact, and license. Rework long line detection. Remove [filejoin] in favor of simple concatenation. [http://wiki.tcl.tk/_/revision?N=23626&V=55] check-in: 022fd7f3c5 user: andy tags: trunk
2009-06-17
03:05
Remove [contentrange]. [http://wiki.tcl.tk/_/revision?N=23626&V=45] check-in: 69e5aa2d4e user: andy tags: trunk
03:04
Don't use [namespace export] because the wibble namespace isn't meant to be imported. In the request dict, rename querytext to rawquery, and add rawheader. Split [get] into [getline] and [getblock]. Add the (nonexistent) [contentrange] handler to the demonstration after the [notfound] fallback (this change must have been done in error). [http://wiki.tcl.tk/_/revision?N=23626&V=44] check-in: 7a4531c476 user: andy tags: trunk
2009-06-14
00:25
Use [catch] instead of single-argument [try] which doesn't actually inhibit errors. [http://wiki.tcl.tk/_/revision?N=23626&V=42] check-in: 3a1846e481 user: andy tags: trunk
2009-06-13
23:58
Compact the non-chunked request and zone handler match code. Rearrange content length computation. [http://wiki.tcl.tk/_/revision?N=23626&V=41] check-in: 0db237210e user: andy tags: trunk
23:41
Change the way [operation] encodes its result. Pass zone handlers preliminary response dictionaries. Remove [operation] in favor of separate [sendresponse] and [nexthandler] commands. [http://wiki.tcl.tk/_/revision?N=23626&V=39] check-in: d0f8d8522d user: andy tags: trunk
14:23
Compact the first line HTTP parser code and the chunked request code. Improve HTTP header parser and generator to handle multi-line headers. Fix [log] so it actually works. [http://wiki.tcl.tk/_/revision?N=23626&V=37] check-in: 8b1da2f099 user: andy tags: trunk
2009-06-12
23:27
Use the centralized error system on excessively long lines. [http://wiki.tcl.tk/_/revision?N=23626&V=34] check-in: 2f7c2fa2f0 user: andy tags: trunk
2009-05-30
20:35
Catch errors when finally closing the socket. [http://wiki.tcl.tk/_/revision?N=23626&V=28] check-in: b36b0d2acf user: andy tags: trunk
19:59
Improve error logging. Create [log] command. Close the socket even when an error doesn't occur. [http://wiki.tcl.tk/_/revision?N=23626&V=26] check-in: 5f71e0aa5c user: andy tags: trunk
19:24
Use [chan configure -translation] instead of -encoding. [http://wiki.tcl.tk/_/revision?N=23626&V=25] check-in: 3255e68808 user: andy tags: trunk
19:09
Don't keep-alive on 404 and other errors. [http://wiki.tcl.tk/_/revision?N=23626&V=24] check-in: 16c9b455f1 user: andy tags: trunk
19:02
Put everything in a wibble package and a wibble namespace. Add [handle] to register a zone handler. Create [listen] command. [http://wiki.tcl.tk/_/revision?N=23626&V=23] check-in: e13c7a2969 user: andy tags: trunk, version-0.1
18:13
Convert incoming HTTP header keys to lowercase. Improve range request handling. [http://wiki.tcl.tk/_/revision?N=23626&V=22] check-in: 2170975245 user: andy tags: trunk
17:33
Fix HTTP parser to not be greedy, or else it includes trailing spaces in the protocol name. [http://wiki.tcl.tk/_/revision?N=23626&V=21] check-in: 0c27dc620b user: andy tags: trunk
17:31
Centralize HTTP header capitalization logic. Permit extra spaces in HTTP. Only emit Content-Range when a range was requested. Remove [bgerror]. [http://wiki.tcl.tk/_/revision?N=23626&V=20] check-in: 5b4c6ea97e user: andy tags: trunk
15:56
Update [get] to abort the coroutine on excessively long header lines, indicative of DoS attempts. [http://wiki.tcl.tk/_/revision?N=23626&V=19] check-in: 1ac3ccc2ff user: andy tags: trunk
06:26
Remove extra closing bracket from [notfound]. [http://wiki.tcl.tk/_/revision?N=23626&V=15] check-in: e8289016ec user: andy tags: trunk
04:52
Oops, forgot one place that needs [operation]. [http://wiki.tcl.tk/_/revision?N=23626&V=14] check-in: 232fe38f72 user: andy tags: trunk
04:48
Add [operation], and make zone handlers use it instead of return. [http://wiki.tcl.tk/_/revision?N=23626&V=13] check-in: d399ee9291 user: andy tags: trunk
2009-05-29
23:09
Use iso8859 encoding per HTTP compliance. Don't use the forbidden identity encoding. [http://wiki.tcl.tk/_/revision?N=23626&V=7] check-in: 11d5f7ec5d user: andy tags: trunk
22:47
Add comment describing $root. Remove $statuscodes. Rename some variables. Significantly rework [process]. [http://wiki.tcl.tk/_/revision?N=23626&V=4] check-in: 986021df18 user: andy tags: trunk
19:30
Rename [directory] zone handler to [dirlist]. [http://wiki.tcl.tk/_/revision?N=23626&V=3] check-in: 5c52be654c user: andy tags: trunk
19:12
Add missing comment describing [getresponse]. [http://wiki.tcl.tk/_/revision?N=23626&V=2] check-in: ae8c254329 user: andy tags: trunk