]> source.dussan.org Git - rspamd.git/commitdiff
* Parse header regexps in other way (header_name=/some_regexp/flags)
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 20 Oct 2008 14:03:50 +0000 (18:03 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 20 Oct 2008 14:03:50 +0000 (18:03 +0400)
cfg_file.h
cfg_utils.c
main.h

index 9632a70e7c0291fdd099e5793a6fe67fa59657f6..e67479318588b832ff9384f52f3816187adc0f64 100644 (file)
@@ -63,6 +63,7 @@ struct rspamd_regexp {
        enum rspamd_regexp_type type;
        char *regexp_text;
        GRegex *regexp;
+       char *header;
 };
 
 struct memcached_server {
index ae0dce5e39991d46377676abcd3c87d4f19c5b9c..430c572e710c2b3ca45fa622c190831513d871bc 100644 (file)
@@ -414,14 +414,31 @@ parse_regexp (memory_pool_t *pool, char *line)
        enum rspamd_regexp_type type = REGEXP_NONE;
        GError *err = NULL;
        
-       /* Find begin */
+       result = memory_pool_alloc0 (pool, sizeof (struct rspamd_regexp));
+       /* First try to find header name */
+       begin = strchr (line, '=');
+       if (begin != NULL) {
+               *begin = '\0';
+               result->header = memory_pool_strdup (pool, line);
+               result->type = REGEXP_HEADER;
+               *begin = '=';
+               line = begin;
+       }
+       /* Find begin of regexp */
        while (*line != '/') {
                line ++;
        }
        if (*line != '\0') {
                begin = line + 1;
        }
+       else if (result->header == NULL) {
+               /* Assume that line without // is just a header name */
+               result->header = memory_pool_strdup (pool, line);
+               result->type = REGEXP_HEADER;
+               return result;
+       }
        else {
+               /* We got header name earlier but have not found // expression, so it is invalid regexp */
                return NULL;
        }
        /* Find end */
diff --git a/main.h b/main.h
index 0d9e8ca105acfd8ecc2e210795538380dc95d06b..1902f2d84d7c13a23302978fa795616444e93722 100644 (file)
--- a/main.h
+++ b/main.h
@@ -130,7 +130,7 @@ struct worker_task {
        unsigned memc_busy:1;
        /* Number of mime parts */
        int parts_count;
-       /* Headers */
+       /* Message */
        GMimeMessage *message;
        /* All parts of message */
        TAILQ_HEAD (mime_partq, mime_part) parts;