Navigation Menu

Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/3561' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
weierophinney committed Jan 26, 2013
148 parents 5c72f46 + 2b5dcae + cb2e3cf + dc02847 + 1cda83c + 835b631 + d3605c7 + 7a32de0 + 7a6cebf + 662a059 + 5e1c4bb + de6ba8b + 19c92ef + f5abdbd + a4b3fcc + e0d3e79 + eb7f4fc + f5f296f + c1bc89d + 2cfde08 + 5ed923d + 7bfa121 + 0b38f0b + 1914ec7 + 47650bd + b7f9c80 + d490dab + 0b235a6 + ea8420a + 806e429 + 14b8e16 + 2c9f881 + 1591173 + 3288109 + 6149722 + fb18be8 + 2f56d24 + 256686b + 3cc679d + da18011 + 93ac388 + 57ef4a3 + 2f2851a + 2ec1dbc + 9a48955 + b6b50b9 + a16c105 + a634561 + 779d017 + e998d74 + e0c0b66 + 677bd85 + bd0abb6 + 7e23a9b + 76e9a65 + 9666e65 + 0fb7a6e + b476244 + a566cb1 + 84a7972 + f6501d5 + 74b0454 + ea99bf1 + e2703e7 + 90db7ae + b2f5380 + d6ee2dd + 2dae9df + 15a2e1f + 00d7ef1 + 88e29ab + 04f5596 + d4b9187 + 83cb40e + e80536c + 8344c40 + 314ef07 + f8fe680 + 7d99158 + 5a453b7 + 16b512c + e13bb78 + f8c8e84 + 0e833f2 + 463bd0b + e23f919 + c0f3fe1 + 9af4d23 + fbdafd9 + 46c341e + 1fcdf03 + 9e5c38e + 41f8caa + f236745 + ab9047d + c7b4a3f + 5cbe79f + dc8268a + cbafbe9 + d2c6567 + 0cc6fdf + 09daef8 + df6fc46 + ba228cf + 67d18da + 48a0084 + c78da38 + 76f6205 + 02baf86 + 907dad9 + 56854a7 + 51b08b5 + 86f37cb + 5ecd1ed + a4cca36 + cfc46bf + a576736 + 0650b43 + 6fc76b3 + 2dcfeeb + 80461fa + db66f77 + 66790e4 + ceefa98 + fc0f947 + 6a060b9 + 08f2b17 + 32dbda5 + d550f51 + 3aa0ee9 + 4ea71ee + 730f592 + c6516da + 76770c7 + 167fdbf + 1510cfa + e52ef9a + c1754e3 + 30e7e8b + c208a5e + c258e8b + 95bc2ba + 62058ff + 5129baa + 9ac9f8e + ee05131 + fb9ea71 + aa2b371 commit 818d7d9
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 14 deletions.
10 changes: 10 additions & 0 deletions src/Protocol/Smtp.php
Expand Up @@ -193,6 +193,15 @@ public function helo($host = '127.0.0.1')
$this->auth();
}

/**
* Returns the perceived session status
*
* @return boolean
*/
public function hasSession()
{
return $this->sess;
}

/**
* Send EHLO or HELO depending on capabilities of smtp host
Expand Down Expand Up @@ -367,6 +376,7 @@ public function auth()
*/
public function disconnect()
{
$this->quit();
$this->_disconnect();
}

Expand Down
20 changes: 16 additions & 4 deletions src/Transport/Smtp.php
Expand Up @@ -201,9 +201,8 @@ public function send(Message $message)
// If sending multiple messages per session use existing adapter
$connection = $this->getConnection();

if (!($connection instanceof Protocol\Smtp)) {
// First time connecting
$connection = $this->lazyLoadConnection();
if (!($connection instanceof Protocol\Smtp) || !$connection->hasSession()) {
$connection = $this->connect();
} else {
// Reset connection to ensure reliable transaction
$connection->rset();
Expand Down Expand Up @@ -322,8 +321,21 @@ protected function lazyLoadConnection()
$config['port'] = $options->getPort();
$connection = $this->plugin($options->getConnectionClass(), $config);
$this->connection = $connection;
return $this->connect();
}

/**
* Connect the connection, and pass it helo
*
* @return Protocol\Smtp
*/
protected function connect()
{
if (!$this->connection instanceof Protocol\Smtp) {
$this->lazyLoadConnection();
}
$this->connection->connect();
$this->connection->helo($options->getName());
$this->connection->helo($this->getOptions()->getName());
return $this->connection;
}
}
2 changes: 1 addition & 1 deletion test/Protocol/SmtpTest.php
Expand Up @@ -46,7 +46,7 @@ public function testSendMinimalMail()
->setBody('testSendMailWithoutMinimalHeaders')
->addTo('zf-devteam@zend.com', 'ZF DevTeam')
;
$expectedMessage = "RSET\r\n"
$expectedMessage = "EHLO localhost\r\n"
. "MAIL FROM:<ralph.schindler@zend.com>\r\n"
. "DATA\r\n"
. "Date: Sun, 10 Jun 2012 20:07:24 +0200\r\n"
Expand Down
15 changes: 7 additions & 8 deletions test/TestAsset/SmtpProtocolSpy.php
Expand Up @@ -24,28 +24,27 @@ class SmtpProtocolSpy extends Smtp
protected $connect = false;
protected $mail;
protected $rcptTest = array();
protected $sess = true;

public function connect()
{
$this->connect = true;
return true;
}

public function helo($serverName = '127.0.0.1')
public function disconnect()
{
parent::helo($serverName);
$this->connect = false;
parent::disconnect();
}

public function quit()
public function helo($serverName = '127.0.0.1')
{
$this->rset();
parent::helo($serverName);
}

public function disconnect()
public function quit()
{
$this->connect = false;
$this->rset();
parent::quit();
}

public function rset()
Expand Down
14 changes: 13 additions & 1 deletion test/Transport/SmtpTest.php
Expand Up @@ -157,7 +157,7 @@ public function testAutoDisconnectTrue()
{
$this->connection->connect();
unset($this->transport);
$this->assertFalse($this->connection->isConnected());
$this->assertFalse($this->connection->hasSession());
}

public function testAutoDisconnectFalse()
Expand All @@ -175,4 +175,16 @@ public function testDisconnect()
$this->transport->disconnect();
$this->assertFalse($this->connection->isConnected());
}

public function testDisconnectSendReconnects()
{
$this->assertFalse($this->connection->hasSession());
$this->transport->send($this->getMessage());
$this->assertTrue($this->connection->hasSession());
$this->connection->disconnect();

$this->assertFalse($this->connection->hasSession());
$this->transport->send($this->getMessage());
$this->assertTrue($this->connection->hasSession());
}
}

0 comments on commit 818d7d9

Please sign in to comment.