Index: spam.module
===================================================================
--- spam.module	(revision 32990)
+++ spam.module	(working copy)
@@ -50,6 +50,13 @@
   if (spam_content_is_spam($content, $type, $extra, $filter_test)) {
     spam_log(SPAM_DEBUG, 'spam_scan', t('content is spam'), $type, $id);
     spam_update_statistics(t('detected spam @type', array('@type' => $type)));
+
+    $score = spam_content_filter($content, $type, $extra, $filter_test);
+    $id = spam_invoke_module($type, 'content_id', $content, $extra);
+    if ($id) {
+      spam_mark_as_spam($type, $id, array('score' => $score));
+    }
+
     switch (variable_get('spam_visitor_action', SPAM_ACTION_PREVENT)) {
       case SPAM_ACTION_PREVENT:
         spam_log(SPAM_LOG, 'spam_scan', t('content is spam, action(prevent)'), $type, $id);
@@ -93,17 +100,8 @@
     return 0;
   }
   $score = spam_content_filter($content, $type, $extra, $filter_test);
-  $id = spam_invoke_module($type, 'content_id', $content, $extra);
   spam_log(SPAM_DEBUG, 'spam_content_is_spam', t('checking if spam...'), $type, $id);
-  if ($score >= variable_get('spam_threshold', SPAM_DEFAULT_THRESHOLD)) {
-    if ($id) {
-      spam_mark_as_spam($type, $id, array('score' => $score));
-    }
-    $spam = 1;
-  }
-  else {
-    $spam = 0;
-  }
+  $spam = $score >= variable_get('spam_threshold', SPAM_DEFAULT_THRESHOLD) ? 1 : 0;
   spam_log(SPAM_DEBUG, 'spam_content_is_spam', t('score(@score) spam(@spam)', array('@score' => $score, '@spam' => $spam)), $type, $id);
   return $spam;
 }
Index: modules/spam_comment.inc
===================================================================
--- modules/spam_comment.inc	(revision 32990)
+++ modules/spam_comment.inc	(working copy)
@@ -22,6 +22,9 @@
    case 'delete':
      spam_content_delete($comment, 'comment');
      break;
+    case 'publish':
+      if (spam_content_is_spam($comment, 'comment')) {
+        spam_mark_as_not_spam('comment', $comment->cid);
+      }
+      break;
    case 'form':
      if (is_array($comment['cid'])) {
        _spam_comment_cid($comment['cid']['#value']);