• src/ssh/TODO.md deucessh-

    From Deuc¿@VERT to Git commit to main/sbbs/m on Wed Mar 25 23:06:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bcee61f3a919481f1621dc60
    Modified Files:
    src/ssh/TODO.md deucessh-conn.h ssh-auth.c ssh-chan.c ssh-conn.c src/ssh/test/dssh_test_internal.h
    Log Message:
    Eliminate void functions that swallow errors

    - handle_banner: void  int; callers propagate non-parse errors
    - maybe_replenish_window: void  int; read callers propagate
    - demux_dispatch, demux_open_confirmation, demux_channel_open:
    void  int; demux thread terminates session on non-parse errors,
    tolerates DSSH_ERROR_PARSE (malformed peer data)
    - dssh_session_reject: void  int (public API change)
    - bytebuf_write: guard capacity==0 to prevent SIGFPE (% 0)
    - TODO: document chan_type==0 data delivery race (item 12)

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thu Mar 26 05:47:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6afdd20feabc24162d9e7086
    Modified Files:
    src/ssh/TODO.md deucessh-auth.h server.c ssh-auth.c ssh-internal.h ssh.c
    Log Message:
    Add dssh_auth_set_banner() API; sarcastic example server

    New public API: dssh_auth_set_banner(sess, message, language)
    queues a banner to be sent before the next auth response.
    Callbacks can set new banners dynamically. NULL message cancels.
    Empty message rejected with DSSH_ERROR_INVALID per RFC 4252 s5.4.
    Banners flushed in send_auth_success and send_auth_failure,
    and at the top of the auth loop (for the initial pre-auth banner).
    Pending banner freed on session cleanup.

    Example server enhancements:
    - Welcome banner before auth
    - Sarcastic per-callback banners showing username/password/key info
    - 75% random auth rejection with 16 quips
    - publickey auth support with same rejection odds
    - Debug, unimplemented, and global request callbacks registered
    - Banner logging via set_banner() helper
    - All session callbacks now wired up

    TODO: note auth/client/pw_changereq_send_fail timing flake.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

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