Remediated an unrecoverable problem in CDB_USETABLE.
authorArt Cancro <ajc@citadel.org>
Sun, 4 Jun 2023 03:41:01 +0000 (18:41 -0900)
committerArt Cancro <ajc@citadel.org>
Sun, 4 Jun 2023 03:41:01 +0000 (18:41 -0900)
commitd8de66ffdc9d5f595357f76a78339bb29d094891
treef5a0790cf3d1a6844e43c3142e6d080568758277
parente9cac79780cb6870fe23d1c22d5f8f07f73bcbc3
Remediated an unrecoverable problem in CDB_USETABLE.

Due to a missing null terminator, records were being stored with
excessive lengths, resulting in records whose keys did not match.
Unfortunately this means we have to zero out the table during an upgrade
to Citadel Server 975.  No user data will be lost, but incoming data
such as RSS feeds and POP3 retrievals may produce some unwanted
duplicates.

The new implementation not only remediates this problem, but also works
using a hash of the item rather than the item itself.  This produces
records that are only 12 bytes long.
citadel/server/citadel_defs.h
citadel/server/database.c
citadel/server/modules/expire/serv_expire.c
citadel/server/modules/upgrade/serv_upgrade.c
citadel/server/server.h
citadel/utils/ctdl3264.c
do-release.sh