Index: modules/contact/contact.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.pages.inc,v
retrieving revision 1.18
diff -u -p -r1.18 contact.pages.inc
--- modules/contact/contact.pages.inc	26 Apr 2009 20:09:12 -0000	1.18
+++ modules/contact/contact.pages.inc	26 Apr 2009 23:12:37 -0000
@@ -228,6 +228,8 @@ function contact_mail_user_submit($form,
   watchdog('mail', '%name-from sent %name-to an e-mail.', array('%name-from' => $user->name, '%name-to' => $account->name));
   drupal_set_message(t('The message has been sent.'));
 
-  // Back to the requested users profile page.
-  $form_state['redirect'] = "user/$account->uid";
+  // Jump to home page or the user's profile rather than back to user's contact
+  // form to avoid contradictory messages if flood control has been activated.
+  $form_state['redirect'] = user_access('access user profiles') ? 'user/' . $account->uid : '';
 }
+
Index: modules/contact/contact.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/contact/contact.test,v
retrieving revision 1.19
diff -u -p -r1.19 contact.test
--- modules/contact/contact.test	21 Apr 2009 09:27:52 -0000	1.19
+++ modules/contact/contact.test	26 Apr 2009 23:12:37 -0000
@@ -294,10 +294,9 @@ class ContactPersonalTestCase extends Dr
 
     // Create web users and attempt to use personal contact forms with default set to true.
     $web_user1 = $this->drupalCreateUser(array());
-    $web_user2 = $this->drupalCreateUser(array());
+    $web_user2 = $this->drupalCreateUser(array('access user profiles'));
 
     $this->drupalLogin($web_user1);
-
     $this->drupalGet('user/' . $web_user2->uid . '/contact');
     $this->assertResponse(200, t('Access to personal contact form granted.'));
 
@@ -306,7 +305,15 @@ class ContactPersonalTestCase extends Dr
     $edit['message'] = $this->randomName(64);
     $this->drupalPost(NULL, $edit, t('Send e-mail'));
     $this->assertText(t('The message has been sent.'), t('Message sent.'));
-
+    $this->assertResponse(200);
+    $this->assertNotEqual($this->getUrl(), url('user/' . $web_user2->uid, array('absolute' => TRUE)), t("Not redirected to user's profile page after submission."));
+    
+    $this->drupalLogin($web_user2);
+    $this->drupalPost('user/'. $web_user1->uid . '/contact', $edit, t('Send e-mail'));
+    $this->assertText(t('The message has been sent.'), t('Message sent.'));
+    $this->assertResponse(200);
+    $this->assertEqual($this->getUrl(), url('user/' . $web_user1->uid, array('absolute' => TRUE)), t("Redirected to user's profile page after submission."));
+    
     // Clear flood table in preparation for flood test and allow other checks to complete.
     db_delete('flood')->execute();
     $num_records_flood = db_query("SELECT COUNT(*) FROM {flood}")->fetchField();
@@ -314,20 +321,17 @@ class ContactPersonalTestCase extends Dr
 
     // Submit contact form with correct values and check flood interval.
     for ($i = 0; $i < $flood_control; $i++) {
-      $this->drupalGet('user/' . $web_user2->uid . '/contact');
+      $this->drupalGet('user/' . $web_user1->uid . '/contact');
       $this->drupalPost(NULL, $edit, t('Send e-mail'));
       $this->assertText(t('The message has been sent.'), t('Message sent.'));
     }
 
     // Submit contact form one over limit.
-    $this->drupalGet('user/' . $web_user2->uid . '/contact');
+    $this->drupalGet('user/' . $web_user1->uid . '/contact');
     $this->assertRaw(t('You cannot send more than %number messages per hour. Please try again later.', array('%number' => $flood_control)), t('Message threshold reached.'));
 
-    $this->drupalLogout();
-
-    $this->drupalLogin($admin_user);
-
     // Disable the personal contact form.
+    $this->drupalLogin($admin_user);
     $edit = array();
     $edit['contact_default_status'] = FALSE;
     $this->drupalPost('admin/build/contact/settings', $edit, t('Save configuration'));
@@ -341,7 +345,6 @@ class ContactPersonalTestCase extends Dr
     $web_user4 = $this->drupalCreateUser(array());
 
     $this->drupalLogin($web_user3);
-
     $this->drupalGet('user/' . $web_user4->uid . '/contact');
     $this->assertResponse(403, t('Access to personal contact form denied.'));
   }
