Update for session.auto_start:
authorsizzlingmercury <sizzlingmercury@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 23 Sep 2002 15:15:22 +0000 (15:15 +0000)
committersizzlingmercury <sizzlingmercury@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Mon, 23 Sep 2002 15:15:22 +0000 (15:15 +0000)
If session is automatically started before the class
definitions are loaded, many functions (compose, certain
parts of read_body, download, etc.) will fail with the
following error:
The script tried to execute a method or access a
property of an incomplete object.

Still to do: ensure that we close the session using
session_write_close() as soon as the page is finished
loading session-specific variables to reduce
contention between frames.

git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@3717 7612ce4b-ef26-0410-bec9-ea0150e637f0

include/validate.php

index bbcd99919f8d84ef33cae9a7cfe386cd68a096a4..79b1bd15a83780716b6e4673f17d51e4effb441f 100644 (file)
 
 /* include the mime class before the session start ! otherwise we can't store
  * messages with a session_register.
+ *
+ * From http://www.php.net/manual/en/language.oop.serialization.php:
+ *   In case this isn't clear:
+ *   In 4.2 and below: 
+ *      session.auto_start and session objects are mutually exclusive.
+ *
+ * We need to load the classes before the session is started, 
+ * except that the session could be started automatically 
+ * via session.auto_start. So, we'll close the session, 
+ * then load the classes, and reopen the session which should 
+ * make everything happy.  
+ *
+ * ** Note this means that for the 1.3.2 release, we should probably
+ * recommend that people set session.auto_start=0 to avoid this altogether.
  */
+session_write_close();
+
 /* SquirrelMail required files. */
 require_once(SM_PATH . 'class/mime.class.php');