]> source.dussan.org Git - rspamd.git/commitdiff
Add code to destroy mime atom.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 19 Mar 2015 18:14:23 +0000 (18:14 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 19 Mar 2015 18:14:23 +0000 (18:14 +0000)
src/libmime/mime_expressions.c

index bbe411f01fff48380e455d79945220876475d110..acc2caf0ad48bcd616929f6a89c02544f78fbdfb 100644 (file)
@@ -588,13 +588,33 @@ rspamd_mime_expr_process (gpointer input, rspamd_expression_atom_t *atom)
 static gint
 rspamd_mime_expr_priority (rspamd_expression_atom_t *atom)
 {
-
+       /* TODO: implement priorities for mime expressions */
+       return 0;
 }
 
 static void
 rspamd_mime_expr_destroy (rspamd_expression_atom_t *atom)
 {
+       struct rspamd_mime_atom *mime_atom = atom->data;
+       guint i;
+       struct expression_argument *arg;
 
+       if (mime_atom) {
+               if (mime_atom->is_function) {
+                       /* Need to cleanup arguments */
+                       for (i = 0; i < mime_atom->d.func->args->len; i ++) {
+                               arg = &g_array_index (mime_atom->d.func->args,
+                                               struct expression_argument, i);
+
+                               if (arg->type == EXPRESSION_ARGUMENT_NORMAL) {
+                                       g_free (arg->data);
+                               }
+                       }
+                       g_array_free (mime_atom->d.func->args, TRUE);
+               }
+               /* XXX: regexp shouldn't be special */
+               g_slice_free1 (sizeof (*mime_atom), mime_atom);
+       }
 }
 
 gboolean