summaryrefslogtreecommitdiff
path: root/lib/httpclient.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-08-13 14:33:41 -0700
committerEvan Prodromou <evan@status.net>2010-08-13 14:33:41 -0700
commit718317542940a8976f2c6f2a9ea09a04f2f00ca6 (patch)
tree2bae1e1b0ce628101453b83c7e4ddcce59b43c62 /lib/httpclient.php
parent9f0715a9935966f3ec483bccc476d5baf3324b3c (diff)
parent029aa0c61c9942c0688fd3dc9aa2893311543db1 (diff)
Merge branch 'master' into 1.0.x
Diffstat (limited to 'lib/httpclient.php')
-rw-r--r--lib/httpclient.php13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/httpclient.php b/lib/httpclient.php
index b69f718e5..514a5afeb 100644
--- a/lib/httpclient.php
+++ b/lib/httpclient.php
@@ -145,6 +145,10 @@ class HTTPClient extends HTTP_Request2
$this->config['ssl_verify_peer'] = false;
}
+ if (common_config('http', 'curl') && extension_loaded('curl')) {
+ $this->config['adapter'] = 'HTTP_Request2_Adapter_Curl';
+ }
+
parent::__construct($url, $method, $config);
$this->setHeader('User-Agent', $this->userAgent());
}
@@ -204,6 +208,15 @@ class HTTPClient extends HTTP_Request2
protected function doRequest($url, $method, $headers)
{
$this->setUrl($url);
+
+ // Workaround for HTTP_Request2 not setting up SNI in socket contexts;
+ // This fixes cert validation for SSL virtual hosts using SNI.
+ // Requires PHP 5.3.2 or later and OpenSSL with SNI support.
+ if ($this->url->getScheme() == 'https' && defined('OPENSSL_TLSEXT_SERVER_NAME')) {
+ $this->config['ssl_SNI_enabled'] = true;
+ $this->config['ssl_SNI_server_name'] = $this->url->getHost();
+ }
+
$this->setMethod($method);
if ($headers) {
foreach ($headers as $header) {