summaryrefslogtreecommitdiff
path: root/Mailman/pythonlib/smtplib.py
diff options
context:
space:
mode:
authorbwarsaw2000-06-28 18:40:48 +0000
committerbwarsaw2000-06-28 18:40:48 +0000
commit2ac16aece23be336921e9285b6a83be4752a8af8 (patch)
tree0021afb32b3b74ab49a09147deaadd80c5236c39 /Mailman/pythonlib/smtplib.py
parentf03a12908abc83c1970281e3d4b5e8f41e6347fa (diff)
downloadmailman-2ac16aece23be336921e9285b6a83be4752a8af8.tar.gz
mailman-2ac16aece23be336921e9285b6a83be4752a8af8.tar.zst
mailman-2ac16aece23be336921e9285b6a83be4752a8af8.zip
Unlock(): Use unconditionally flag to avoid NotLockedErrors.
Lock(): Always re-load the config.db file once the lock has been acquired. This fixes a very serious data consistency bug, explained briefly as: - Process A opens a list unlocked, loading the marshaled dictionary. Process A then tries to acquire the list lock. - Meanwhile, Process B does the same, but it actually acquires the lock first. Process B makes some changes, saves the list's marshal and relinquishes the lock. - Process A now acquires the lock. However, its database is now out-of-date because of the Process B write. It does its work and blithely rewrites the marshal, blowing away all of Process B's changes. The solution is to reload the marshal when the list lock is acquired. __init__(): Use the new Lock() semantics more efficiently.
Diffstat (limited to 'Mailman/pythonlib/smtplib.py')
0 files changed, 0 insertions, 0 deletions