From c9ca6ada03f27bfe8c86f61f418afb86971f9dff Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Fri, 24 Oct 2008 20:01:45 -0400 Subject: [PATCH] added obscure ASCII encoding aliases, added more error checking to RFC2822 date parsing --- program/lib/Mail/mime.php | 1 - index.php | 2 -- program/include/main.inc | 25 ++++++++++++++----------- program/include/rcube_imap.php | 14 ++++++++------ program/steps/mail/show.inc | 4 ++-- program/include/rcube_message.php | 2 +- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/index.php b/index.php index adab411..a080ef5 100644 --- a/index.php +++ b/index.php @@ -49,7 +49,6 @@ } } - // check if config files had errors if ($err_str = $RCMAIL->config->get_error()) { raise_error(array( @@ -65,7 +64,6 @@ 'type' => 'db', 'message' => $err_str), FALSE, TRUE); } - // error steps if ($RCMAIL->action=='error' && !empty($_GET['_code'])) { diff --git a/program/include/main.inc b/program/include/main.inc index 75ad2b3..8eb2c81 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -188,12 +188,14 @@ return $str; $aliases = array( - 'US-ASCII' => 'ISO-8859-1', - 'UNKNOWN-8BIT' => 'ISO-8859-15', - 'X-UNKNOWN' => 'ISO-8859-15', - 'X-USER-DEFINED' => 'ISO-8859-15', - 'ISO-8859-8-I' => 'ISO-8859-8', - 'KS_C_5601-1987' => 'EUC-KR', + 'US-ASCII' => 'ISO-8859-1', + 'ANSI_X3.110-1983' => 'ISO-8859-1', + 'ANSI_X3.4-1968' => 'ISO-8859-1', + 'UNKNOWN-8BIT' => 'ISO-8859-15', + 'X-UNKNOWN' => 'ISO-8859-15', + 'X-USER-DEFINED' => 'ISO-8859-15', + 'ISO-8859-8-I' => 'ISO-8859-8', + 'KS_C_5601-1987' => 'EUC-KR', ); // convert charset using iconv module @@ -684,10 +686,10 @@ $ts = $date; else if (!empty($date)) { - while (($ts = @strtotime($date))===false) + // if date parsing fails, we have a date in non-rfc format. + // remove token from the end and try again + while ((($ts = @strtotime($date))===false) || ($ts < 0)) { - // if we have a date in non-rfc format - // remove token from the end and try again $d = explode(' ', $date); array_pop($d); if (!$d) break; @@ -825,7 +827,7 @@ $log_entry = sprintf("[%s]: %s\n", date("d-M-Y H:i:s O", mktime()), $line); - + if ($CONFIG['log_driver'] == 'syslog') { if ($name == 'errors') $prio = LOG_ERR; @@ -836,10 +838,11 @@ // log_driver == 'file' is assumed here if (empty($CONFIG['log_dir'])) $CONFIG['log_dir'] = INSTALL_PATH.'logs'; - + // try to open specific log file for writing if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) { fwrite($fp, $log_entry); + fflush($fp); fclose($fp); } } diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 4a71c97..e18c14c 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1025,14 +1025,16 @@ $headers = &$this->get_cached_message($cache_key, $uid, true); // return cached message structure - if (is_object($headers) && is_object($headers->structure)) + if (is_object($headers) && is_object($headers->structure)) { return $headers->structure; - - // resolve message sequence number - if (!($msg_id = $this->_uid2id($uid))) - return FALSE; + } - $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id); + // resolve message sequence number + if (!($msg_id = $this->_uid2id($uid))) { + return FALSE; + } + + $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id); $structure = iml_GetRawStructureArray($structure_str); $struct = false; diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index 10b9e8e..d59c944 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -63,7 +63,7 @@ 'prefer_html' => $this->app->config->get('prefer_html'), 'get_url' => rcmail_url('get', array('_mbox' => $this->imap->get_mailbox_name(), '_uid' => $uid)) ); - + if ($this->structure = $this->imap->get_structure($uid)) { $this->get_mime_numbers($this->structure); $this->parse_structure($this->structure); diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php index 688c326..975ca48 100644 --- a/program/lib/Mail/mime.php +++ b/program/lib/Mail/mime.php @@ -1068,7 +1068,6 @@ //Concat the double quotes and encoded string together $hdr_value = $quotePrefix . $hdr_value . $quoteSuffix; - $hdr_value_out = $hdr_value; $realMax = $maxLength1stLine + strlen($prefix . $suffix); if (strlen($hdr_value_out) >= $realMax) { diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 4f52538..4f0a3b0 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -24,7 +24,7 @@ // similar code as in program/steps/mail/get.inc if ($_GET['_uid']) { $MESSAGE = new rcube_message(get_input_value('_uid', RCUBE_INPUT_GET)); - + // set message charset as default if (!empty($MESSAGE->headers->charset)) $IMAP->set_charset($MESSAGE->headers->charset); @@ -217,7 +217,7 @@ if ($RCMAIL->action=='print' && $OUTPUT->template_exists('printmessage')) $OUTPUT->send('printmessage'); else if ($RCMAIL->action=='preview' && $OUTPUT->template_exists('messagepreview')) - $OUTPUT->send('messagepreview'); + $OUTPUT->send('messagepreview'); else $OUTPUT->send('message'); ?> -- Gitblit v1.9.1