Thomas Bruederli
2015-04-17 a3644638aaf0418598196a870204e0b632a4c8ad
program/lib/Roundcube/rcube.php
@@ -521,48 +521,15 @@
        ini_set('session.use_only_cookies', 1);
        ini_set('session.cookie_httponly', 1);
        // use database for storing session data
        $storage = $this->config->get('session_storage', 'db');
        $this->session = $this->get_session($storage);
        // register default gc handler
        // get session driver instance
        $this->session = rcube_session::factory($this->config);
        $this->session->register_gc_handler(array($this, 'gc'));
        $this->session->set_secret($this->config->get('des_key') . dirname($_SERVER['SCRIPT_NAME']));
        $this->session->set_ip_check($this->config->get('ip_check'));
        if ($this->config->get('session_auth_name')) {
            $this->session->set_cookiename($this->config->get('session_auth_name'));
        }
        // start PHP session (if not in CLI mode)
        if ($_SERVER['REMOTE_ADDR']) {
            $this->session->start($this->config);
            $this->session->start();
        }
    }
    /**
     * get an rcube_session instance
     *
     * @return rcube_session
     */
    private function get_session($storage)
    {
        // class name for this storage
        $class = "rcube_session_" . $storage;
        // try to instantiate class
        if(class_exists($class)) {
            return new $class();
        }
        // no storage found, raise error
        rcube::raise_error(array('code' => 604, 'type' => 'session',
                               'line' => __LINE__, 'file' => __FILE__,
                               'message' => "Failed to find session driver. Check session_storage config option"),
                           true, true);
    }
    /**
     * Garbage collector - cache/temp cleaner
@@ -1706,15 +1673,18 @@
            if ($message->getParam('delay_file_io')) {
                // use common temp dir
                $temp_dir = $this->config->get('temp_dir');
                $body_file = tempnam($temp_dir, 'rcmMsg');
                if (PEAR::isError($mime_result = $message->saveMessageBody($body_file))) {
                $temp_dir    = $this->config->get('temp_dir');
                $body_file   = tempnam($temp_dir, 'rcmMsg');
                $mime_result = $message->saveMessageBody($body_file);
                if (is_a($mime_result, 'PEAR_Error')) {
                    self::raise_error(array('code' => 650, 'type' => 'php',
                        'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Could not create message: ".$mime_result->getMessage()),
                        TRUE, FALSE);
                        true, false);
                    return false;
                }
                $msg_body = fopen($body_file, 'r');
            }
            else {
@@ -1757,11 +1727,11 @@
            $msg_body = $message->get();
            if (PEAR::isError($msg_body)) {
            if (is_a($msg_body, 'PEAR_Error')) {
                self::raise_error(array('code' => 650, 'type' => 'php',
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Could not create message: ".$msg_body->getMessage()),
                    TRUE, FALSE);
                    true, false);
            }
            else {
                $delim   = $this->config->header_delimiter();