diff -Naur /home/mdorrell/spam/spam.module spam/spam.module
--- /home/mdorrell/spam/spam.module	2009-08-09 20:03:11.000000000 -0700
+++ spam/spam.module	2010-08-13 15:26:22.057036998 -0700
@@ -32,6 +32,7 @@
  * action will be taken.
  */
 function spam_scan($content, $type, $extra = array(), $filter_test = FALSE) {
+
   if (user_access('bypass filters')) {
     spam_log(SPAM_DEBUG, 'spam_scan', t('bypassing filters'), $type, $id);
     return;
@@ -57,8 +58,8 @@
         $_SESSION['content'] = serialize((array)$content);
         $_SESSION['type'] = $type;
         spam_update_statistics(t('prevented spam @type', array('@type' => $type)));
-        drupal_goto('spam/denied');
-
+        spam_set_error();
+        break;
       case SPAM_ACTION_PREVENT_SILENT:
         spam_log(SPAM_LOG, 'spam_scan', t('content is spam, action(prevent silently)'), $type, $id);
         spam_update_statistics(t('silently prevented spam @type', array('@type' => $type)));
@@ -66,9 +67,7 @@
           // Content was already published, so we unpublish it.
           spam_unpublish($type, $id, $extra);
         }
-        // TODO: We redirect to avoid the content being posted, but we should
-        //       be much smarter about where we redirect to.
-        drupal_goto('');
+        spam_set_error();
         break;
 
       case SPAM_ACTION_UNPUBLISH:
@@ -85,6 +84,20 @@
 }
 
 /**
+ * set the correct error message based on selected Posting action
+ */
+function spam_set_error(){
+  switch (variable_get('spam_visitor_action', SPAM_ACTION_PREVENT)) {
+    case SPAM_ACTION_PREVENT_SILENT:
+      break;
+    default:
+      form_set_error('','Your comment will be reviewed by a site administrator.');
+      break;
+  }
+
+}
+
+/**
  * API call to simply test if content is spam or not.  No action is taken.
  */
 function spam_content_is_spam($content, $type, $extra = array(), $filter_test = FALSE) {
@@ -192,7 +205,7 @@
       spam_update_statistics(t('detected spam'));
       spam_update_statistics(t('content_filter redirect'));
       spam_log(SPAM_VERBOSE, 'spam_content_filter', t('Spam score [!score], redirecting to: !url', array('!score' => $log_score, '!url' => $redirect)), $type, $id);
-      drupal_goto($redirect);
+      spam_set_error();
     }
   }
   else {
@@ -271,7 +284,7 @@
     $_SESSION['type'] = $type;
     spam_update_statistics(t('prevented spam @type', array('@type' => $type)));
     spam_log(SPAM_DEBUG, 'spam_content_insert', t('redirecting to spam/denied'), $type, $id);
-    drupal_goto('spam/denied');
+    spam_set_error();
   }
 
   return $error;
@@ -337,7 +350,8 @@
     $_SESSION['type'] = $type;
     spam_update_statistics(t('prevented spam @type', array('@type' => $type)));
     spam_log(SPAM_DEBUG, 'spam_content_update', t('redirecting to spam/denied'), $type, $id);
-    drupal_goto('spam/denied');
+    
+    spam_set_error();
   }
 
   return $error;
@@ -1118,7 +1132,7 @@
     $return = drupal_process_form($content['form_id'], unserialize($form_state['values']['spam_form']));
     db_query('DELETE FROM {spam_filters_errors} WHERE bid = %d', $form_state['values']['bid']);
     drupal_set_message(t('Content published.'));
-    drupal_goto('admin/content/spam/feedback');
+    spam_set_error();
   }
 /* TODO The 'op' element in the form values is deprecated.
    Each button can have #validate and #submit functions associated with it.
@@ -1130,7 +1144,7 @@
     // TODO: Confirm the delete.
     db_query('DELETE FROM {spam_filters_errors} WHERE bid = %d', $form_state['values']['bid']);
     drupal_set_message(t('Feedback deleted.'));
-    drupal_goto('admin/content/spam/feedback');
+    spam_set_error();
   }
 }
 
@@ -1690,8 +1704,7 @@
   }
   db_query("INSERT INTO {spam_filters_errors} (uid, content_type, content_id, content_hash, content, form, hostname, feedback, timestamp) VALUES(%d, '%s', %d, '%s', '%s', '%s', '%s', '%s', %d)", $user->uid, $type, $id, $hash, $_SESSION['content'], $spam_form, ip_address() , $form_state['values']['feedback'], time());
   $_SESSION['content'] = $_SESSION['type'] = $_SESSION['spam_form'] = '';
-  drupal_set_message(t('Your feedback will be reviewed by a site administrator.'));
-  drupal_goto('');
+  spam_set_error();
 }
 
 /**
