From 2f2f15b7aabe19e45dad9bddb7eb7f4394aa1e21 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Mon, 04 Sep 2006 08:26:30 -0400
Subject: [PATCH] Little improvements for message parsing and encoding

---
 index.php                      |   22 ++++++++++++++--------
 program/include/main.inc       |    2 +-
 program/include/rcube_imap.inc |    5 +++--
 3 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/index.php b/index.php
index ff73a00..68c0f17 100644
--- a/index.php
+++ b/index.php
@@ -2,7 +2,7 @@
 /*
  +-----------------------------------------------------------------------+
  | RoundCube Webmail IMAP Client                                         |
- | Version 0.1-20060901                                                  |
+ | Version 0.1-20060904                                                  |
  |                                                                       |
  | Copyright (C) 2005-2006, RoundCube Dev. - Switzerland                 |
  | Licensed under the GNU GPL                                            |
@@ -40,7 +40,7 @@
 
 */
 
-define('RCMAIL_VERSION', '0.1-20060901');
+define('RCMAIL_VERSION', '0.1-20060904');
 
 // define global vars
 $CHARSET = 'UTF-8';
@@ -87,12 +87,6 @@
 // set PEAR error handling
 // PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_NOTICE);
 
-// use gzip compression if supported
-if (function_exists('ob_gzhandler') && !ini_get('zlib.output_compression'))
-  ob_start('ob_gzhandler');
-else
-  ob_start();
-
 
 // catch some url/post parameters
 $_task = get_input_value('_task', RCUBE_INPUT_GPC);
@@ -104,6 +98,18 @@
 
 if (!empty($_GET['_remote']))
   $REMOTE_REQUEST = TRUE;
+  
+
+// set output buffering
+if ($_action != 'get' && $_action != 'viewsource')
+  {
+  // use gzip compression if supported
+  if (function_exists('ob_gzhandler') && !ini_get('zlib.output_compression'))
+    ob_start('ob_gzhandler');
+  else
+    ob_start();
+  }
+
 
 // start session with requested task
 rcmail_startup($_task);
diff --git a/program/include/main.inc b/program/include/main.inc
index 9214948..ae7d50b 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -842,7 +842,7 @@
   $from = strtoupper($from);
   $to = $to==NULL ? strtoupper($GLOBALS['CHARSET']) : strtoupper($to);
 
-  if ($from==$to || $str=='')
+  if ($from==$to || $str=='' || empty($from))
     return $str;
 
   // convert charset using mbstring module  
diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc
index bcbea81..c4dfd20 100644
--- a/program/include/rcube_imap.inc
+++ b/program/include/rcube_imap.inc
@@ -1010,10 +1010,11 @@
 	// get part size
 	if (!empty($part[6]) && $part[6]!='NIL')
 	  $struct->size = intval($part[6]);
-	  
+
 	// read part disposition
     $di = count($part) - 2;
-    if (is_array($part[$di]))
+    if ((is_array($part[$di]) && count($part[$di]) == 2 && is_array($part[$di][1])) ||
+        (is_array($part[--$di]) && count($part[$di]) == 2))
       {
       $struct->disposition = strtolower($part[$di][0]);
 

--
Gitblit v1.9.1