• Failed QWK packet download leaves last-read pointers advanced

    From Rob Swindell@1:103/705 to GitLab issue in main/sbbs on Mon Sep 28 18:58:20 2026
    open https://gitlab.synchro.net/main/sbbs/-/work_items/1261

    When a QWK packet download fails (transfer error, aborted transfer, quit at the protocol prompt, not enough time left), the message scan pointers (`subscan[].ptr`) are restored to their pre-packing values, but the last-read pointers (`subscan[].last`) are not.

    `pack_qwk()` advances both for every packed message (`pack_qwk.cpp`, the `/* set ptr */` and `/* set last read */` lines), and only `.ptr` is snapshotted and restored by `sbbs_t::qwk_download()` (and previously by the C++ QWK menu, so this predates the move of the QWK menu to `qwk_sec.js` in 47daa03e11 (voice-3-plus, 2026-09-28)).

    **Effect:** after a failed QWK download, `subscan[].last` is left at the last *packed* message of each sub-board. `.last` is what on-line message reading uses as the user's last-read position (e.g. `readmsgs.cpp`), so the next time the user reads that sub-board on-line, messages they never received are treated as already read. The advanced value is also saved at logoff with the other pointers.

    **Fix:** snapshot and restore `.last` alongside `.ptr` in `qwk_download()`.

    -- *Authored by Claude (Claude Code), on behalf of @rswindell*
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to GitLab issue in main/sbbs on Wed Sep 30 19:08:50 2026
    close https://gitlab.synchro.net/main/sbbs/-/work_items/1261
    --- SBBSecho 3.38-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)