• src/ssh/TODO.md ssh-conn.c

    From Deuc�@VERT to Git commit to main/sbbs/master on Tuesday, March 24, 2026 20:58:43
    https://gitlab.synchro.net/main/sbbs/-/commit/ee785accd1f8c627cca4da09
    Modified Files:
    src/ssh/TODO.md ssh-conn.c
    Log Message:
    Delete dead x11 type_len==2 check (bug 6)

    The check `type_len == 2 && memcmp(ctype, "x11", 3)` compared
    3 bytes against a 2-byte string � could never match. The x11
    rejection is fully handled by the type_len==3 check.

    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wednesday, March 25, 2026 23:06:00
    https://gitlab.synchro.net/main/sbbs/-/commit/3007d949c00e9f351be790e1
    Modified Files:
    src/ssh/TODO.md ssh-conn.c
    Log Message:
    Fix channel ID collision on uint32_t wrap

    alloc_channel_id() now scans the active channel table to skip
    IDs already in use. Returns DSSH_ERROR_ALLOC if all 2^32 IDs
    are exhausted (the application has made some terrible mistakes).

    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Monday, March 30, 2026 14:17:14
    https://gitlab.synchro.net/main/sbbs/-/commit/a6fc65e8269ab5a07c35f3a9
    Modified Files:
    src/ssh/TODO.md ssh-conn.c
    Log Message:
    Fix send_channel_request_wait race: CLOSE clobbering successful response

    When the server accepted a channel request (CHANNEL_SUCCESS) and then immediately closed the channel (CHANNEL_CLOSE), the client's demux
    thread could process both messages before the client thread woke up.
    The post-loop check `if (sess->terminate || ch->close_received)` then
    returned DSSH_ERROR_TERMINATED even though request_responded was true, discarding the successful response and causing dssh_chan_open to return
    NULL.

    Fix: capture `responded` under buf_mtx; only return TERMINATED when
    the loop exited without getting a response. If the server explicitly
    answered, honor that answer regardless of close_received.

    Observed as test_self_exec_exit_code failing under -j16, predominantly
    with RSA variants where keygen CPU contention widens the scheduling
    window between the two demux dispatches.

    Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net