diff -urN plugins.orig/managesieve/config.inc.php.dist plugins/managesieve/config.inc.php.dist
--- plugins.orig/managesieve/config.inc.php.dist 2013-03-27 22:51:27.000000000 +0200
+++ plugins/managesieve/config.inc.php.dist 2013-07-27 16:28:54.000000000 +0300
@@ -1,5 +1,10 @@
rc->config->get('managesieve_db_dsnw') and $this->rc->config->get('managesieve_db_query')) {
+ $managesieve_db = new rcube_mdb2($this->rc->config->get('managesieve_db_dsnw'), '', FALSE);
+ $managesieve_db->db_connect('w');
+
+ $managesieve_db->set_debug((bool) $this->rc->config->get('sql_debug'));
+ $dsn = MDB2::parseDSN($this->rc->config->get('managesieve_db_dsnw'));
+ $managesieve_db->set_debug(true);
+
+ $sql = str_replace('%u', $_SESSION['username'], $this->rc->config->get('managesieve_db_query'));
+
+ $res = $managesieve_db->query($sql);
+ if ($error = $managesieve_db->is_error()) {
+ raise_error(array('code' => 601, 'type' => 'db', 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Managesieve plugin: query '$sql' failed. Check DSN and verify that SELECT privileges are granted to user '".$dsn['username']."'.
Error message: " . $error), true, true);
+ }
+
+ if ($row = $managesieve_db->fetch_assoc($res)) {
+ $host = $row['host'];
+ $port = $row['port'];
+ } else {
+ raise_error(array('code' => 403, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Unable to fetch info about managesieve host and port"), true, true);
+ }
+ } else {
+
$host = rcube_parse_host($this->rc->config->get('managesieve_host', 'localhost'));
$port = $this->rc->config->get('managesieve_port', 2000);
+ }
+
$host = rcube_idn_to_ascii($host);
$plugin = $this->rc->plugins->exec_hook('managesieve_connect', array(