Forum OpenACS Development: [ANNOUNCE] NaviServer 4.99.32 and 5.0.1 Bug-Fix Releases

Dear all,

We are pleased to announce the availability of two new bug-fix releases of NaviServer: NaviServer 4.99.32 and NaviServer 5.0.1.

Both releases contain backported fixes only. No new features have been added; all ongoing development continues on the main branch. These releases are intended for users who prefer to stay with the 4.99 or 5.0 lines for stability, while benefiting from selected improvements and fixes.

Contributors:  

  • Gustaf Neumann
  • Hector Romojaro
  • Nicky Johnstone
  • Oleg Oleinick
Source Code & Tags   Tarball Downloads   Docker Images for 4.99.32 and 5.0.1 (alpine | trixie, linux/amd64 | linux/arm64)
=======================================
NaviServer 5.0.1, released 2025-09-23
=======================================

 33 files changed, 463 insertions(+), 129 deletions(-)

Bug Fixes:
----------

  - Prevented tail truncation of disk-spooled file uploads under
    certain boundary conditions.

  - Fixed potentially harmful negative timeout calculation in driver
    thread by ensuring safe default and assertions

  - Fixed incorrect return type in TLS context initialization error
    path (TCL_ERROR instead of NS_ERROR).

  - connchan: Fixed potential NULL dereferences with debug mode.

  - Strengthened UTF-8 validation in Ns_Valid_UTF8():
    * Added stricter checks for continuation bytes
    * Prevented overlong encodings and surrogate ranges
    * Improved diagnostic messages and error reporting

  - Corrected Windows/MSVC build issues:
    * Adjusted 'nargs' type in SetCreateObjCmd() to avoid stack
      corruption warnings
    * Fixed buffer size in _mktemp_s() usage
    * Made ns_mkdtemp() visible in Windows builds
    * Corrected Ns_SockConnectUnix() mistype in Windows build
    * Updated ns/interps/CGIinterps for Windows compatibility
    * Provided TCLSH_PROG for Makefile generation
    * Improved handling of EXEEXT and MINGW-specific defines

  - Fixed build system bugs:
    * Corrected use of tabs in Makefiles to avoid GNU make errors
    * Fixed cross-compilation test execution failures
    * Updated MSVC Makefiles for modern builds

  - Fixed test suite issues:
    * Skipped new tests requiring "lmap" when running under Tcl 8.5
    * Added comprehensive regression tests for UTF-8 validator
    * Adapted "ns_strcoll" tests for macOS Sequoia collation order changes

Documentation and Configuration:
--------------------------------

  - Clarified default values and meaning of "schedsperthread" and
    related scheduling parameters in sample configs and docs.

  - Minor corrections in comments and error messages for platform-specific
    builds (e.g., MINGW).

Notes:
------

  - This is a bug-fix only release for the 5.0 branch.
  - It contains selected backports from the head branch that improve
    robustness, portability (especially Windows/MSVC), and test coverage,
    but introduces o new features.
=======================================
NaviServer 4.99.32, released 2025-09-23
=======================================

 7 files changed, 80 insertions(+), 17 deletions(-)

Bug Fixes:
----------

  - Fixed multipart/form-data parsing in 'ns_parseformfile': correct
    boundary/end calculations and copied byte count to prevent
    truncated or misaligned part reads under spooling.

  - Adjust OpenACS sample configuration file: set
    'nslog.checkforproxy' based on '$reverseproxymode' (was
    '$proxy_mode') to match revised reverse proxy naming. This bug
    affected mostly users which were using the example configution
    file without local adaptions.

  - Return correct Tcl error code in TLS context setup:
    Ns_TLS_CtxServerInit() now returns TCL_ERROR when the certificate
    parameter is missing (was NS_ERROR), aligning with Tcl
    conventions.

  - Make driver poll timeout robust: handle "no deadline" (TIME_T_MAX)
    with a safe default, round up sub-millisecond waits, and assert
    against negative timeouts to avoid indefinite waits.


Documentation Updates:
----------------------

  - Refresh README build instructions and man pages to reflect actual
    version numbers

  - Clarify 'ns_return' manpage: document that the headers argument
    accepts a setid and defaults to 'ns_conn outputheaders' when
    omitted.

  - Correct 'ns_set' examples to use 'ns_set create' (was 'ns_set new').

  - Revise 'ns_issmallint' description to reflect unsigned 16-bit range
    semantics instead of digit-count based description.

Tests:
------

  - Add multipart upload tests validating spooling behavior and file
    part sizes for small (2 KB) and larger (~16 KB) uploads.

  - Make 'ns_http.test' portable across platforms by introducing
    '$devnull' and '$contentfile' helpers.

  - Relax 'ns_strcoll' expectations (glob match) to accommodate macOS
    Sequoia 15.4 collation order changes, while preserving
    deterministic sorting under specified locales.

Notes:
------

  This is a bug-fix release for the 4.99 line (no new features) and
  includes select backports from 5.0 that improve robustness,
  documentation accuracy, and test portability. For Tcl9 compatibility
  please use NaviServer 5.*.