Index: http.php
===================================================================
--- http.php	(revision 10116)
+++ http.php	(working copy)
@@ -672,7 +672,11 @@
 		if ( function_exists('stream_get_meta_data') ) {
 			$meta = stream_get_meta_data($handle);
 			$theHeaders = $meta['wrapper_data'];
+			if( isset( $meta['wrapper_data']['headers'] ) )
+				$theHeaders = $meta['wrapper_data']['headers'];
 		} else {
+			if( ! isset( $http_response_header ) )
+				global $http_response_header;
 			$theHeaders = $http_response_header;
 		}
 
@@ -683,6 +687,9 @@
 		if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] )
 			$strResponse = WP_Http::chunkTransferDecode($strResponse);
 
+		echo 'Fopen:';
+		var_dump($strResponse);
+
 		return array('headers' => $processedHeaders['headers'], 'body' => $strResponse, 'response' => $processedHeaders['response']);
 	}
 
@@ -793,10 +800,17 @@
 
 		$strResponse = stream_get_contents($handle);
 		$meta = stream_get_meta_data($handle);
-		$processedHeaders = WP_Http::processHeaders($meta['wrapper_data']);
 
+		$processedHeaders = array();
+		if( isset( $meta['wrapper_data']['headers'] ) )
+			$processedHeaders = WP_Http::processHeaders($meta['wrapper_data']['headers']);
+		else
+			$processedHeaders = WP_Http::processHeaders($meta['wrapper_data']);
+
 		if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] )
 			$strResponse = WP_Http::chunkTransferDecode($strResponse);
+		echo 'Streams:';
+		var_dump($strResponse);
 
 		fclose($handle);
 
@@ -1017,6 +1031,9 @@
 
 		$theResponse = curl_exec( $handle );
 
+		echo 'Curl:';
+		var_dump($theResponse);
+
 		if ( !empty($theResponse) ) {
 			$headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
 			$theHeaders = trim( substr($theResponse, 0, $headerLength) );
@@ -1031,7 +1048,7 @@
 				return new WP_Error('http_request_failed', $curl_error);
 			if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
 				return new WP_Error('http_request_failed', __('Too many redirects.'));
-			
+
 			$theHeaders = array( 'headers' => array() );
 			$theBody = '';
 		}
