[Svn] r5229 - in branches/release-0.6: . program/include program/steps/mail

trac at roundcube.net trac at roundcube.net
Fri Sep 16 21:13:27 CEST 2011


Author: thomasb
Date: 2011-09-16 14:13:27 -0500 (Fri, 16 Sep 2011)
New Revision: 5229

Modified:
   branches/release-0.6/CHANGELOG
   branches/release-0.6/program/include/rcube_session.php
   branches/release-0.6/program/steps/mail/attachments.inc
   branches/release-0.6/program/steps/mail/compose.inc
   branches/release-0.6/program/steps/mail/func.inc
   branches/release-0.6/program/steps/mail/sendmail.inc
Log:
Backport r5226 to release 0.6 branch

Modified: branches/release-0.6/CHANGELOG
===================================================================
--- branches/release-0.6/CHANGELOG	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/CHANGELOG	2011-09-16 19:13:27 UTC (rev 5229)
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix session race conditions when composing new messages
 - jQuery 1.6.4
 - Fix handling of binary attachments encoded with quoted-printable (#1488065)
 - Fix text-overflow:ellipsis issues on messages list in FF7 and Webkit (#1488061)

Modified: branches/release-0.6/program/include/rcube_session.php
===================================================================
--- branches/release-0.6/program/include/rcube_session.php	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/program/include/rcube_session.php	2011-09-16 19:13:27 UTC (rev 5229)
@@ -333,9 +333,9 @@
    */
   public function cleanup()
   {
-    // current compose information is stored in $_SESSION['compose'], move it to $_SESSION['compose_data']
-    if ($_SESSION['compose']) {
-      $_SESSION['compose_data'][$_SESSION['compose']['id']] = $_SESSION['compose'];
+    // current compose information is stored in $_SESSION['compose'], move it to $_SESSION['compose_data_<ID>']
+    if ($compose_id = $_SESSION['compose']['id']) {
+      $_SESSION['compose_data_'.$compose_id] = $_SESSION['compose'];
       $this->remove('compose');
     }
   }

Modified: branches/release-0.6/program/steps/mail/attachments.inc
===================================================================
--- branches/release-0.6/program/steps/mail/attachments.inc	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/program/steps/mail/attachments.inc	2011-09-16 19:13:27 UTC (rev 5229)
@@ -25,7 +25,7 @@
 }
 
 $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC);
-$_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID];
+$_SESSION['compose'] = $_SESSION['compose_data_'.$COMPOSE_ID];
 
 if (!$_SESSION['compose']) {
   die("Invalid session var!");

Modified: branches/release-0.6/program/steps/mail/compose.inc
===================================================================
--- branches/release-0.6/program/steps/mail/compose.inc	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/program/steps/mail/compose.inc	2011-09-16 19:13:27 UTC (rev 5229)
@@ -29,7 +29,7 @@
 $MESSAGE = NULL;
 
 $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GET);
-$_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID];
+$_SESSION['compose'] = $_SESSION['compose_data_'.$COMPOSE_ID];
 
 // Nothing below is called during message composition, only at "new/forward/reply/draft" initialization or
 // if a compose-ID is given (i.e. when the compose step is opened in a new window/tab).
@@ -39,7 +39,7 @@
   if ($COMPOSE_ID)
     raise_error(array('code' => 500, 'type' => 'php',
       'file' => __FILE__, 'line' => __LINE__,
-      'message' => "Invalid session"), true, true);
+      'message' => "Invalid compose ID"), true, true);
 
   $_SESSION['compose'] = array(
     'id' => uniqid(mt_rand()),

Modified: branches/release-0.6/program/steps/mail/func.inc
===================================================================
--- branches/release-0.6/program/steps/mail/func.inc	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/program/steps/mail/func.inc	2011-09-16 19:13:27 UTC (rev 5229)
@@ -1427,12 +1427,12 @@
  */
 function rcmail_compose_cleanup($id)
 {
-  if (!isset($_SESSION['compose_data'][$id]))
+  if (!isset($_SESSION['compose_data_'.$id]))
     return;
 
   $rcmail = rcmail::get_instance();
   $rcmail->plugins->exec_hook('attachments_cleanup', array('group' => $id));
-  unset($_SESSION['compose_data'][$id]);
+  $rcmail->session->remove('compose_data_'.$id);
 }
 
 

Modified: branches/release-0.6/program/steps/mail/sendmail.inc
===================================================================
--- branches/release-0.6/program/steps/mail/sendmail.inc	2011-09-16 19:08:07 UTC (rev 5228)
+++ branches/release-0.6/program/steps/mail/sendmail.inc	2011-09-16 19:13:27 UTC (rev 5229)
@@ -27,7 +27,7 @@
 $savedraft = !empty($_POST['_draft']) ? true : false;
 
 $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC);
-$_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID];
+$_SESSION['compose'] = $_SESSION['compose_data_'.$COMPOSE_ID];
 
 /****** checks ********/
 

_______________________________________________
http://lists.roundcube.net/mailman/listinfo/svn



More information about the Svn mailing list