299 |
|
|
300 |
/* rfc3028 says: |
/* rfc3028 says: |
301 |
"Implementations SHOULD take measures to implement loop control," |
"Implementations SHOULD take measures to implement loop control," |
302 |
We do this by appending an "X-Sender" header to each message |
We do this by appending an "X-Loop-Prevention" header to each message |
303 |
being redirected. If one of the "X-Sender" headers of the message |
being redirected. If one of the "X-Loop-Prevention" headers of the message |
304 |
contains our email address, we assume it is a loop and bail out. */ |
contains our email address, we assume it is a loop and bail out. */ |
305 |
|
|
306 |
static int |
static int |
317 |
for (i = 1; !loop && i <= num; i++) |
for (i = 1; !loop && i <= num; i++) |
318 |
{ |
{ |
319 |
header_get_field_name (hdr, i, buf, sizeof buf, NULL); |
header_get_field_name (hdr, i, buf, sizeof buf, NULL); |
320 |
if (strcasecmp (buf, "X-Sender") == 0) |
if (strcasecmp (buf, "X-Loop-Prevention") == 0) |
321 |
{ |
{ |
322 |
size_t j, cnt = 0; |
size_t j, cnt = 0; |
323 |
address_t addr; |
address_t addr; |
414 |
p = mu_get_user_email (NULL); |
p = mu_get_user_email (NULL); |
415 |
if (p) |
if (p) |
416 |
{ |
{ |
417 |
header_set_value (hdr, "X-Sender", p, 0); |
header_set_value (hdr, "X-Loop-Prevention", p, 0); |
418 |
free (p); |
free (p); |
419 |
} |
} |
420 |
else |
else |