summaryrefslogtreecommitdiff
path: root/program/lib
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-04-17 09:34:02 +0000
committeralecpl <alec@alec.pl>2011-04-17 09:34:02 +0000
commit8ffd08a7398d044dc7e9f5deecc76a29c6aa270e (patch)
treea4fb7dedbd3c8e7cb51c9db80d7f8c1c2480e867 /program/lib
parentd3105370870a8c51aaeb6a18f561311202da3356 (diff)
- Aplied fixes from trunk
Diffstat (limited to 'program/lib')
-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))) {