Index: wp-includes/classes.php
===================================================================
--- wp-includes/classes.php	(revision 12942)
+++ wp-includes/classes.php	(working copy)
@@ -350,9 +350,10 @@
 			$headers['ETag'] = $wp_etag;
 
 			// Support for Conditional GET
-			if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
+			if ( isset($_SERVER['HTTP_IF_NONE_MATCH']) )
 				$client_etag = stripslashes(stripslashes($_SERVER['HTTP_IF_NONE_MATCH']));
-			else $client_etag = false;
+			else
+				$client_etag = false;
 
 			$client_last_modified = empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? '' : trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
 			// If string is empty, return 0. If not, attempt to parse into a timestamp
@@ -366,6 +367,20 @@
 					 (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) {
 				$status = 304;
 				$exit_required = true;
+				
+				switch ( strtolower($this->query_vars['feed']) ) {
+					case 'rdf':
+						$headers['Content-Type'] = feed_content_type('atom') . '; charset=' . get_option('blog_charset');
+						break;
+					case 'atom':
+						$headers['Content-Type'] = feed_content_type('rdf') . '; charset=' . get_option('blog_charset');
+						break;
+					case 'rss':
+					case 'rss2':
+					default:
+						$headers['Content-Type'] = feed_content_type('rss-http') . '; charset=' . get_option('blog_charset');
+				}
+				
 			}
 		}
 
