---
 src/dspam.c    |    2 --
 src/libdspam.c |   43 +++++++++++++++----------------------------
 2 files changed, 15 insertions(+), 30 deletions(-)

diff --git a/src/dspam.c b/src/dspam.c
index e8771e5..00a7429 100644
--- a/src/dspam.c
+++ b/src/dspam.c
@@ -1945,7 +1945,6 @@ int process_users(AGENT_CTX *ATX, buffer *message) {
         /* Processing Error */
 
         if (result != DSR_ISINNOCENT        &&
-            ATX->classification != DSR_NONE &&
             ATX->classification != DSR_NONE)
         {
           deliver = 0;
@@ -1955,7 +1954,6 @@ int process_users(AGENT_CTX *ATX, buffer *message) {
 
         if (result != DSR_ISINNOCENT && ATX->classification == DSR_NONE)
         {
-          deliver = 1;
           LOG (LOG_WARNING,
                "process_message returned error %d.  delivering.", result);
         }
diff --git a/src/libdspam.c b/src/libdspam.c
index 8f6bab7..ae9eb52 100644
--- a/src/libdspam.c
+++ b/src/libdspam.c
@@ -460,7 +460,7 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
   struct timezone tzp;
 #endif
   buffer *header, *body;
-  int spam_result = 0, is_toe = 0, is_undertrain = 0;
+  int spam_result = 0, is_toe = 0, is_undertrain = 0, retcode = 0;
 
 #ifdef DEBUG
   gettimeofday(&tp1, &tzp);
@@ -520,12 +520,8 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
    && CTX->flags & DSF_SIGNATURE 
    && (CTX->tokenizer != DSZ_SBPH))
   {
-    int i = _ds_process_signature (CTX);
-    if (is_toe)
-      CTX->operating_mode = DSM_PROCESS;
-    if (is_undertrain)
-      CTX->training_mode = DST_TOE;
-    return i;
+    retcode = _ds_process_signature (CTX);
+    goto outundertrain;
   }
 
   header = buffer_create (NULL);
@@ -535,11 +531,8 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
     LOG (LOG_CRIT, ERR_MEM_ALLOC);
     buffer_destroy (header);
     buffer_destroy (body);
-    if (is_toe)
-      CTX->operating_mode = DSM_PROCESS;
-    if (is_undertrain)
-      CTX->training_mode = DST_TOE;
-    return EUNKNOWN;
+    retcode = EUNKNOWN;
+    goto outtoe;
   }
 
   /* Parse the message if it hasn't already been by the client app */
@@ -587,12 +580,15 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
 
   /* Fail if _ds_operate() was unable to process message */
   if (spam_result != DSR_ISSPAM && spam_result != DSR_ISINNOCENT) {
+    LOG(LOG_WARNING, "received invalid result (! DSR_ISSPAM || DSR_INNOCENT) "
+                     ": %d", spam_result);
+    retcode = EFAILURE;
     goto outtoe;
   }
 
   /* Force decision if a classification was specified */
 
-  if (CTX->classification != DSR_NONE && spam_result >= 0) 
+  if (CTX->classification != DSR_NONE)
   {
     if (CTX->classification == DSR_ISINNOCENT)
       spam_result = DSR_ISINNOCENT;
@@ -603,15 +599,16 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
   /* Apply results to context */
   CTX->result = spam_result;
   if (CTX->class[0] == 0) {
-    if (CTX->result == DSR_ISSPAM)
+    if (spam_result == DSR_ISSPAM)
       strcpy(CTX->class, LANG_CLASS_SPAM);
-    else if (CTX->result == DSR_ISINNOCENT)
+    else if (spam_result == DSR_ISINNOCENT)
       strcpy(CTX->class, LANG_CLASS_INNOCENT);
   }
 
  outtoe:
   if (is_toe)
     CTX->operating_mode = DSM_PROCESS;
+ outundertrain:
   if (is_undertrain)
     CTX->training_mode = DST_TOE;
 
@@ -626,14 +623,7 @@ dspam_process (DSPAM_CTX * CTX, const char *message)
   }
 #endif
 
-  if (CTX->result == DSR_ISSPAM || CTX->result == DSR_ISINNOCENT) 
-    return 0;
-  else
-  {
-    LOG(LOG_WARNING, "received invalid result (! DSR_ISSPAM || DSR_INNOCENT) "
-                     ": %d", spam_result);
-    return EFAILURE;
-  }
+  return retcode;
 }
 
 /*
@@ -839,7 +829,6 @@ _ds_operate (DSPAM_CTX * CTX, char *headers, char *body)
 
   if (!diction)
   {
-    ds_diction_destroy(diction);
     LOG (LOG_CRIT, ERR_MEM_ALLOC);
     errcode = EUNKNOWN;
     goto bail;
@@ -1198,8 +1187,7 @@ _ds_process_signature (DSPAM_CTX * CTX)
     CTX->learned = 1;
 
   /* INNOCENT */
-  if (CTX->classification == DSR_ISINNOCENT && 
-      CTX->operating_mode != DSM_CLASSIFY)
+  if (CTX->classification == DSR_ISINNOCENT)
   {
     if (CTX->flags & DSF_UNLEARN) {
       CTX->totals.innocent_learned -= (CTX->totals.innocent_learned) > 0 ? 1:0;
@@ -1219,8 +1207,7 @@ _ds_process_signature (DSPAM_CTX * CTX)
   }
 
   /* SPAM */
-  else if (CTX->classification == DSR_ISSPAM &&
-           CTX->operating_mode != DSM_CLASSIFY)
+  else if (CTX->classification == DSR_ISSPAM)
   {
     if (CTX->flags & DSF_UNLEARN) {
       CTX->totals.spam_learned -= (CTX->totals.spam_learned > 0) ? 1 : 0;
-- 
1.6.3.3


------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Dspam-devel mailing list
Dspam-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspam-devel

Reply via email to