瀏覽代碼

Fixed session lockups on large attachment downloads.

tokul 19 年之前
父節點
當前提交
2082fcc65c
共有 2 個文件被更改,包括 13 次插入2 次删除
  1. 1 0
      ChangeLog
  2. 12 2
      src/download.php

+ 1 - 0
ChangeLog

@@ -44,6 +44,7 @@ Version 1.5.2 - CVS
     broke detection of unsubscribed special folders.
   - Undo extra sanitizing in decodeHeader() function (#1460638).
   - Added workaround for broken OpenBSD 3.8+ setlocale() function (#1427512).
+  - Fixed session lockups on large attachment downloads.
 
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------

+ 12 - 2
src/download.php

@@ -133,6 +133,18 @@ if (strlen($filename) < 1) {
     $filename = $filename . '.' . $suffix;
 }
 
+/**
+ * Update mailbox_cache and close session in order to prevent
+ * script locking on larger downloads. SendDownloadHeaders() and 
+ * mime_print_body_lines() don't write information to session.
+ * mime_print_body_lines() call duration depends on size of 
+ * attachment and script can cause interface lockups, if session 
+ * is not closed.
+ */
+$mailbox_cache[$aMailbox['NAME']] = $aMailbox;
+sqsession_register($mailbox_cache,'mailbox_cache');
+session_write_close();
+
 /*
  * Note:
  *    The following sections display the attachment in different
@@ -156,7 +168,5 @@ if (isset($absolute_dl) && $absolute_dl) {
 /* be aware that any warning caused by download.php will corrupt the
  * attachment in case of ERROR reporting = E_ALL and the output is the screen */
 mime_print_body_lines ($imapConnection, $passed_id, $ent_id, $encoding);
-$mailbox_cache[$aMailbox['NAME']] = $aMailbox;
-sqsession_register($mailbox_cache,'mailbox_cache');
 
 ?>