https://gitlab.synchro.net/main/sbbs/-/commit/e9e4654c9e69e8778f4aa80d
Modified Files:
src/sbbs3/pack_qwk.cpp
Log Message:
Don't deliver a QWK packet built from files that failed to write
pack_qwk() never checked whether its writes to MESSAGES.DAT, HEADERS.DAT, VOTING.DAT or the .NDX files succeeded, and ignored every fclose() result.
When the temp directory's volume stopped accepting writes, the buffered data (even MESSAGES.DAT's 128-byte header) was lost at close, the empty files were archived, and the packet was reported as a success. QWK hubs received 292-byte packets containing 0-byte MESSAGES.DAT/HEADERS.DAT, failed to unpack them and renamed them *.bad. Because the pack "succeeded", the hubs' message pointers were also advanced, so the messages meant for those packets were never sent.
Now each of those files is closed through a check of ferror() and fclose(),
and MESSAGES.DAT must be at least one QWK block long before it is archived.
Any failure is logged via errormsg() and no packet is created, which also leaves the message pointers alone so the messages go out in the next packet.
Fixes #1244
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net