Index: src/wp-includes/comment.php
===================================================================
--- src/wp-includes/comment.php	(revision 30351)
+++ src/wp-includes/comment.php	(working copy)
@@ -112,11 +112,18 @@
 		if ( 'trackback' != $comment_type && 'pingback' != $comment_type && $author != '' && $email != '' ) {
 			// expected_slashed ($author, $email)
 			$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
-			if ( ( 1 == $ok_to_comment ) &&
-				( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )
-					return true;
-			else
+			if ( ( 1 == $ok_to_comment ) && ( empty( $mod_keys ) || false === strpos( $email, $mod_keys ) ) ) {
+				return true;
+			} else {
 				return false;
+			}
+		} elseif ( in_array( $comment_type, array( 'trackback', 'pingback' ) ) ) {
+			$domain = parse_url( $url, PHP_URL_HOST );
+			if ( 1 == $wpdb->get_var( "SELECT comment_approved FROM $wpdb->comments WHERE (comment_author_url LIKE 'http://{$domain}%' OR comment_author_url LIKE 'https://{$domain}%') AND comment_type = '{$comment_type}' AND comment_approved = '1' LIMIT 1" ) ) {
+				return true;
+			} else {
+				return false;
+			}
 		} else {
 			return false;
 		}
