Skip to content
Browse files

- Add 'imap_timeout' option (#1486760)

  • Loading branch information...
1 parent de9f799 commit f07d238b1b4d75b34639be873dcc1b1627404ae7 @alecpl alecpl committed
Showing with 21 additions and 6 deletions.
  1. +1 −0 CHANGELOG
  2. +6 −0 config/main.inc.php.dist
  3. +5 −4 program/include/rcmail.php
  4. +9 −2 program/include/rcube_imap_generic.php
View
1 CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
+- Add 'imap_timeout' option (#1486760)
- Fix forwarding of messages with winmail attachments
- Fix handling of uuencoded attachments in message body (#1485839)
- Added list_mailboxes hook in rcube_imap::list_unsubscribed() (#1486668)
View
6 config/main.inc.php.dist
@@ -80,6 +80,9 @@ $rcmail_config['imap_delimiter'] = null;
// after login. Set to True if you've got this case.
$rcmail_config['imap_force_caps'] = false;
+// IMAP connection timeout, in seconds. Default: 0 (no limit)
+$rcmail_config['imap_timeout'] = 0;
+
// ----------------------------------
// SMTP
// ----------------------------------
@@ -111,6 +114,9 @@ $rcmail_config['smtp_auth_type'] = '';
// localhost if that isn't defined.
$rcmail_config['smtp_helo_host'] = '';
+// SMTP connection timeout, in seconds. Default: 0 (no limit)
+$rcmail_config['smtp_timeout'] = 0;
+
// ----------------------------------
// SYSTEM
// ----------------------------------
View
9 program/include/rcmail.php
@@ -428,10 +428,11 @@ public function imap_init($connect = false)
// can save time detecting them using NAMESPACE and LIST
$options = array(
'auth_method' => $this->config->get('imap_auth_type', 'check'),
- 'delimiter' => isset($_SESSION['imap_delimiter']) ? $_SESSION['imap_delimiter'] : $this->config->get('imap_delimiter'),
- 'rootdir' => isset($_SESSION['imap_root']) ? $_SESSION['imap_root'] : $this->config->get('imap_root'),
- 'debug_mode' => (bool) $this->config->get('imap_debug', 0),
- 'force_caps' => (bool) $this->config->get('imap_force_caps'),
+ 'delimiter' => isset($_SESSION['imap_delimiter']) ? $_SESSION['imap_delimiter'] : $this->config->get('imap_delimiter'),
+ 'rootdir' => isset($_SESSION['imap_root']) ? $_SESSION['imap_root'] : $this->config->get('imap_root'),
+ 'debug_mode' => (bool) $this->config->get('imap_debug', 0),
+ 'force_caps' => (bool) $this->config->get('imap_force_caps'),
+ 'timeout' => (int) $this->config->get('imap_timeout', 0),
);
$this->imap->set_options($options);
View
11 program/include/rcube_imap_generic.php
@@ -611,14 +611,21 @@ function connect($host, $user, $password, $options=null)
$host = $this->prefs['ssl_mode'] . '://' . $host;
}
- $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, 10);
+ // Connect
+ if ($this->prefs['timeout'] > 0)
+ $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']);
+ else
+ $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr);
+
if (!$this->fp) {
$this->error = sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr);
$this->errornum = -2;
return false;
}
- stream_set_timeout($this->fp, 10);
+ if ($this->prefs['timeout'] > 0)
+ stream_set_timeout($this->fp, $this->prefs['timeout']);
+
$line = trim(fgets($this->fp, 8192));
if ($this->prefs['debug_mode'] && $line) {

0 comments on commit f07d238

Please sign in to comment.
Something went wrong with that request. Please try again.