Browse Source

Prevent session lock-up caused by filters plugin trying to move messages in an account that is over quota

pdontthink 11 years ago
parent
commit
cc7f92b6e3
2 changed files with 14 additions and 1 deletions
  1. 2 0
      doc/ChangeLog
  2. 12 1
      plugins/filters/filters.php

+ 2 - 0
doc/ChangeLog

@@ -393,6 +393,8 @@ Version 1.5.2 - SVN
     file or "4.  General Options ==> 21. Display login error from IMAP" 
     file or "4.  General Options ==> 21. Display login error from IMAP" 
     in the configuration tool.
     in the configuration tool.
   - Configuration tool now shows the SquirrelMail version
   - Configuration tool now shows the SquirrelMail version
+  - Prevent session lock-up caused by filters plugin trying to move
+    messages in an account that is over quota.
 
 
 Version 1.5.1 (branched on 2006-02-12)
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------
 --------------------------------------

+ 12 - 1
plugins/filters/filters.php

@@ -197,8 +197,19 @@ function start_filters($hook_args) {
 
 
     // if there were filtering errors previously during
     // if there were filtering errors previously during
     // this login session, we won't try again
     // this login session, we won't try again
+    //
+    // (errors that this plugin was able to catch or a "NO"
+    // response/failure from IMAP found in the current session,
+    // which could have resulted from an attempted filter copy
+    // (over quota), in which case execution halts before this
+    // plugin can catch the problem -- note, however, that any
+    // other IMAP "NO" failure (caused by unrelated actions) at
+    // any time during the current session will cause this plugin
+    // to effectively shut down)
+    //
     sqgetGlobalVar('filters_error', $filters_error, SQ_SESSION, FALSE);
     sqgetGlobalVar('filters_error', $filters_error, SQ_SESSION, FALSE);
-    if ($filters_error)
+    sqgetGlobalVar('IMAP_FATAL_ERROR_TYPE', $imap_fatal_error, SQ_SESSION, '');
+    if ($filters_error || $imap_fatal_error == 'NO')
         return;
         return;
 
 
     /**
     /**