private function max_packet_size()
    {
        if ($this->max_packet < 0) {
            $this->max_packet = 2097152; // default/max is 2 MB

            if ($this->type == 'db') {
                if ($value = $this->db->get_variable('max_allowed_packet', $this->max_packet)) {
                    $this->max_packet = $value;
                }
                $this->max_packet -= 2000;
            }
            else {
                $max_packet = rcube::get_instance()->config->get($this->type . '_max_allowed_packet');
                $this->max_packet = parse_bytes($max_packet) ?: $this->max_packet;
            }
        }

        return $this->max_packet;
    }