Index: wordpress/wp-includes/comment-template.php
===================================================================
--- wordpress/wp-includes/comment-template.php	(revision 6692)
+++ wordpress/wp-includes/comment-template.php	(working copy)
@@ -562,14 +562,15 @@
  * @since 1.5
  * @uses $post
  *
+ * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if the comments are open
  */
-function comments_open() {
-	global $post;
-	if ( 'open' == $post->comment_status )
-		return true;
-	else
-		return false;
+function comments_open( $post_id=NULL ) {
+
+	$_post = get_post($post_id);
+	
+	$open = ( 'open' == $_post->comment_status );
+	return apply_filters( 'comments_open', $open, $post_id );
 }
 
 /**
@@ -578,14 +579,15 @@
  * @since 1.5
  * @uses $post 
  *
+ * @param int $post_id An optional post ID to check instead of the current post.
  * @return bool True if pings are accepted
  */
-function pings_open() {
-	global $post;
-	if ( 'open' == $post->ping_status )
-		return true;
-	else
-		return false;
+function pings_open( $post_id=NULL ) {
+
+	$_post = get_post($post_id);
+
+	$open = ( 'open' == $post->ping_status );
+	return apply_filters( 'pings_open', $open, $post_id );
 }
 
 /**
Index: wordpress/wp-trackback.php
===================================================================
--- wordpress/wp-trackback.php	(revision 6692)
+++ wordpress/wp-trackback.php	(working copy)
@@ -69,9 +69,7 @@
 if ( !empty($tb_url) && !empty($title) ) {
 	header('Content-Type: text/xml; charset=' . get_option('blog_charset') );
 
-	$pingstatus = $wpdb->get_var("SELECT ping_status FROM $wpdb->posts WHERE ID = $tb_id");
-
-	if ( 'open' != $pingstatus )
+	if ( !pings_open($tb_id) )
 		trackback_response(1, 'Sorry, trackbacks are closed for this item.');
 
 	$title =  wp_specialchars( strip_tags( $title ) );
Index: wordpress/wp-comments-post.php
===================================================================
--- wordpress/wp-comments-post.php	(revision 6692)
+++ wordpress/wp-comments-post.php	(working copy)
@@ -16,7 +16,7 @@
 if ( empty($status->comment_status) ) {
 	do_action('comment_id_not_found', $comment_post_ID);
 	exit;
-} elseif ( 'closed' ==  $status->comment_status ) {
+} elseif ( !comments_open($comment_post_ID) ) {
 	do_action('comment_closed', $comment_post_ID);
 	wp_die( __('Sorry, comments are closed for this item.') );
 } elseif ( in_array($status->post_status, array('draft', 'pending') ) ) {

