summaryrefslogtreecommitdiff
path: root/program/lib/Net/SMTP.php
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-04-17 09:22:03 +0000
committeralecpl <alec@alec.pl>2011-04-17 09:22:03 +0000
commit462de2d2028617c8464f174987785a92583313be (patch)
treec5555f71ca9cb9361061490b7cced96713bab5a3 /program/lib/Net/SMTP.php
parentf62468d3ec5ab1c751207ee1c04011278522589e (diff)
- PEAR::Net_SMTP 1.5.2, fixed timeout issue (#1487843)
Diffstat (limited to 'program/lib/Net/SMTP.php')
-rw-r--r--program/lib/Net/SMTP.php21
1 files changed, 17 insertions, 4 deletions
diff --git a/program/lib/Net/SMTP.php b/program/lib/Net/SMTP.php
index fef8076ce..0463758b3 100644
--- a/program/lib/Net/SMTP.php
+++ b/program/lib/Net/SMTP.php
@@ -106,6 +106,14 @@ class Net_SMTP
var $_socket = null;
/**
+ * Array of socket options that will be passed to Net_Socket::connect().
+ * @see stream_context_create()
+ * @var array
+ * @access private
+ */
+ var $_socket_options = null;
+
+ /**
* The socket I/O timeout value in seconds.
* @var int
* @access private
@@ -156,12 +164,13 @@ class Net_SMTP
* @param string $localhost The value to give when sending EHLO or HELO.
* @param boolean $pipeling Use SMTP command pipelining
* @param integer $timeout Socket I/O timeout in seconds.
+ * @param array $socket_options Socket stream_context_create() options.
*
* @access public
* @since 1.0
*/
function Net_SMTP($host = null, $port = null, $localhost = null,
- $pipelining = false, $timeout = 0)
+ $pipelining = false, $timeout = 0, $socket_options = null)
{
if (isset($host)) {
$this->host = $host;
@@ -175,6 +184,7 @@ class Net_SMTP
$this->pipelining = $pipelining;
$this->_socket = new Net_Socket();
+ $this->_socket_options = $socket_options;
$this->_timeout = $timeout;
/* Include the Auth_SASL package. If the package is not
@@ -405,7 +415,8 @@ class Net_SMTP
{
$this->_greeting = null;
$result = $this->_socket->connect($this->host, $this->port,
- $persistent, $timeout);
+ $persistent, $timeout,
+ $this->_socket_options);
if (PEAR::isError($result)) {
return PEAR::raiseError('Failed to connect socket: ' .
$result->getMessage());
@@ -417,8 +428,10 @@ class Net_SMTP
* timeout values for the initial connection (our $timeout parameter)
* and all other socket operations.
*/
- if (PEAR::isError($error = $this->setTimeout($this->_timeout))) {
- return $error;
+ if ($this->_timeout > 0) {
+ if (PEAR::isError($error = $this->setTimeout($this->_timeout))) {
+ return $error;
+ }
}
if (PEAR::isError($error = $this->_parseResponse(220))) {