Index: wp-includes/comment.php
===================================================================
--- wp-includes/comment.php	(revision 17573)
+++ wp-includes/comment.php	(working copy)
@@ -1339,12 +1339,9 @@
 
 	if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
 		if ( '0' == $commentdata['comment_approved'] )
-			wp_notify_moderator($comment_ID);
-
-		$post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
-
-		if ( get_option('comments_notify') && $commentdata['comment_approved'] && ( ! isset( $commentdata['user_id'] ) || $post->post_author != $commentdata['user_id'] ) )
-			wp_notify_postauthor($comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' );
+			wp_notify_moderator( $comment_ID );
+		else
+			wp_notify_postauthor( $comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' );
 	}
 
 	return $comment_ID;
@@ -1379,10 +1376,8 @@
 		case 'approve':
 		case '1':
 			$status = '1';
-			if ( get_option('comments_notify') ) {
-				$comment = get_comment($comment_id);
-				wp_notify_postauthor($comment_id, $comment->comment_type);
-			}
+			$comment = get_comment( $comment_id );
+			wp_notify_postauthor( $comment_id, $comment->comment_type );
 			break;
 		case 'spam':
 			$status = 'spam';
Index: wp-includes/pluggable.php
===================================================================
--- wp-includes/pluggable.php	(revision 17573)
+++ wp-includes/pluggable.php	(working copy)
@@ -1004,9 +1004,12 @@
  *
  * @param int $comment_id Comment ID
  * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
- * @return bool False if user email does not exist. True on completion.
+ * @return bool False if mail was not sent. True on completion.
  */
 function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
+	if ( 0 == get_option( 'comments_notify' ) )
+		return false;
+
 	$comment = get_comment( $comment_id );
 	$post    = get_post( $comment->comment_post_ID );
 	$author  = get_userdata( $post->post_author );
@@ -1023,15 +1026,15 @@
 	if ( '' == $author->user_email )
 		return false;
 
-	$comment_author_domain = @gethostbyaddr($comment->comment_author_IP);
+	$comment_author_domain = @gethostbyaddr( $comment->comment_author_IP );
 
 	// The blogname option is escaped with esc_html on the way into the database in sanitize_option
 	// we want to reverse this for the plain text arena of emails.
-	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
+	$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
 
 	if ( empty( $comment_type ) ) $comment_type = 'comment';
 
-	if ('comment' == $comment_type) {
+	if ( 'comment' == $comment_type ) {
 		$notify_message  = sprintf( __( 'New comment on your post "%s"' ), $post->post_title ) . "\r\n";
 		/* translators: 1: comment author, 2: author IP, 3: author domain */
 		$notify_message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
@@ -1042,7 +1045,7 @@
 		$notify_message .= __('You can see all comments on this post here: ') . "\r\n";
 		/* translators: 1: blog name, 2: post title */
 		$subject = sprintf( __('[%1$s] Comment: "%2$s"'), $blogname, $post->post_title );
-	} elseif ('trackback' == $comment_type) {
+	} elseif ( 'trackback' == $comment_type ) {
 		$notify_message  = sprintf( __( 'New trackback on your post "%s"' ), $post->post_title ) . "\r\n";
 		/* translators: 1: website name, 2: author IP, 3: author domain */
 		$notify_message .= sprintf( __('Website: %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
@@ -1051,7 +1054,7 @@
 		$notify_message .= __('You can see all trackbacks on this post here: ') . "\r\n";
 		/* translators: 1: blog name, 2: post title */
 		$subject = sprintf( __('[%1$s] Trackback: "%2$s"'), $blogname, $post->post_title );
-	} elseif ('pingback' == $comment_type) {
+	} elseif ( 'pingback' == $comment_type ) {
 		$notify_message  = sprintf( __( 'New pingback on your post "%s"' ), $post->post_title ) . "\r\n";
 		/* translators: 1: comment author, 2: author IP, 3: author domain */
 		$notify_message .= sprintf( __('Website: %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
@@ -1061,7 +1064,7 @@
 		/* translators: 1: blog name, 2: post title */
 		$subject = sprintf( __('[%1$s] Pingback: "%2$s"'), $blogname, $post->post_title );
 	}
-	$notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
+	$notify_message .= get_permalink( $comment->comment_post_ID ) . "#comments\r\n\r\n";
 	$notify_message .= sprintf( __('Permalink: %s'), get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment_id ) . "\r\n";
 	if ( EMPTY_TRASH_DAYS )
 		$notify_message .= sprintf( __('Trash it: %s'), admin_url("comment.php?action=trash&c=$comment_id") ) . "\r\n";
@@ -1087,9 +1090,9 @@
 	if ( isset($reply_to) )
 		$message_headers .= $reply_to . "\n";
 
-	$notify_message = apply_filters('comment_notification_text', $notify_message, $comment_id);
-	$subject = apply_filters('comment_notification_subject', $subject, $comment_id);
-	$message_headers = apply_filters('comment_notification_headers', $message_headers, $comment_id);
+	$notify_message = apply_filters( 'comment_notification_text', $notify_message, $comment_id );
+	$subject = apply_filters( 'comment_notification_subject', $subject, $comment_id );
+	$message_headers = apply_filters( 'comment_notification_headers', $message_headers, $comment_id );
 
 	@wp_mail( $author->user_email, $subject, $notify_message, $message_headers );
 
