diff --git a/src/config.h b/src/config.h index addaad4..079d313 100644 --- a/src/config.h +++ b/src/config.h @@ -14,7 +14,7 @@ #define VERSION "0.1.25-master-branch" -#define BUILD 847 +#define BUILD 848 #define HOSTID "mailarchiver" diff --git a/src/defs.h b/src/defs.h index a2df540..5d0f20b 100644 --- a/src/defs.h +++ b/src/defs.h @@ -285,6 +285,9 @@ char *sql[MAX_SQL_VARS]; int type[MAX_SQL_VARS]; int len[MAX_SQL_VARS]; + unsigned long length[MAX_SQL_VARS]; + my_bool is_null[MAX_SQL_VARS]; + my_bool error[MAX_SQL_VARS]; int pos; #ifdef HAVE_TRE diff --git a/src/mysql.c b/src/mysql.c index 4803cb2..139cc98 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -123,9 +123,6 @@ int p_store_results(struct session_data *sdata, MYSQL_STMT *stmt, struct __data *data){ MYSQL_BIND bind[MAX_SQL_VARS]; - my_bool is_null[MAX_SQL_VARS]; - unsigned long length[MAX_SQL_VARS]; - my_bool error[MAX_SQL_VARS]; int i, ret=ERR; memset(bind, 0, sizeof(bind)); @@ -160,9 +157,9 @@ bind[i].buffer = (char *)data->sql[i]; - bind[i].is_null = &is_null[i]; - bind[i].length = &length[i]; - bind[i].error = &error[i]; + bind[i].is_null = &(data->is_null[i]); + bind[i].length = &(data->length[i]); + bind[i].error = &(data->error[i]); } else { break; } diff --git a/src/rules.c b/src/rules.c index f4d77b5..00da712 100644 --- a/src/rules.c +++ b/src/rules.c @@ -54,7 +54,7 @@ p_store_results(sdata, data->stmt_generic, data); while(p_fetch_results(data->stmt_generic) == OK){ - append_rule(xhash, domain, from, to, subject, _size, size, attachment_type, _attachment_size, attachment_size, spam, days); + append_rule(xhash, domain, from, to, subject, _size, size, attachment_type, _attachment_size, attachment_size, spam, days, data); memset(domain, 0, sizeof(domain)); memset(from, 0, sizeof(from)); @@ -75,7 +75,7 @@ } -int append_rule(struct node *xhash[], char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days){ +int append_rule(struct node *xhash[], char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days, struct __data *data){ struct node *q, *Q=NULL, *node; struct rule *rule; int rc=0; @@ -85,7 +85,7 @@ memset(node, 0, sizeof(struct node)); node->r = NULL; - rule = create_rule_item(domain, from, to, subject, _size, size, attachment_type, _attachment_size, attachment_size, spam, days); + rule = create_rule_item(domain, from, to, subject, _size, size, attachment_type, _attachment_size, attachment_size, spam, days, data); if(rule == NULL){ free(node); @@ -112,7 +112,7 @@ } -struct rule *create_rule_item(char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days){ +struct rule *create_rule_item(char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days, struct __data *data){ struct rule *h=NULL; char empty = '\0'; int len; @@ -124,7 +124,7 @@ h->compiled = 1; h->domain = NULL; - h->domainlen = strlen(domain); + h->domainlen = data->length[0]; if(h->domainlen > 2){ h->domain = malloc(h->domainlen+2); diff --git a/src/rules.h b/src/rules.h index 788dfa8..e254b71 100644 --- a/src/rules.h +++ b/src/rules.h @@ -8,8 +8,8 @@ #include "defs.h" void load_rules(struct session_data *sdata, struct __data *data, struct node *xhash[], char *table); -int append_rule(struct node *xhash[], char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days); -struct rule *create_rule_item(char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days); +int append_rule(struct node *xhash[], char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days, struct __data *data); +struct rule *create_rule_item(char *domain, char *from, char *to, char *subject, char *_size, int size, char *attachment_type, char *_attachment_size, int attachment_size, int spam, int days, struct __data *data); char *check_againt_ruleset(struct node *xhash[], struct _state *state, int size, int spam); unsigned long query_retain_period(struct __data *data, struct _state *state, int size, int spam, struct __config *cfg); int check_size_rule(int message_size, int size, char *_size);