Blame Horde_Imap_Client-upstream.patch

0b604a
From ae1adf9f1549f6bb826b541274949cfd0e77457e Mon Sep 17 00:00:00 2001
0b604a
From: Michael M Slusarz <slusarz@horde.org>
0b604a
Date: Tue, 13 Jan 2015 03:00:10 -0700
0b604a
Subject: [PATCH] [mms] Workaround broken in-memory stream filter handling.
0b604a
0b604a
Needed to work on PHP 5.5.21+ and 5.6.5+
0b604a
---
0b604a
 .../Horde/Imap/Client/Data/Format/Filter/Quote.php | 25 ++++++++++++++++++++--
0b604a
 framework/Imap_Client/package.xml                  |  4 ++--
0b604a
 2 files changed, 25 insertions(+), 4 deletions(-)
0b604a
0b604a
diff --git a/framework/Imap_Client/lib/Horde/Imap/Client/Data/Format/Filter/Quote.php b/framework/Imap_Client/lib/Horde/Imap/Client/Data/Format/Filter/Quote.php
0b604a
index a3f1788..3964f69 100644
0b604a
--- a/framework/Imap_Client/lib/Horde/Imap/Client/Data/Format/Filter/Quote.php
0b604a
+++ b/framework/Imap_Client/lib/Horde/Imap/Client/Data/Format/Filter/Quote.php
0b604a
@@ -23,11 +23,28 @@
0b604a
 class Horde_Imap_Client_Data_Format_Filter_Quote extends php_user_filter
0b604a
 {
0b604a
     /**
0b604a
+     * Has the initial quote been prepended?
0b604a
+     *
0b604a
+     * @var boolean
0b604a
+     */
0b604a
+    protected $_prepend;
0b604a
+
0b604a
+    /**
0b604a
+     */
0b604a
+    public function onCreate()
0b604a
+    {
0b604a
+        $this->_prepend = false;
0b604a
+    }
0b604a
+
0b604a
+    /**
0b604a
      * @see stream_filter_register()
0b604a
      */
0b604a
     public function filter($in, $out, &$consumed, $closing)
0b604a
     {
0b604a
-        stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
0b604a
+        if (!$this->_prepend) {
0b604a
+            stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
0b604a
+            $this->_prepend = true;
0b604a
+        }
0b604a
 
0b604a
         while ($bucket = stream_bucket_make_writeable($in)) {
0b604a
             $consumed += $bucket->datalen;
0b604a
@@ -35,7 +52,11 @@ public function filter($in, $out, &$consumed, $closing)
0b604a
             stream_bucket_append($out, $bucket);
0b604a
         }
0b604a
 
0b604a
-        stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
0b604a
+        /* feof() call needed due to:
0b604a
+         * http://news.php.net/php.internals/80363 */
0b604a
+        if ($closing || feof($this->stream)) {
0b604a
+            stream_bucket_append($out, stream_bucket_new($this->stream, '"'));
0b604a
+        }
0b604a
 
0b604a
         return PSFS_PASS_ON;
0b604a
     }