thomascube
2011-09-16 85993b24f8860d7674414fce18acaa8bcef359a5
Backport r5226 to release 0.6 branch

6 files modified
19 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_session.php 6 ●●●● patch | view | raw | blame | history
program/steps/mail/attachments.inc 2 ●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 4 ●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 4 ●●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 2 ●●● patch | view | raw | blame | history
CHANGELOG
@@ -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)
program/include/rcube_session.php
@@ -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');
    }
  }
program/steps/mail/attachments.inc
@@ -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!");
program/steps/mail/compose.inc
@@ -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()),
program/steps/mail/func.inc
@@ -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);
}
program/steps/mail/sendmail.inc
@@ -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 ********/