Fix session race conditions when composing new messages
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Fix session race conditions when composing new messages |
| | | - Fix encoding of LDAP contacts identifiers (#1488079) |
| | | - jQuery 1.6.4 |
| | | - Make date/time format user configurable; drop 'date_today' config option |
| | |
| | | */ |
| | | public function send() |
| | | { |
| | | sleep(6); |
| | | $this->remote_response(); |
| | | exit; |
| | | } |
| | |
| | | */ |
| | | 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'); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | $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!"); |
| | |
| | | $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). |
| | |
| | | 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()), |
| | |
| | | */ |
| | | 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); |
| | | } |
| | | |
| | | |
| | |
| | | $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 ********/ |
| | | |