diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-04-02 19:38:32 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-04-02 19:38:32 +0100 |
commit | 038039fc3599792d01863eae66d6ebc7f12cc7dc (patch) | |
tree | b7bdb9bda82a1d3a4427793db792c9453d14e90c /src/libserver/task.c | |
parent | dbcbd3a54169e547d41ff1590a7769512c5171a6 (diff) | |
download | rspamd-038039fc3599792d01863eae66d6ebc7f12cc7dc.tar.gz rspamd-038039fc3599792d01863eae66d6ebc7f12cc7dc.zip |
[Rework] Continue aliases changes
Diffstat (limited to 'src/libserver/task.c')
-rw-r--r-- | src/libserver/task.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/libserver/task.c b/src/libserver/task.c index dcad1a1ab..d0ef40621 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -1231,22 +1231,39 @@ rspamd_task_write_ialist (struct rspamd_task *task, rspamd_fstring_t *res = logbuf, *varbuf; rspamd_ftok_t var = {.begin = NULL, .len = 0}; struct rspamd_email_address *addr; - gint i, nchars = 0, cur_chars; + gint i, nchars = 0, wr = 0, cur_chars; + gboolean has_orig = FALSE; if (addrs && lim <= 0) { lim = addrs->len; } + PTR_ARRAY_FOREACH (addrs, i, addr) { + if (addr->flags & RSPAMD_EMAIL_ADDR_ORIGINAL) { + has_orig = TRUE; + break; + } + } + varbuf = rspamd_fstring_new (); PTR_ARRAY_FOREACH (addrs, i, addr) { - if (i >= lim) { + if (wr >= lim) { break; } + + if (has_orig) { + /* Report merely original addresses */ + if (!(addr->flags & RSPAMD_EMAIL_ADDR_ORIGINAL)) { + continue; + } + } + cur_chars = addr->addr_len; varbuf = rspamd_fstring_append (varbuf, addr->addr, cur_chars); nchars += cur_chars; + wr ++; if (varbuf->len > 0) { if (i != lim - 1) { @@ -1254,7 +1271,7 @@ rspamd_task_write_ialist (struct rspamd_task *task, } } - if (i >= max_log_elts || nchars >= max_log_elts * 10) { + if (wr >= max_log_elts || nchars >= max_log_elts * 10) { varbuf = rspamd_fstring_append (varbuf, "...", 3); break; } |