Aleksander Machniak
2015-07-31 4b72a1f49843aa64cdf90301ae71035c3e6cf30a
Fix error when using back button after sending an email (#1490009)
7 files modified
55 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
index.php 2 ●●● patch | view | raw | blame | history
program/localization/en_US/messages.inc 5 ●●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 8 ●●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 14 ●●●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 16 ●●●●● patch | view | raw | blame | history
program/steps/utils/error.inc 9 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -33,6 +33,7 @@
- Fix bug where new messages weren't added to the list in search mode
- Fix wrong positioning of message list header on page scroll in Webkit browsers (#1490035)
- Fix some javascript errors in rare situations (#1490441)
- Fix error when using back button after sending an email (#1490009)
RELEASE 1.1.2
-------------
index.php
@@ -131,7 +131,7 @@
            // prevent redirect to compose with specified ID (#1488226)
            if ($query['_action'] == 'compose' && !empty($query['_id'])) {
                $query = array();
                $query = array('_action' => 'compose');
            }
        }
program/localization/en_US/messages.inc
@@ -189,5 +189,6 @@
$messages['errcsrfprotectionexplain'] = "For your protection, access to this resource is secured against CSRF.\nIf you see this, you probably didn't log out before leaving the web application.\n\nHuman interaction is now required to continue.";
$messages['errcontactserveradmin'] = 'Please contact your server-administrator.';
$messages['clicktoresumesession'] = 'Click here to resume your previous session';
?>
$messages['errcomposesession'] = 'Compose session error';
$messages['errcomposesessionexplain'] = 'Requested compose session not found.';
$messages['clicktocompose'] = 'Click here to compose a new message';
program/steps/mail/compose.inc
@@ -47,9 +47,11 @@
if (!is_array($COMPOSE)) {
    // Infinite redirect prevention in case of broken session (#1487028)
    if ($COMPOSE_ID) {
        rcube::raise_error(array('code' => 500, 'type' => 'php',
            'file' => __FILE__, 'line' => __LINE__,
            'message' => "Invalid compose ID"), true, true);
        // if we know the message with specified ID was already sent
        // we can ignore the error and compose a new message (#1490009)
        if ($COMPOSE_ID != $_SESSION['last_compose_session']) {
            rcube::raise_error(array('code' => 450), false, true);
        }
    }
    $COMPOSE_ID = uniqid(mt_rand());
program/steps/mail/func.inc
@@ -1754,20 +1754,6 @@
}
/**
 * clear message composing settings
 */
function rcmail_compose_cleanup($id)
{
    if (!isset($_SESSION['compose_data_'.$id])) {
        return;
    }
    $rcmail = rcmail::get_instance();
    $rcmail->plugins->exec_hook('attachments_cleanup', array('group' => $id));
    $rcmail->session->remove('compose_data_'.$id);
}
/**
 * Send the MDN response
 *
 * @param mixed $message    Original message object (rcube_message) or UID
program/steps/mail/sendmail.inc
@@ -958,3 +958,19 @@
    return false;
}
/**
 * clear message composing settings
 */
function rcmail_compose_cleanup($id)
{
    if (!isset($_SESSION['compose_data_'.$id])) {
        return;
    }
    $rcmail = rcmail::get_instance();
    $rcmail->plugins->exec_hook('attachments_cleanup', array('group' => $id));
    $rcmail->session->remove('compose_data_'.$id);
    $_SESSION['last_compose_session'] = $id;
}
program/steps/utils/error.inc
@@ -72,6 +72,15 @@
    $__error_text .= '<p><i>' . $rcmail->gettext('errfailedrequest') . ":</i><br />\n<tt>//$request_url</tt></p>";
}
// invalid compose ID
else if ($ERROR_CODE == 450 && $_SERVER['REQUEST_METHOD'] == 'GET' && $rcmail->action == 'compose') {
    $url = $rcmail->url('compose');
    $__error_title = strtoupper($rcmail->gettext('errcomposesession'));
    $__error_text  = nl2br($rcmail->gettext('errcomposesessionexplain'))
        . '<p>' . html::a($url, $rcmail->gettext('clicktocompose')) . '</p>';
}
// database connection error
else if ($ERROR_CODE == 601) {
    $__error_title = "CONFIGURATION ERROR";