• src/sftp/sftp_client.c

    From Deucе@VERT to Git commit to main/sbbs/master on Sat Mar 14 18:14:10 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/678a9471557ba4c43e11ab77
    Modified Files:
    src/sftp/sftp_client.c
    Log Message:
    Free error information in sctpc_end()

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Apr 24 23:01:06 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/2710c20e54f8a1affdcfb024
    Modified Files:
    src/sftp/sftp_client.c
    Log Message:
    sftp: drop pthread_key TLS for last-error, store on state struct

    pthread_key_create / pthread_setspecific / pthread_getspecific are not
    shimmed by xpdev/threadwrap.h (only pthread_mutex_* is), so sftp_client.c
    did not build on Win32 or any other non-pthreads target. Replace the TLS
    slot with a plain uint32_t last_error field on struct sftp_client_state; state->mtx already serializes every op, so no new lock is needed. Public
    API (sftpc_get_err and the bool returns from sftpc_open/read/write/etc.)
    is unchanged.

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

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri May 1 09:47:56 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/977697e41fc2c88f6417d4b0
    Modified Files:
    src/sftp/sftp_client.c
    Log Message:
    sftp client: eager-bail per parse step in parse_readdir

    Restructure the readdir entry-parse loop so each of the three calls
    (filename getstring, longname getstring, fattr getfattr) is
    followed immediately by its NULL check, rather than running all
    three before checking any of them. On corrupt input this skips
    one or two doomed parses on the wreckage of the failing one, and
    the PENDING_RECORD error string now identifies which of the three
    steps failed and which entry of N — much easier to triage than the
    old "getstring/getfattr failed at entry N" generic.

    No on-the-wire change.

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

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