From 4f5c1bcbc2b74817cd3d1dc3ff1c90c6dc0739b8 Mon Sep 17 00:00:00 2001 From: lkehresman Date: Fri, 2 Feb 2001 01:09:36 +0000 Subject: [PATCH] improved imap_general.php -- much better handling git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1034 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- ChangeLog | 5 +++-- functions/imap_general.php | 42 ++++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index d826533c..4b2afcec 100644 --- 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 diff --git a/functions/imap_general.php b/functions/imap_general.php index 496e2dd8..d23f0c37 100755 --- a/functions/imap_general.php +++ b/functions/imap_general.php @@ -26,6 +26,7 @@ } $data = Array(); + $total_size = 0; $continue = true; while ($continue) { @@ -33,28 +34,39 @@ while (strpos($read, "\n") === false) { $read .= fgets($imap_stream, 9096); } + // For debugging purposes if ($imap_general_debug) { echo "$read
\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); + } } } -- 2.25.1