NaviServer AOLserver Differences

MainSource Code Downloads API Documentation Mailing Lists Bugs Developers

Incompatible changes in Tcl commands

ns_register_proc: The unused connid argument passed to callback procs registered with ns_register_proc have been removed. The connid is optional and deprecated in AOLserver and so should be removed in all cases. This applies to all other request-like NaviServer/AOLserver commands which previously took a connid argument.

ns_register_filter: The arguments passed to callback procs registered with ns_register_filter are reversed:

  # NaviServer
  proc myfilter {when argx argy args} {
      ns_log notice "myfilter: $when $argx $argy $args"
  ns_register_filter preauth GET /foo* myfilter arg1 arg2 arg3

  # AOLserver
  proc myfilter {filter_args when} {
      ns_log notice "myfilter: $when $filter_args"
  ns_register_filter preauth GET /foo* myfilter {arg1 arg2 arg3)

ns_cache: This used to be a loadable module, but the commands were later incorporated into both NaviServer and AOLserver. This happened after the split and the API is different in both servers. Both servers differ from the loadable module. Some compatibility wrappers exist in NaviServer sufficient to run OpenACS. Read more about the ns_cache commands:

Incompatible changes to the C API


Changes to the configuration keys

You probably don't want to explicitly set the thread stacksize on NaviServer - the default is left to the OS, which on Linux is about 2MB. This is fine on 64bit machines, but you may want to set this lower if you run a high number of threads on 32bit machines, otherwise you risk running out of address space. AOLserver always sets the stacksize, defaulting to some few hundreds of KB, so you often need to set it higher in the config file or you risk blowing the stack with deeply nested Tcl proc calls.


NaviServer features missing in AOLserver


AOLserver features missing in NaviServer

ns_share and the -shared argument to ns_set have long been depreciated in AOLserver and have been removed in NaviServer. The ns_var C-coded command was removed and replaced with a Tcl wrapper around the nsv commands, which replace these sharing mechanisms.

There's a replacement module nsshare which implements the ns_share command. The ns_set --shared is still TODO.