Index: wp-includes/http.php
===================================================================
--- wp-includes/http.php	(revision 10238)
+++ wp-includes/http.php	(working copy)
@@ -69,11 +69,11 @@
 	 * Tests all of the objects and returns the object that passes. Also caches
 	 * that object to be used later.
 	 *
-	 * The order for the GET/HEAD requests are Streams, HTTP Extension, Fopen,
-	 * and finally Fsockopen. fsockopen() is used last, because it has the most
-	 * overhead in its implementation. There isn't any real way around it, since
-	 * redirects have to be supported, much the same way the other transports
-	 * also handle redirects.
+	 * The order for the GET/HEAD requests are HTTP Extension, cURL, Streams, 
+	 * Fopen, and finally Fsockopen. fsockopen() is used last, because it has 
+	 * the most overhead in its implementation. There isn't any real way around 
+	 * it, since redirects have to be supported, much the same way the other 
+	 * transports also handle redirects.
 	 *
 	 * There are currently issues with "localhost" not resolving correctly with
 	 * DNS. This may cause an error "failed to open stream: A connection attempt
@@ -129,6 +129,12 @@
 	 * to send content, but the streams transport can. This is a limitation that
 	 * is addressed here, by just not including that transport.
 	 *
+         * The order for the POST requests are HTTP Extension, cURL, Streams and 
+	 * finally Fsockopen. fsockopen() is used last, because it has the most 
+	 * overhead in its implementation. There isn't any real way around it, 
+	 * since redirects have to be supported, much the same way the other 
+	 * transports also handle redirects.
+	 *
 	 * @since 2.7
 	 * @access private
 	 *
@@ -142,6 +148,9 @@
 			if ( true === WP_Http_ExtHttp::test() && apply_filters('use_http_extension_transport', true) ) {
 				$working_transport['exthttp'] = new WP_Http_ExtHttp();
 				$blocking_transport[] = &$working_transport['exthttp'];
+			} else if ( true === WP_Http_Curl::test() && apply_filters('use_curl_transport', true) ) {
+				$working_transport['curl'] = new WP_Http_Curl();
+				$blocking_transport[] = &$working_transport['curl'];
 			} else if ( true === WP_Http_Streams::test() && apply_filters('use_streams_transport', true) ) {
 				$working_transport['streams'] = new WP_Http_Streams();
 				$blocking_transport[] = &$working_transport['streams'];
@@ -215,7 +224,7 @@
 			'timeout' => apply_filters( 'http_request_timeout', 5),
 			'redirection' => apply_filters( 'http_request_redirection_count', 5),
 			'httpversion' => apply_filters( 'http_request_version', '1.0'),
-			'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version ),
+			'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ),
 			'blocking' => true,
 			'headers' => array(), 'body' => null
 		);
@@ -769,7 +778,8 @@
 				'max_redirects' => $r['redirection'],
 				'protocol_version' => (float) $r['httpversion'],
 				'header' => $strHeaders,
-				'timeout' => $r['timeout']
+				'timeout' => $r['timeout'],
+				'verify_peer' => false
 			)
 		);
 
@@ -899,6 +909,7 @@
 			'redirect' => $r['redirection'],
 			'useragent' => $r['user-agent'],
 			'headers' => $r['headers'],
+			'ssl' => array( 'verifypeer' => false, 'verifyhost' => false )
 		);
 
 		if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) //Emits warning level notices for max redirects and timeouts
@@ -988,26 +999,31 @@
 			$r['timeout'] = 1;
 
 		$handle = curl_init();
+
 		curl_setopt( $handle, CURLOPT_URL, $url);
+		curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
+		curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, false );
+		curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, false );
+		curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
+		curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $r['timeout'] );
+		curl_setopt( $handle, CURLOPT_TIMEOUT, $r['timeout'] );
+		curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );
 
-		if ( 'HEAD' === $r['method'] ) {
-			curl_setopt( $handle, CURLOPT_NOBODY, true );
+		switch ( $r['method'] ) {
+			case 'HEAD':
+				curl_setopt( $handle, CURLOPT_NOBODY, true );
+				break;
+			case 'POST':
+				curl_setopt( $handle, CURLOPT_POST, true );
+				curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+				break;
 		}
 
-		if ( true === $r['blocking'] ) {
+		if ( true === $r['blocking'] )
 			curl_setopt( $handle, CURLOPT_HEADER, true );
-			curl_setopt( $handle, CURLOPT_RETURNTRANSFER, 1 );
-		} else {
+		else
 			curl_setopt( $handle, CURLOPT_HEADER, false );
-			curl_setopt( $handle, CURLOPT_NOBODY, true );
-			curl_setopt( $handle, CURLOPT_RETURNTRANSFER, 0 );
-		}
 
-		curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
-		curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, 1 );
-		curl_setopt( $handle, CURLOPT_TIMEOUT, $r['timeout'] );
-		curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );
-
 		if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
 			curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true );
 
