improved imap_general.php -- much better handling
authorlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 2 Feb 2001 01:09:36 +0000 (01:09 +0000)
committerlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 2 Feb 2001 01:09:36 +0000 (01:09 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1034 7612ce4b-ef26-0410-bec9-ea0150e637f0

ChangeLog
functions/imap_general.php

index d826533cf0bd91f33e5d0ab0d6059fc7052d86ca..4b2afcec596db0dec91f257d4cebfd6d62193ad1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
-Version 1.0.1 -- DEVELOPMENT
-----------------------------
+Version 1.0.1 -- February 1, 2001 
+---------------------------------
+- Improved the way sqimap_read_data() is handled
 - Sped up "no sorting" even more 
 - Fixed problems with sending messages
 - Fixed some pass-by-reference calls that caused problems with newer PHP versions
index 496e2dd84bc13e314bdebf1cd9341afb330b354f..d23f0c375944ce4e66fc1c28fa392af5b65079a3 100755 (executable)
@@ -26,6 +26,7 @@
       }
       
       $data = Array();
+      $total_size = 0;
       
       $continue = true;
       while ($continue) {
          while (strpos($read, "\n") === false) {
             $read .= fgets($imap_stream, 9096);
          }
+         // For debugging purposes
          if ($imap_general_debug) {
             echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
             flush();
          }
-         
-         if (ereg("^$pre (OK|BAD|NO)(.*)$", $read, $regs)) {
-            if ($size) {
-               $dt = $data;
-               $dt[0] = $dt[count($dt)-1] = "";
-               $d = implode ("", $dt);
-               if (strlen($d) >= $size) {
-                  $continue = false;
-               } else {
-                  $data[] = $read;
-                  $read = fgets ($imap_stream, 9096);
-               }
-            } else {
+
+
+         // If we know the size, no need to look at the end parameters
+         if ($size > 0) {
+            if ($total_size == $size) {
+               $data[] = $read;
+               $read = fgets($imap_stream, 9096);
+               $read = fgets($imap_stream, 9096);
+               $continue = false;
+            } else if ($total_size > $size) {
+               $difference = $total_size - $size;
+               $total_size = $total_size - strlen($read);
+               $read = substr ($read, 0, strlen($read)-$difference);
+               $data[] = $read;
+               $junk = fgets($imap_stream, 9096);
                $continue = false;
+            } else {
+               $data[] = $read;
+               $read = fgets($imap_stream, 9096);
             }
+            $total_size += strlen($read);
          } else {
-            $data[] = $read;
-            $read = fgets ($imap_stream, 9096);
+            if (ereg("^$pre (OK|BAD|NO)(.*)$", $read, $regs)) {
+               $continue = false;
+            } else {
+               $data[] = $read;
+               $read = fgets ($imap_stream, 9096);
+            }
          }
       }