Skip to content

Commit

Permalink
Fixed issue #7579 on the 2.7 branch
Browse files Browse the repository at this point in the history
  • Loading branch information
wiserfirst committed Dec 1, 2015
1 parent caf93bf commit 48dd778
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
6 changes: 5 additions & 1 deletion lib/Cake/Network/CakeSocket.php
Expand Up @@ -129,8 +129,12 @@ public function connect() {
$this->disconnect();
}

$hasProtocol = strpos($this->config['host'], '://') !== false;
if ($hasProtocol) {
list($this->config['protocol'], $this->config['host']) = explode('://', $this->config['host']);
}
$scheme = null;
if (!empty($this->config['protocol']) && strpos($this->config['host'], '://') === false && empty($this->config['proxy'])) {
if (!empty($this->config['protocol'])) {
$scheme = $this->config['protocol'] . '://';
}

Expand Down
18 changes: 18 additions & 0 deletions lib/Cake/Test/Case/Network/CakeSocketTest.php
Expand Up @@ -265,6 +265,24 @@ public function testEnableCryptoSocketExceptionNoTls() {
$this->Socket->enableCrypto('tls', 'client');
}

/**
* Test that protocol in the host doesn't cause cert errors.
*
* @return void
*/
public function testConnectProtocolInHost() {
$this->skipIf(!extension_loaded('openssl'), 'OpenSSL is not enabled cannot test SSL.');
$configSslTls = array('host' => 'ssl://smtp.gmail.com', 'port' => 465, 'timeout' => 5);
$socket = new CakeSocket($configSslTls);
try {
$socket->connect();
$this->assertEquals('smtp.gmail.com', $socket->config['host']);
$this->assertEquals('ssl', $socket->config['protocol']);
} catch (SocketException $e) {
$this->markTestSkipped('Cannot test network, skipping.');
}
}

/**
* _connectSocketToSslTls
*
Expand Down

0 comments on commit 48dd778

Please sign in to comment.