summaryrefslogtreecommitdiffstats
path: root/src/cleanup/bug1.in
blob: bda18cfad7729e298fd8fc226b702d59cf49ac44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#verbose on
open bug1.file.tmp

# Symptom:
#
#    infinite loop in postcat and in delivery agents
#
# Cause:
#
#    Failure to update location info after following a pointer record,
#    while updating a message header record
#
# Analysis:
#
# This happens with repeated updates of the same message header.
# After the first update, the update #1 header record sits in the
# heap at the end of the queue file, and is followed by a reverse
# pointer to the start of the next message header record or the
# message body, somewhere in the middle of the queue file.
#
# The problem started with update #2 of that same message header.
# While following the reverse pointer record after the update #1
# header record to find out the start of the next header or message
# body, the header updating routine did not update its notion of
# where it was. Thus, it believed that the next header or body record
# was located after the reverse pointer record. That was not the
# middle of the message, but the end of the queue file. The second
# update would result in an update #2 header record, followed by a
# reverse pointer to what used to be the end of the queue file, but
# had meanwhile become the location of the update #2 header record.
#
# Thus, anything that tried to deliver mail would loop on the update
# #2 header record. After update update #3 of the same header, the
# delivery agent would loop on the update #3 record, etc.

upd_header 1 Subject long header text
upd_header 1 Subject long header text
upd_header 1 Subject long header text
upd_header 1 Subject long header text

close