From 4e81b24777a4bf4232b89783a6b422b516976b5c Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Thu, 13 Jan 2011 11:58:36 -0700 Subject: [PATCH] Optimize header parsing when raw data is available --- framework/Mail/lib/Horde/Mail/Transport.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/framework/Mail/lib/Horde/Mail/Transport.php b/framework/Mail/lib/Horde/Mail/Transport.php index 23edadfbf..4ecfe236c 100644 --- a/framework/Mail/lib/Horde/Mail/Transport.php +++ b/framework/Mail/lib/Horde/Mail/Transport.php @@ -111,8 +111,11 @@ abstract class Horde_Mail_Transport */ public function prepareHeaders(array $headers) { - $lines = array(); $from = null; + $lines = array(); + $raw = isset($headers['_raw']) + ? $headers['_raw'] + : null; $parser = new Horde_Mail_Rfc822(); @@ -129,7 +132,7 @@ abstract class Horde_Mail_Transport } $lines[] = $key . ': ' . $value; - } elseif (strcasecmp($key, 'Received') === 0) { + } elseif (!$raw && (strcasecmp($key, 'Received') === 0)) { $received = array(); if (!is_array($value)) { $value = array($value); @@ -143,7 +146,7 @@ abstract class Horde_Mail_Transport // flag messages with Received: headers after the Subject: // as spam. $lines = array_merge($received, $lines); - } else { + } elseif (!$raw) { // If $value is an array (i.e., a list of addresses), convert // it to a comma-delimited string of its elements (addresses). if (is_array($value)) { @@ -153,7 +156,7 @@ abstract class Horde_Mail_Transport } } - return array($from, isset($headers['_raw']) ? $headers['_raw'] : join($this->sep, $lines)); + return array($from, $raw ? $raw : implode($this->sep, $lines)); } /** -- 2.11.0