diff --git a/cake/libs/http_socket.php b/cake/libs/http_socket.php index 284a8ab3c..c7180a0e0 100644 --- a/cake/libs/http_socket.php +++ b/cake/libs/http_socket.php @@ -152,6 +152,10 @@ class HttpSocket extends CakeSocket { if (is_string($config)) { $this->configUri($config); } elseif (is_array($config)) { + if (isset($config['request']['uri']) && is_string($config['request']['uri'])) { + $this->configUri($config['request']['uri']); + unset($config['request']['uri']); + } $this->config = Set::merge($this->config, $config); } parent::__construct($this->config); diff --git a/cake/tests/cases/libs/http_socket.test.php b/cake/tests/cases/libs/http_socket.test.php index ae546ad87..a29c5aeee 100644 --- a/cake/tests/cases/libs/http_socket.test.php +++ b/cake/tests/cases/libs/http_socket.test.php @@ -79,6 +79,10 @@ class HttpSocketTest extends UnitTestCase { $baseConfig['request']['uri']['port'] = 23; $baseConfig['protocol'] = getprotobyname($baseConfig['protocol']); $this->assertIdentical($this->Socket->config, $baseConfig); + + $this->Socket->reset(); + $this->Socket->__construct(array('request' => array('uri' => 'http://www.cakephp.org:23/'))); + $this->assertIdentical($this->Socket->config, $baseConfig); } /**