From b1a660ef5e1b23711d34fdf1766663cbf176a5af Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 3 Jul 2013 18:02:37 -0500
Subject: [PATCH] Fix attachments posted to pipe.php

- Handle decoding large base64 encoded attachments better
- Avoid transcoding from one charset to the same
- Avoid encoding attachments without a declared charset
---
 include/class.format.php    | 3 +++
 include/class.mailparse.php | 7 ++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/include/class.format.php b/include/class.format.php
index 10859d15a..ce39d5fbd 100644
--- a/include/class.format.php
+++ b/include/class.format.php
@@ -45,6 +45,9 @@ class Format {
         if($charset && in_array(strtolower(trim($charset)),
                 array('default','x-user-defined','iso')))
             $charset = 'ISO-8859-1';
+        
+        if (strcasecmp($charset, $encoding) === 0)
+            return $text;
 
         $original = $text;
         if(function_exists('iconv') && $charset)
diff --git a/include/class.mailparse.php b/include/class.mailparse.php
index 3347451de..b1f57a6f5 100644
--- a/include/class.mailparse.php
+++ b/include/class.mailparse.php
@@ -202,9 +202,14 @@ class Mail_Parse {
             $file=array(
                     'name'  => $filename,
                     'type'  => strtolower($part->ctype_primary.'/'.$part->ctype_secondary),
-                    'data'  => $this->mime_encode($part->body, $part->ctype_parameters['charset'])
                     );
 
+            if ($part->ctype_parameters['charset'])
+                $file['data'] = $this->mime_encode($part->body,
+                    $part->ctype_parameters['charset']);
+            else
+                $file['data'] = $part->body;
+
             if(!$this->decode_bodies && $part->headers['content-transfer-encoding'])
                 $file['encoding'] = $part->headers['content-transfer-encoding'];
 
-- 
GitLab