Forum OpenACS Development: ANNOUNCE: NaviServer 4.99.13 available

I am pleased to announce the availability of NaviServer 4.99.13 (see [1] and [2]). NaviServer 4.99.13 was tested with OpenACS 5.9.0 and the newest version on the oacs-5-9 branch. See below for the changes between NaviServer 4.99.12 and 4.99.13.

all the best
-gustaf neumann

NaviServer 4.99.13, released 2016-10-15

 143 files changed, 3051 insertions(+), 2091 deletions(-)

New Features:
  - New Tcl functions:

      * ns_parseurl /url/
        Parse the provided URL into its parts and
        returns these in the form of a Tcl dict. The function supports
        IP-literal notation as specified in RFC 3986.

      * ns_absoluteurl /incompleteurl/ /baseurl/
        Construct a completed URL from a incomplete (e.g. relative)
        URL by taking as many parts as possible from the provided base

  - ns_striphtml: The function honors now numeric entities between 33
    and 255 instead of ignoring it.

  - New configure option for error.log: "logrollfmt", which can be
    specified in (section ns/parameters).  This option has the same
    interpretation as already provided for access log and provides
    timestamp based log file naming. This option can reduce back-up
    demands for large error.logs significantly (since the names are
    stable) and increases the orthogonality of options (in respect to

  - Ns_ParseUrl(): add support for protocol agnostic URLs (starting
    with two slashes as defined in RFC 3986).

  - ns_deletecookie: mark deleted cookie as non-scriptable to improve
    ratings on security scanners.

Bug Fixes:
 - Fix for [naviserver:bugs] #76: ns_configsections returned
   only one section (bug introduced in 4.99.12).
    - Fix URL parser in Ns_ParseUrl(), could return incorrect results
   when it received an URL in IP-literal notation (bug introduced in
 - Fix for potentially incorrect mime-types in fastpath, when static
   gzip is activated. The mime type was incorrectly set to
   application/gzip, when the static gzipped file was returned. This
   bug was introduced in 4.99.12, many thanks to David Osborne for

Documentation improvements:
  - Documenting new functions
  - Several small cleanups
  - Improved sample config files

C API Changes:
   - using unsigned int for ports
       Ns_SockListenUnix(), Ns_SockBindUnix()
   - using "long" for secs
       Ns_SockSetDeferAccept(), ns_poll(), Ns_DiffTime()
   - makeing argument types more precise
       NsPoll(), Ns_SockBinderListen(), Ns_GetNameForGid(), Ns_ThreadStackSize()

Code Changes:
 - Extended regression test
 - Improved source code documentation

 - C-Code cleanup:
   * Removed all implicit type-conversions, signed/unsigned comparisons
     as flagged by the following gcc/clang flags (ensure cleanness on 64bit)
     -Wconversion -Wsign-conversion -Wfloat-conversion -Wsign-compare

   * Reduced number of return statement before end of function
   * Reduced variable scopes
   * added types for uid_t, gid_t if not defined
      * Remove calls to Tcl functions which are deprecated/ going to be
     deprecated by Tcl. Code can be compiled now with -DTCL_NO_DEPRECATED
        * Converted all remaining Tcl_CmdProc to Tcl_ObjCmdProc
    NsTclAdpStatsCmd    -> NsTclAdpStatsObjCmd
    NsTclCrashCmd       -> NsTclCrashObjCmd
    NsTclHrefsCmd       -> NsTclHrefsObjCmd
    NsTclLibraryCmd     -> NsTclLibraryObjCmd
    NsTclMkTempCmd      -> NsTclMkTempObjCmd
    NsTclParseHeaderCmd -> NsTclParseHeaderObjCmd
    NsTclQuoteHtmlCmd   -> NsTclQuoteHtmlObjCmd
    NsTclStripHtmlCmd   -> NsTclStripHtmlObjCmd
    - Tcl-Code
   * tcl/aolserver-openacs.tcl:
     Register delete trace to run nsf::finalize in a safe state (before
     any other c-based finalize handler are fired)
   * regression test: Replaced Tcl "eval" by expand operator