• src/sbbs3/websrvr.cpp

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Thursday, February 05, 2026 16:10:03
    https://gitlab.synchro.net/main/sbbs/-/commit/4281523d6b7b0d41514ac7ff
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    If VHOSTS and ONE_HTTP_LOG options are enabled, log VHOST instead of HOST value

    As suggested in the Virtual Hosts section of https://httpd.apache.org/docs/2.4/logs.html, replacing the first argument
    with the vhost value makes the (single/combined) log file output more useful with virtual hosts.

    This is to address issue #1062
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, February 05, 2026 20:24:44
    https://gitlab.synchro.net/main/sbbs/-/commit/f3cae23fec4fe6dee108db25
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Fix likely harmless typo in previous commit

    caught via GCC warning: operation on `host' may be undefined
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, February 06, 2026 21:35:09
    https://gitlab.synchro.net/main/sbbs/-/commit/52e1ee602a8a3f6439e168e3
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Enable periodic cleanup and logging of the rate-limiting status

    ... using debug-level log messages.

    Ideally these details would be reported via MQTT (instead or in addition)
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sunday, February 08, 2026 22:34:34
    https://gitlab.synchro.net/main/sbbs/-/commit/5778df870947ebf898c48d13
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Revert "If VHOSTS and ONE_HTTP_LOG options are enabled, log VHOST instead of HOST value"

    This reverts commit 4281523d6b7b0d41514ac7ff52a999292c9d2d26.
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Thursday, February 12, 2026 01:16:47
    https://gitlab.synchro.net/main/sbbs/-/commit/511ea86a92674be9e91acbc2
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    The Refer [sic] and User-agent custom log format directives need NULL protect

    These pointers can be null or blank, so do the CLF '-' thing
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Thursday, February 12, 2026 01:22:23
    https://gitlab.synchro.net/main/sbbs/-/commit/d7a5b7e1dd969e9972e1a41e
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    The Custom Log Format directives are case-sensitive (%h != %H)
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Monday, February 16, 2026 21:09:27
    https://gitlab.synchro.net/main/sbbs/-/commit/b210bfee35785deaeb57abdb
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Add %p (server port) to custom log format supported directives

    <nelgin> DigitalMan would you mind implementing %p for server port please.
    The apache vhost combined logfile uses it.
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tuesday, February 24, 2026 16:28:36
    https://gitlab.synchro.net/main/sbbs/-/commit/fd0b9d2bc21b13fa9840e190
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Remove (long-deprecated) access.ars file support (use webctrl.ini instead)

    Fix issue #1083
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From DaiTengu@VERT to Git commit to main/sbbs/master on Wednesday, October 14, 2026 20:32:26
    https://gitlab.synchro.net/main/sbbs/-/commit/d217da6f41ee2c4e931ecb7f
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Make RemoteIPHeader actually reach the access log
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Wednesday, October 14, 2026 20:32:26
    https://gitlab.synchro.net/main/sbbs/-/commit/574a32b0fdcd5033cce7267a
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Merge branch 'remoteipheader-access-log' into 'master'

    Make RemoteIPHeader actually reach the access log

    See merge request main/sbbs!735
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, October 22, 2026 10:11:17
    https://gitlab.synchro.net/main/sbbs/-/commit/6b8902bab7a555c145012dbc
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Web Server: don't let lingering client sockets stall termination

    close_socket() half-closes the socket and then waits for the peer to
    close its side, for up to max_inactivity seconds in a single blocking
    call that ignored terminate_server. Clients that never close (abandoned
    scraper connections, typically) held each session thread there for up to
    a minute after its inactivity timeout. By then close_session_socket() had already removed the session from current_connections, so
    shutdown_sessions() could not reach it, and a server stop or recycle
    waited on these threads for minutes.

    Poll in one-second slices and stop waiting once terminate_server is set.
    The normal-operation bound is unchanged. This also applies to sockets
    the listener thread rejects (rate-limited, ip-silent.can, max clients),
    which go through the same function.

    Also, after "!TIMEOUT waiting for N active clients to disconnect", no
    longer follow it with "Done waiting for active clients to disconnect".

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, October 22, 2026 10:11:17
    https://gitlab.synchro.net/main/sbbs/-/commit/85b2ca4b23bad6e3786ca893
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Web Server: don't keep a stale content handler after PathInfoIndex

    is_dynamic_req() runs once before a directory's webctrl.ini is read and
    again after PathInfoIndex resolves the request to the index script. The
    first pass, seeing the original path's extension (e.g. /robots.txt or
    /x.md), stored the matching web_handler.ini handler in req.xjs_handler,
    and the re-check never cleared it, so the handler (txt_handler.js, md_handler.js, ...) ran against the index script instead: the script's
    source was rendered as a text page, and requests that should reach the
    script never did. Clear the handler on every check.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Thursday, October 22, 2026 10:11:17
    https://gitlab.synchro.net/main/sbbs/-/commit/00ce71ebc56082e4af1c90e2
    Modified Files:
    src/sbbs3/websrvr.cpp
    Log Message:
    Web Server: fix doubled byte count for large non-chunked POSTs

    A non-chunked POST body larger than MAX_POST_LEN (4 MiB) is spooled to a
    temp file by post_to_file(), which adds each read to req.post_len. That
    field still held the Content-Length, so it ended at twice the body size
    and every such request logged a false "!ERROR Browser said they sent N
    bytes, but I got 2N". The following clamp to the Content-Length hid the
    error from everything else, so the stored body and the length seen by
    scripts were already correct.

    Zero post_len before spooling, as the chunked path already does.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net