Index: wp-includes/http.php
===================================================================
--- wp-includes/http.php	(revision 12543)
+++ wp-includes/http.php	(working copy)
@@ -94,36 +94,44 @@
 	function &_getTransport( $args = array() ) {
 		static $working_transport, $blocking_transport, $nonblocking_transport;
 
-		if ( is_null($working_transport) ) {
+		$kargs = $args;
+		unset($kargs['headers'], $kargs['cookies'], $kargs['body'], $kargs['user-agent'], $kargs['timeout']);
+
+		$key = md5(serialize($kargs));
+		if ( empty($working_transport[$key]) ) {
+
+			if ( ! isset( $working_transport[$key] ) )
+				$working_transport[$key] = $blocking_transport[$key] = $nonblocking_transport[$key] = array();
+
 			if ( true === WP_Http_ExtHttp::test($args) ) {
-				$working_transport['exthttp'] = new WP_Http_ExtHttp();
-				$blocking_transport[] = &$working_transport['exthttp'];
+				$working_transport[$key]['exthttp'] = new WP_Http_ExtHttp();
+				$blocking_transport[$key][] = &$working_transport[$key]['exthttp'];
 			} else if ( true === WP_Http_Curl::test($args) ) {
-				$working_transport['curl'] = new WP_Http_Curl();
-				$blocking_transport[] = &$working_transport['curl'];
+				$working_transport[$key]['curl'] = new WP_Http_Curl();
+				$blocking_transport[$key][] = &$working_transport[$key]['curl'];
 			} else if ( true === WP_Http_Streams::test($args) ) {
-				$working_transport['streams'] = new WP_Http_Streams();
-				$blocking_transport[] = &$working_transport['streams'];
+				$working_transport[$key]['streams'] = new WP_Http_Streams();
+				$blocking_transport[$key][] = &$working_transport[$key]['streams'];
 			} else if ( true === WP_Http_Fopen::test($args) ) {
-				$working_transport['fopen'] = new WP_Http_Fopen();
-				$blocking_transport[] = &$working_transport['fopen'];
+				$working_transport[$key]['fopen'] = new WP_Http_Fopen();
+				$blocking_transport[$key][] = &$working_transport[$key]['fopen'];
 			} else if ( true === WP_Http_Fsockopen::test($args) ) {
-				$working_transport['fsockopen'] = new WP_Http_Fsockopen();
-				$blocking_transport[] = &$working_transport['fsockopen'];
+				$working_transport[$key]['fsockopen'] = new WP_Http_Fsockopen();
+				$blocking_transport[$key][] = &$working_transport[$key]['fsockopen'];
 			}
 
 			foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) {
-				if ( isset($working_transport[$transport]) )
-					$nonblocking_transport[] = &$working_transport[$transport];
+				if ( isset($working_transport[$key][$transport]) )
+					$nonblocking_transport[$key][] = &$working_transport[$key][$transport];
 			}
 		}
 
-		do_action( 'http_transport_get_debug', $working_transport, $blocking_transport, $nonblocking_transport );
+		do_action( 'http_transport_get_debug', $working_transport[$key], $blocking_transport[$key], $nonblocking_transport[$key] );
 
 		if ( isset($args['blocking']) && !$args['blocking'] )
-			return $nonblocking_transport;
+			return $nonblocking_transport[$key];
 		else
-			return $blocking_transport;
+			return $blocking_transport[$key];
 	}
 
 	/**
@@ -144,33 +152,41 @@
 	function &_postTransport( $args = array() ) {
 		static $working_transport, $blocking_transport, $nonblocking_transport;
 
-		if ( is_null($working_transport) ) {
+		$kargs = $args;
+		unset($kargs['headers'], $kargs['cookies'], $kargs['body'], $kargs['user-agent'], $kargs['timeout']);
+
+		$key = md5(serialize($kargs));
+		if ( empty($working_transport[$key]) ) {
+
+			if ( ! isset( $working_transport[$key] ) )
+				$working_transport[$key] = $blocking_transport[$key] = $nonblocking_transport[$key] = array();
+			
 			if ( true === WP_Http_ExtHttp::test($args) ) {
-				$working_transport['exthttp'] = new WP_Http_ExtHttp();
-				$blocking_transport[] = &$working_transport['exthttp'];
+				$working_transport[$key]['exthttp'] = new WP_Http_ExtHttp();
+				$blocking_transport[$key][] = &$working_transport[$key]['exthttp'];
 			} else if ( true === WP_Http_Curl::test($args) ) {
-				$working_transport['curl'] = new WP_Http_Curl();
-				$blocking_transport[] = &$working_transport['curl'];
+				$working_transport[$key]['curl'] = new WP_Http_Curl();
+				$blocking_transport[$key][] = &$working_transport[$key]['curl'];
 			} else if ( true === WP_Http_Streams::test($args) ) {
-				$working_transport['streams'] = new WP_Http_Streams();
-				$blocking_transport[] = &$working_transport['streams'];
+				$working_transport[$key]['streams'] = new WP_Http_Streams();
+				$blocking_transport[$key][] = &$working_transport[$key]['streams'];
 			} else if ( true === WP_Http_Fsockopen::test($args) ) {
-				$working_transport['fsockopen'] = new WP_Http_Fsockopen();
-				$blocking_transport[] = &$working_transport['fsockopen'];
+				$working_transport[$key]['fsockopen'] = new WP_Http_Fsockopen();
+				$blocking_transport[$key][] = &$working_transport[$key]['fsockopen'];
 			}
 
 			foreach ( array('curl', 'streams', 'fsockopen', 'exthttp') as $transport ) {
-				if ( isset($working_transport[$transport]) )
-					$nonblocking_transport[] = &$working_transport[$transport];
+				if ( isset($working_transport[$key][$transport]) )
+					$nonblocking_transport[$key][] = &$working_transport[$key][$transport];
 			}
 		}
 
-		do_action( 'http_transport_post_debug', $working_transport, $blocking_transport, $nonblocking_transport );
+		do_action( 'http_transport_post_debug', $working_transport[$key], $blocking_transport[$key], $nonblocking_transport[$key] );
 
 		if ( isset($args['blocking']) && !$args['blocking'] )
-			return $nonblocking_transport;
+			return $nonblocking_transport[$key];
 		else
-			return $blocking_transport;
+			return $blocking_transport[$key];
 	}
 
 	/**