filter: Fix a memory leak in non-btr mode.
[paraslash.git] / filter_common.c
index 7c71ff39243a7a63f7026c11726418377790c87e..7fa30803d6c02a87699b3cc927e0c8b7966e36c9 100644 (file)
@@ -9,12 +9,14 @@
 #include <regex.h>
 #include <sys/types.h>
 #include <dirent.h>
+#include <stdbool.h>
 
 #include "para.h"
 #include "list.h"
 #include "sched.h"
 #include "fd.h"
 #include "ggo.h"
+#include "buffer_tree.h"
 #include "filter.h"
 #include "error.h"
 #include "string.h"
@@ -177,6 +179,7 @@ void close_filters(struct filter_chain *fc)
                close_callbacks(fn);
                PARA_INFO_LOG("closing %s filter\n", f->name);
                f->close(fn);
+               free(fn->conf);
        }
        free(fc->filter_nodes);
 }
@@ -273,3 +276,15 @@ void print_filter_helps(int detailed)
        }
 
 }
+
+void generic_filter_pre_select(struct sched *s, struct task *t)
+{
+       struct filter_node *fn = container_of(t, struct filter_node, task);
+
+       t->error = 0;
+       if (btr_node_status(fn->btrn, fn->min_iqs, BTR_NT_INTERNAL) != 0) {
+               s->timeout.tv_sec = 0;
+               s->timeout.tv_usec = 1;
+       }
+}
+