diff --git a/antispam/antispam.module b/antispam/antispam.module
index 19f1e7e..9b94535 100644
--- a/antispam/antispam.module
+++ b/antispam/antispam.module
@@ -832,9 +832,13 @@
   switch ($op) {
     case 'insert':
     case 'update':
+      $comment = (object)$comment;
       if (!variable_get('antispam_check_comments', 0) || antispam_is_spam_moderator('comments') || !variable_get('antispam_connection_enabled', 1)) {
         antispam_notify_moderators('comment', $comment, ($comment->status == COMMENT_PUBLISHED ? TRUE : FALSE), FALSE);
+      } else {
+        _antispam_comment_check_spam($comment);
       }
+      $comment = (array)$comment;
       break;
     case 'delete':
       db_query('DELETE FROM {antispam_spam_marks} WHERE content_type = \'comment\' AND content_id = %d', $comment->cid);
@@ -859,10 +863,6 @@
   if ($form_id == 'comment_form' && variable_get('antispam_check_comments', 1)) {
     // ...only if current user is not moderator.
     if (!antispam_is_spam_moderator('comments')) {
-      // ...also check if AntiSpam connections are enabled.
-      if (variable_get('antispam_connection_enabled', 1)) {
-        $form['#submit'][] = '_antispam_comment_form_submit';
-      }
       // Inject anti-spambot code, if requested to.
       if (antispam_is_anti_spambot_enabled()) {
         $form['#validate'][] = '_antispam_comment_form_validate';
@@ -976,87 +976,57 @@
 }
 
 /**
- * Comment form submit callback; check for spam.
+ * Check comment for spam.
  */
-function _antispam_comment_form_submit($form, &$form_state, $original_submit_callback = NULL) {
-  // Our default destination. It doesn't need to override the original.
-  $goto = NULL;
-
-  // We need to get the comment id ($cid) to load the comment.
-  if (isset($form_state['values']['cid'])) {
-    $cid = $form_state['values']['cid'];
-  }
-  else {
-    $goto = $form_state['redirect'];
-    if (is_array($goto) && isset($goto[2]) 
-        && preg_match('#^comment-([0-9]+)$#', $goto[2], $match)) {
-      $cid = $match[1];
-      $goto[2] = NULL;
-    }
-  }
-
+function _antispam_comment_check_spam($comment) {
   //---- #658990 ----
   // Quit asap, if current user has administration permission
   // or permission to post without spam checking.
   if (antispam_is_spam_moderator('comments') || user_access('post with no antispam checking')) {
     antispam_notify_moderators('comment', $comment, ($comment->status == COMMENT_PUBLISHED ? TRUE : FALSE), FALSE);
-    // Return NULL or the destination returned by the original #submit callback.
-    return $goto;
+    return;
   }
 
-  // Once we have a $cid, we can (try to) load the comment with all relevant
-  // information that we need to make the AntiSpam request to check for spam.
-  if ($cid) {
-    $comment = antispam_content_load('comment', $cid);
-    // If we got a comment, send query to AntiSpam.
-    if ($comment) {
-      $api_result = antispam_api_cmd_comment_check('comment', $comment);
-      if ($api_result[0] == ANTISPAM_API_RESULT_IS_HAM) {
-        antispam_notify_moderators('comment', $comment, ($comment->status == COMMENT_PUBLISHED ? TRUE : FALSE), FALSE);
-        // Increment ham counter
-        antispam_increase_counter(ANTISPAM_COUNT_HAM_DETECTED);
-      }
-      else {
-        if ($api_result[0] == ANTISPAM_API_RESULT_IS_SPAM) {
-          $comment->signature = $api_result[1];
-          $comment->spaminess = $api_result[2];
+  // If we got a comment, send query to AntiSpam.
+  $api_result = antispam_api_cmd_comment_check('comment', $comment);
+  if ($api_result[0] == ANTISPAM_API_RESULT_IS_HAM) {
+    antispam_notify_moderators('comment', $comment, ($comment->status == COMMENT_PUBLISHED ? TRUE : FALSE), FALSE);
+    // Increment ham counter
+    antispam_increase_counter(ANTISPAM_COUNT_HAM_DETECTED);
+  }
+  else {
+    if ($api_result[0] == ANTISPAM_API_RESULT_IS_SPAM) {
+      $comment->signature = $api_result[1];
+      $comment->spaminess = $api_result[2];
 
-          // Oops! We got spammed, let's mark the comment as such.
-          antispam_content_spam_operation('comment', $comment, 'submit-spam', FALSE);
-          antispam_increase_counter(ANTISPAM_COUNT_SPAM_DETECTED);
+      // Oops! We got spammed, let's mark the comment as such.
+      antispam_content_spam_operation('comment', $comment, 'submit-spam', FALSE);
+      antispam_increase_counter(ANTISPAM_COUNT_SPAM_DETECTED);
 
-          antispam_notify_moderators('comment', $comment, FALSE, TRUE);
-        }
-        else {
-          antispam_notify_moderators('comment', $comment, FALSE, FALSE);
-        }
+      antispam_notify_moderators('comment', $comment, FALSE, TRUE);
+    }
+    else {
+      antispam_notify_moderators('comment', $comment, FALSE, FALSE);
+    }
 
-        // Unpublish the comment, if necessary.
-        if ($comment->status == COMMENT_PUBLISHED) {
-          antispam_content_publish_operation('comment', $comment, 'unpublish', FALSE);
-        }
+    // Unpublish the comment, if necessary.
+    if ($comment->status == COMMENT_PUBLISHED) {
+      antispam_content_publish_operation('comment', $comment, 'unpublish', FALSE);
+      $comment->status = COMMENT_NOT_PUBLISHED;
+    }
 
-        // Since users won't see their replies published, show them a polite explanation on why.
-        drupal_set_message(t('Your comment has been queued for moderation by site administrators and will be published after approval.'));
-        // go back to the node page since the comment will not be published
-        $form_state['redirect'] = $goto;
-
-        // Record the event to watchdog.
-        if ($api_result[0] == ANTISPAM_API_RESULT_ERROR) {
-          watchdog('content', 'AntiSpam service seems to be down, comment queued for manual approval: %subject', array('%subject' => $comment->subject), WATCHDOG_WARNING, l(t('view'), 'node/'. $comment->nid, array('fragment' => 'comment-'. $comment->cid)));
-        }
-        else {
-          watchdog('content', 'Spam detected by AntiSpam in comment: %subject', array('%subject' => $comment->subject), WATCHDOG_WARNING, l(t('view'), 'node/'. $comment->nid, array('fragment' => 'comment-'. $comment->cid)));
-          // If requested to, generate a delay so the spammer has to wait for a while.
-          if (($seconds = variable_get('antispam_antispambot_delay', 60)) > 0) {
-            sleep($seconds);
-          }
-        }
+    // Record the event to watchdog.
+    if ($api_result[0] == ANTISPAM_API_RESULT_ERROR) {
+      watchdog('content', 'AntiSpam service seems to be down, comment queued for manual approval: %subject', array('%subject' => $comment->subject), WATCHDOG_WARNING, l(t('view'), 'node/'. $comment->nid, array('fragment' => 'comment-'. $comment->cid)));
+    }
+    else {
+      watchdog('content', 'Spam detected by AntiSpam in comment: %subject', array('%subject' => $comment->subject), WATCHDOG_WARNING, l(t('view'), 'node/'. $comment->nid, array('fragment' => 'comment-'. $comment->cid)));
+      // If requested to, generate a delay so the spammer has to wait for a while.
+      if (($seconds = variable_get('antispam_antispambot_delay', 60)) > 0) {
+        sleep($seconds);
       }
     }
   }
-  // Return NULL or the destination returned by the original #submit callback.
-  return $goto;
 }
 
 /**
