CHANGELOG | ●●●●● patch | view | raw | blame | history | |
program/include/rcube_smtp.php | ●●●●● patch | view | raw | blame | history | |
program/lib/Net/SMTP.php | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== - PEAR::Net_SMTP 1.5.2, fixed timeout issue (#1487843) - Added plugin hook for request token creation - Replace LDAP vars in group queries (#1487837) - Fix vcard folding with uncode characters (#1487868) @@ -17,7 +18,6 @@ - Enable TinyMCE's contextmenu (#1487014) - TinyMCE 3.4.1 - Stateless request tokens. No keep-alive necessary on login page (#1487829) - PEAR::Net_SMTP 1.5.1 - Allow multiple concurrent compose sessions - Force names of unique constraints in PostgreSQL DDL - Add code for prevention from IMAP connection hangs when server closes socket unexpectedly program/include/rcube_smtp.php
@@ -116,6 +116,13 @@ $this->error = array('label' => 'smtpconnerror', 'vars' => array('code' => $this->conn->_code)); $this->conn = null; return false; } // workaround for timeout bug in Net_SMTP 1.5.[0-1] (#1487843) if (method_exists($this->conn, 'setTimeout') && ($timeout = ini_get('default_socket_timeout')) ) { $this->conn->setTimeout($timeout); } $smtp_user = str_replace('%u', $_SESSION['username'], $CONFIG['smtp_user']); program/lib/Net/SMTP.php
@@ -106,6 +106,14 @@ 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 @@ * @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 @@ $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 @@ { $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,9 +428,11 @@ * timeout values for the initial connection (our $timeout parameter) * and all other socket operations. */ if ($this->_timeout > 0) { if (PEAR::isError($error = $this->setTimeout($this->_timeout))) { return $error; } } if (PEAR::isError($error = $this->_parseResponse(220))) { return $error;