• docs/v322_new.md src/sbbs3/js_bbs.cpp qwk.cpp

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Wed Sep 30 19:08:46 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e97a1efe3645baaa65ae9f5c
    Modified Files:
    docs/v322_new.md src/sbbs3/js_bbs.cpp qwk.cpp
    Log Message:
    QWK: restore the resume pointer and clean up after a failed download

    Fixes #1261
    Fixes #1260

    pack_qwk() advances both of a sub-board's pointers for every message it
    packs: the new-scan pointer and the on-line reader's resume position. When
    the download then failed (aborted transfer, quit at the protocol prompt,
    not enough time), qwk_download() put back only the new-scan pointers, so
    the next on-line read of that sub-board started at the last packed
    message rather than where the user had left off. Save and restore both.

    bbs.qwk_download() and bbs.qwk_upload() also depended on setup that only
    the QWK section stub does around them: refreshing the user's directory
    list (and sub-board list for QWK network nodes), and clearing the node's temporary directory afterwards. qwk_download() removed only the .qwk
    file, leaving MESSAGES.DAT, the index files, CONTROL.DAT and the rest in
    temp for the remainder of the session. Both methods now do that setup themselves, and the download clears the temp directory when done, so a
    custom shell or module can call them from anywhere.

    Verified on a scratch terminal server, quitting at the protocol prompt:
    before, the resume pointer had advanced from 0 to 1 and seven packet files remained in temp; after, both pointers are back at 0 and temp is empty.

    Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
    --- SBBSecho 3.38-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)