diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-04-23 20:05:26 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-04-23 20:05:26 +0400 |
commit | 0cc688fe0be5662e761639d853745153a13522f2 (patch) | |
tree | e97cedcda268a302a367f2ef0edfbe1454f9d584 | |
parent | 4806dfcd8b6d6e758a9e005cbf10d8ed36d09a90 (diff) | |
download | rspamd-0cc688fe0be5662e761639d853745153a13522f2.tar.gz rspamd-0cc688fe0be5662e761639d853745153a13522f2.zip |
* Also try to search for headers in raw headers
-rw-r--r-- | src/expressions.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/expressions.c b/src/expressions.c index 0ad9f1a72..e656cc433 100644 --- a/src/expressions.c +++ b/src/expressions.c @@ -830,13 +830,14 @@ rspamd_header_exists (struct worker_task *task, GList *args) { struct expression_argument *arg; GList *headerlist; + char *c; if (args == NULL || task == NULL) { return FALSE; } arg = get_function_arg (args->data, task, TRUE); - if (arg->type == EXPRESSION_ARGUMENT_BOOL) { + if (!arg || arg->type == EXPRESSION_ARGUMENT_BOOL) { msg_warn ("rspamd_header_exists: invalid argument to function is passed"); return FALSE; } @@ -846,6 +847,13 @@ rspamd_header_exists (struct worker_task *task, GList *args) g_list_free (headerlist); return TRUE; } + else { + /* Also check in raw headers */ + if ((c = strstr (task->raw_headers, (char *)arg->data)) != NULL && + (c == task->raw_headers || *(c - 1) == '\n')) { + return TRUE; + } + } return FALSE; } |