AOLserver Modules and Other Stuff

by Rob Mayoff


2011/10/03: I doubt anyone cares about anything on this page anymore. I certainly don't. I've changed the way I host my web pages, and thereby caused all of the "Browse source" links on this page to stop working correctly. The download links still work though.

Modules on this page

Other stuff on this page

Other pages

The source for some of these things can be viewed here.

These are some modules I have written for AOLserver 3.0 and later.

dqd_threadpool: Thread Pool and Job Queue Management (Browse source)
This module manages one or more thread pools and job queues. A Tcl program (such as an ADP or a Tcl page) can add Tcl scripts to the job queue. The queue has a pool of worker threads which execute the jobs asynchronously. The Tcl program can retrieve the results of the jobs after they have finished executing.

Change history:

  • 2004/10/15: Release 1.1. Use AOLserver 4.0.8 Makefile.
  • 2000/11/22: Release 1.0.

dqd_utils: Various Utilities (Browse source)
This module adds several Tcl commands to AOLserver:
  • dqd_internalredirect - a wrapper around the C API function Ns_ConnRedirect. This lets you send back the contents of a different URL (from the same server) without letting the client know.
  • dqd_md5 - computes MD5 hashes (cryptographic checksums).
  • dqd_nssetToList - extracts an ns_set's values into a Tcl list.
  • unlist - assigns the elements of a Tcl list to individual Tcl variables, efficiently. Yes, I left off the dqd_ prefix on this one.
  • dqd_detachfile and dqd_attachfile - share a Tcl channel across requests/threads/interpreters.
  • dqd_register_proxy - register a proc to handle proxy requests from browsers
  • dqd_rowsToXml - convert database rows to XML
  • dqd_rowsToJavaScript - convert database rows to JavaScript

Change history:

  • 2006/11/02: Release 1.7. Escape newlines in dqd_rowsToJavaScript.
  • 2005/05/28: Release 1.6. Remove extra commas from dqd_rowsToJavaScript output to make Safari like it better and to make it JSON-compliant.
  • 2005/05/26: Release 1.5. dqd_rowsToXml, dqd_rowsToJavaScript.
  • 2004/10/15: Release 1.4. Drop support for Tcl 7. Use AOLserver 4.0.8 Makefile.
  • 2001/01/04: Release 1.3. dqd_register_proxy.
  • 2000/07/06: Release 1.2. Finally got around to making this compile with AOLserver 3.0 final due to e-mail from Li Chen.
  • 2000/03/08: Release 1.1. dqd_detachfile, dqd_attachfile.
  • 2000/01/20: Release 1.0. Added dqd_md5, dqd_nssetToList, unlist.
  • 1999/10/18: Original unnumbered release.

dqd_log: External Logging (Browse source)
This module allows AOLserver to send access log entries directly to an external program. I wrote it so that I could manage my access logs with multilog.

Change history:

  • 2003/10/16: Release 2.3. Do not crash under AOLserver 4.
  • 2003/10/15: Release 2.2. Use AOLserver 4.0.8 Makefile.
  • 2003/03/06: Release 2.1. Fixed some typos in the documentation.
  • 2001/05/14: Release 2.0. Incompatible change. Now writes to a specified fd instead of running a program.
  • 2001/01/20: Release 1.1. Added AccelAddresses.
  • 2000/09/18: Release 1.0.

nscache: Tcl commands for using NsCache C API (Browse source)
This is a module that provides Tcl commands for accessing AOLserver 3's NsCache API. An NsCache is a hash table that automatically manages either its memory usage or the lifetimes of its contents. I originally wrote this module while at ArsDigita and included it in the ArsDigita AOLserver distribution. Since the collapse of ArsDigita it seems to be difficult to come by. Perhaps some kind soul will put it in sourceforge...

This module is sometimes referred to as ns_cache. I mention that here so search engines will find this page when you search for ns_cache.

dqd_db2: DB2 Database Driver (Browse source)
This is a database driver that lets AOLserver 3.0 access DB2 Universal Database version 6.1 (and maybe other versions). It includes support for accessing character and binary large objects (CLOBs and BLOBs).

Note: this will not compile out of the box with AOLserver 3.0 final. I wrote this back when AOLserver 3.0 was in beta, and the makefiles were changed since then, so this won't compile out of the box anymore. I don't use DB2 anymore or have it installed, so I haven't bothered fixing it. If you need to get this working and need help, send me e-mail.

Change history:

  • 1999/12/22: Release 1.0.1. Fix typo in the sample nsd.tcl contained in README. Thanks to Dave Weis.
  • 1999/10/18: Release 1.0.

dqd_tclpages: Tcl Pages (obsolete)
AOLserver 2.3 allowed you to put .tcl files in your PageRoot. When a visitor requested the file, AOLserver would run the file as a Tcl script. For some reason, they removed this capability from the original release of AOLserver 3.0. This module adds the capability back in to AOLserver 3.0. Of course then they went and put the feature back in with release 3.0b6, so this module is now obsolete.

Change history:

  • 1999/12/15: Release 1.1. Removed AtClose support to fix compile problems with AOLserver 3.0b4.
  • 1999/08/07: Fixed possible memory leak where I forgot to call Ns_DStringFree.
  • 1999/08/06: Fixes for clean Solaris compile. Thanks to

dqd_dirindex: Dynamic Directory Indexing (obsolete)
This module allows AOLserver to dynamically generate indexes for directories that don't have index files (e.g. index.html). AOLserver 2.3.3 had this capability but it was removed in the first release of AOLserver 3.0. This module restores the capability. But then they went and put the feature back in starting with release 3.0b6, so this module is now obsolete.

Change history:

  • 2000/01/28: Release 1.0.

ini2tcl: ini to Tcl config translator (Browse source)
This perl script translates AOLserver .ini configuration files into .tcl configuration files, preserving comments and indentation. It does a significantly better job than the translate-ini script that comes with AOLserver.

Sample usage:

perl ini2tcl < nsd.ini > nsd.tcl

Change history:

  • 2000/03/08: Release 1.0.

Sample Bug Report for AOLserver (Browse source)
This tarball contains the bug report I sent to DCI when I found and fixed a bug in the ADP processor. I use it as a template for all the bug reports I send. It contains a self-contained test case (including a complete nsd.tcl), a patch, and an HTML file with a description of the bug and instructions on how to run the test case.