summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-04-23 20:05:26 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-04-23 20:05:26 +0400
commit0cc688fe0be5662e761639d853745153a13522f2 (patch)
treee97cedcda268a302a367f2ef0edfbe1454f9d584
parent4806dfcd8b6d6e758a9e005cbf10d8ed36d09a90 (diff)
downloadrspamd-0cc688fe0be5662e761639d853745153a13522f2.tar.gz
rspamd-0cc688fe0be5662e761639d853745153a13522f2.zip
* Also try to search for headers in raw headers
-rw-r--r--src/expressions.c10
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;
}