]> code.citadel.org Git - citadel.git/blobdiff - citadel/server/modules/inboxrules/serv_inboxrules.c
validate_recipients() - completed removal of unused param
[citadel.git] / citadel / server / modules / inboxrules / serv_inboxrules.c
index 5b8bd99c73737cd6ecd1d87c49e5d73444fc95e8..66018785e662b6a445deee75fddd8b4a2178b624 100644 (file)
@@ -342,7 +342,7 @@ int inbox_do_redirect(struct irule *rule, long msgnum) {
                return(1);                                      // don't delete the inbox copy if this failed
        }
 
-       struct recptypes *valid = validate_recipients(rule->redirect_to, NULL, 0);
+       struct recptypes *valid = validate_recipients(rule->redirect_to, 0);
        if (valid == NULL) {
                syslog(LOG_WARNING, "inboxrules: inbox_do_redirect() invalid recipient <%s>", rule->redirect_to);
                return(1);                                      // don't delete the inbox copy if this failed
@@ -610,8 +610,8 @@ void inbox_do_msg(long msgnum, void *userdata) {
                                break;
 
                        case field_xspamstatus:
-                               if (!IsEmptyStr(msg->cm_fields[eMesageText])) {
-                                       if ((ptr=strstr(msg->cm_fields[eMesageText],"X-Spam-Status"))!=NULL) {
+                               if (!IsEmptyStr(msg->cm_fields[eMessageText])) {
+                                       if ((ptr=strstr(msg->cm_fields[eMessageText],"X-Spam-Status"))!=NULL) {
                                                len=0;
                                                ptr1=ptr;
                                                while (*ptr1 && (*ptr1!='\r') && (*ptr1!='\n')) {
@@ -662,10 +662,13 @@ void inbox_do_msg(long msgnum, void *userdata) {
                                int substring_match = 0;
                                int regex_match = 0;
                                int exact_match = 0;
+                               int rc = 0;
 
                                regex_t regex;
-                               if (regcomp(&regex, ii->rules[i].compared_value, (REG_EXTENDED | REG_ICASE | REG_NOSUB | REG_NEWLINE))) {
-                                       syslog(LOG_ERR, "inboxrules: regcomp: %m");
+                               
+                               rc = regcomp(&regex, ii->rules[i].compared_value, (REG_EXTENDED | REG_ICASE | REG_NOSUB | REG_NEWLINE));
+                               if (rc) {
+                                       syslog(LOG_ERR, "inboxrules: regcomp: error %d trying to compile \"%s\"", rc, ii->rules[i].compared_value);
                                }
 
                                if (compare_compound) {                                 // comparing a compound field such as name+address
@@ -681,7 +684,7 @@ void inbox_do_msg(long msgnum, void *userdata) {
                                                        (bmstrcasestr(compare_me, ii->rules[i].compared_value) ? 1 : 0)
                                                        + (bmstrcasestr(sep, ii->rules[i].compared_value) ? 1 : 0)
                                                ;
-                                               regex_match =
+                                               if (!rc) regex_match =
                                                        (regexec(&regex, compare_me, 0, 0, 0) ? 0 : 1)
                                                        + (regexec(&regex, sep, 0, 0, 0) ? 0 : 1)
                                                ;
@@ -690,12 +693,13 @@ void inbox_do_msg(long msgnum, void *userdata) {
                                else {                                                  // comparing a single field only
                                        exact_match = (strcasecmp(compare_me, ii->rules[i].compared_value) ? 0 : 1);
                                        substring_match = (bmstrcasestr(compare_me, ii->rules[i].compared_value) ? 1 : 0);
-                                       regex_match = (regexec(&regex, compare_me, 0, 0, 0) ? 1 : 0);
+                                       if (!rc) regex_match = (regexec(&regex, compare_me, 0, 0, 0) ? 0 : 1);
                                }
+
                                regfree(&regex);
-                               syslog(LOG_DEBUG, "substring match: %d", substring_match);
-                               syslog(LOG_DEBUG, "    regex match: %d", regex_match);
-                               syslog(LOG_DEBUG, "    exact match: %d", exact_match);
+                               syslog(LOG_DEBUG, "inboxrules: substring match: %d", substring_match);
+                               syslog(LOG_DEBUG, "inboxrules:     regex match: %d", regex_match);
+                               syslog(LOG_DEBUG, "inboxrules:     exact match: %d", exact_match);
                                switch(ii->rules[i].field_compare_op) {
                                        case fcomp_contains:
                                                rule_activated = substring_match;
@@ -814,7 +818,7 @@ void do_inbox_processing_for_user(long usernum) {
                return;                                         // config msgnum is set but that message does not exist
        }
 
-       ii = deserialize_inbox_rules(msg->cm_fields[eMesageText]);
+       ii = deserialize_inbox_rules(msg->cm_fields[eMessageText]);
        CM_Free(msg);
 
        if (ii == NULL) {
@@ -926,9 +930,9 @@ void cmd_gibr(char *argbuf) {
 
        struct CtdlMessage *msg = CtdlFetchMessage(CC->user.msgnum_inboxrules, 1);
        if (msg != NULL) {
-               if (!CM_IsEmpty(msg, eMesageText)) {
+               if (!CM_IsEmpty(msg, eMessageText)) {
                        char *token; 
-                       char *rest = msg->cm_fields[eMesageText];
+                       char *rest = msg->cm_fields[eMessageText];
                        while ((token = strtok_r(rest, "\n", &rest))) {
 
                                // for backwards compatibility, "# WEBCIT_RULE" is an alias for "rule"