• src/ssh/deucessh-conn.h ssh-conn.c ssh-internal.h ssh-trans.c ssh-tran

    From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Mar 30 10:39:12 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/ac54d2f4d12d779f0349b66b
    Modified Files:
    src/ssh/deucessh-conn.h ssh-conn.c ssh-internal.h ssh-trans.c ssh-trans.h src/ssh/test/dssh_test_internal.h test_conn.c
    Log Message:
    Implement ZC core; rewire stream API on top of ZC internals

    Factored send_packet_inner into tx_finalize (DSSH_PRIVATE) which
    handles padding, MAC, encrypt, send, and counters given a payload
    already in tx_packet[9]. send_packet_inner now copies payload then
    calls tx_finalize. drain_tx_queue promoted to DSSH_PRIVATE.

    ZC core in ssh-conn.c:
    - zc_getbuf_inner: acquires tx_mtx, waits for rekey, drains tx_queue,
    checks remote_window/remote_max_packet under buf_mtx, returns
    pointer into tx_packet data area past the channel header
    - zc_send_inner: fills channel header (msg_type, channel_id,
    data_type_code, length) at tx_packet[9], calls tx_finalize,
    deducts from remote_window, releases tx_mtx
    - zc_cancel_inner: releases tx_mtx without sending

    Stream write (dssh_chan_write) rewired: calls zc_getbuf_inner, memcpy, zc_send_inner. Eliminates the per-packet malloc that send_data used. DSSH_ERROR_NOMORE (window full) mapped to 0 bytes sent.

    Demux RX data path rewired: handle_channel_data/extended_data call
    the channel's zc_cb for new-model channels (releasing buf_mtx first,
    setting _Thread_local in_zc_rx guard). Stream channels use
    stream_zc_cb which copies into ring buffer under buf_mtx.

    Public ZC API: dssh_chan_zc_open, dssh_chan_zc_getbuf,
    dssh_chan_zc_send, dssh_chan_zc_cancel. All validate ch, check
    in_zc_rx guard, delegate to inner functions.

    Event callback setters: dssh_chan_set_event_cb,
    dssh_session_set_event_cb.

    Deleted send_data/send_extended_data (old malloc-based send path).

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net