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(