summaryrefslogtreecommitdiff
blob: c944bf30a1a09a7965790b4f9b7ce1e625353690 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
diff -Naurp squirrelmail-1.5.1.orig/functions/auth.php squirrelmail-1.5.1/functions/auth.php
--- squirrelmail-1.5.1.orig/functions/auth.php	2006-01-23 10:39:32.000000000 -0800
+++ squirrelmail-1.5.1/functions/auth.php	2007-05-21 09:09:30.000000000 -0700
@@ -59,6 +59,8 @@ function is_logged_in() {
             sqsession_register($session_expired_location,'session_expired_location');
         }
 
+        session_write_close();
+
         // signout page will deal with users who aren't logged
         // in on its own; don't show error here
         //
@@ -330,4 +332,4 @@ function get_smtp_user(&$user, &$pass) {
     }
 }
 
-?>
\ No newline at end of file
+?>
diff -Naurp squirrelmail-1.5.1.orig/src/compose.php squirrelmail-1.5.1/src/compose.php
--- squirrelmail-1.5.1.orig/src/compose.php	2006-02-11 07:14:31.000000000 -0800
+++ squirrelmail-1.5.1/src/compose.php	2007-05-21 09:02:11.000000000 -0700
@@ -299,13 +299,19 @@ if (sqsession_is_registered('session_exp
         sqsession_unregister('session_expired_post');
         session_write_close();
     } else {
-        foreach ($session_expired_post as $postvar => $val) {
-            if (isset($val)) {
-                $$postvar = $val;
-            } else {
-                $$postvar = '';
+        // these are the vars that we can set from the expired composed session   
+        $compo_var_list = array ( 'send_to', 'send_to_cc','body','startMessage',
+            'passed_body','use_signature','signature','attachments','subject','newmail',
+            'send_to_bcc', 'passed_id', 'mailbox', 'from_htmladdr_search', 'identity',
+            'draft_id', 'delete_draft', 'mailprio', 'edit_as_new', 'compose_messsages',
+            'composesession', 'request_mdn', 'request_dr');
+
+        foreach ($compo_var_list as $var) {
+            if ( isset($session_expired_post[$var]) && !isset($$var) ) {
+	        $$var = $session_expired_post[$var];
             }
         }
+
         $compose_messages = unserialize(urldecode($restoremessages));
         sqsession_register($compose_messages,'compose_messages');
         sqsession_register($composesession,'composesession');
diff -Naurp squirrelmail-1.5.1.orig/src/login.php squirrelmail-1.5.1/src/login.php
--- squirrelmail-1.5.1.orig/src/login.php	2006-02-12 01:03:11.000000000 -0800
+++ squirrelmail-1.5.1/src/login.php	2007-05-21 09:11:11.000000000 -0700
@@ -44,12 +44,24 @@ if (!function_exists('sqm_baseuri')){
 }
 $base_uri = sqm_baseuri();
 
-/*
+/**
  * In case the last session was not terminated properly, make sure
- * we get a new one.
+ * we get a new one, but make sure we preserve session_expired_*
  */
 
-sqsession_destroy();
+if ( !empty($_SESSION['session_expired_post']) && !empty($_SESSION['session_expired_location']) ) {
+    $sep = $_SESSION['session_expired_post'];
+    $sel = $_SESSION['session_expired_location'];
+
+    sqsession_destroy();
+
+    sqsession_is_active();
+    sqsession_register($sep, 'session_expired_post');
+    sqsession_register($sel, 'session_expired_location');
+} else {
+    sqsession_destroy();
+}
+
 /**
  * PHP bug. http://bugs.php.net/11643 (warning, spammed bug tracker) and
  * http://bugs.php.net/13834
@@ -195,4 +207,4 @@ $oTemplate->assign('password_field', $pa
 $oTemplate->assign('submit_field', addSubmit(_("Login")));
 
 $oTemplate->display('login.tpl');
-?>
\ No newline at end of file
+?>
diff -Naurp squirrelmail-1.5.1.orig/src/redirect.php squirrelmail-1.5.1/src/redirect.php
--- squirrelmail-1.5.1.orig/src/redirect.php	2006-02-07 23:58:18.000000000 -0800
+++ squirrelmail-1.5.1/src/redirect.php	2007-05-21 09:12:45.000000000 -0700
@@ -140,13 +140,17 @@ $redirect_url = $location . '/webmail.ph
 
 if ( sqgetGlobalVar('session_expired_location', $session_expired_location, SQ_SESSION) ) {
     sqsession_unregister('session_expired_location');
-    $compose_new_win = getPref($data_dir, $username, 'compose_new_win', 0);
-    if ($compose_new_win) {
-        // do not prefix $location here because $session_expired_location is set to PHP_SELF
-        // of the last page
-        $redirect_url = $session_expired_location;
-    } elseif ( strpos($session_expired_location, 'webmail.php') === FALSE ) {
-        $redirect_url = $location.'/webmail.php?right_frame='.urldecode($session_expired_location);
+    if ( strpos($session_expired_location, 'compose.php') !== FALSE ) {
+        $compose_new_win = getPref($data_dir, $username, 'compose_new_win', 0);
+        if ($compose_new_win) {
+            // do not prefix $location here because $session_expired_location is set to PHP_SELF
+            // of the last page
+            $redirect_url = $session_expired_location;
+        } elseif ( strpos($session_expired_location, 'webmail.php') === FALSE ) {
+            $redirect_url = 'webmail.php?right_frame=compose.php';
+        }
+    } else {
+        $redirect_url = 'webmail.php?right_frame=' . urldecode($session_expired_location);
     }
     unset($session_expired_location);
 }
@@ -187,4 +191,4 @@ function attachment_common_parse($str, $
     sqsession_register($attachment_common_types, 'attachment_common_types');
 }
 
-?>
\ No newline at end of file
+?>
diff -Naurp squirrelmail-1.5.1.orig/src/webmail.php squirrelmail-1.5.1/src/webmail.php
--- squirrelmail-1.5.1.orig/src/webmail.php	2006-02-13 10:20:06.000000000 -0800
+++ squirrelmail-1.5.1/src/webmail.php	2007-05-21 09:13:29.000000000 -0700
@@ -54,9 +54,6 @@ if (!sqgetGlobalVar('mailbox', $mailbox)
 
 sqgetGlobalVar('right_frame', $right_frame, SQ_GET);
 
-if ( isset($_SESSION['session_expired_post']) ) {
-    sqsession_unregister('session_expired_post');
-}
 if(!sqgetGlobalVar('mailto', $mailto)) {
     $mailto = '';
 }