Author: kostat
Date: 2007-03-26 08:26:43 -0500 (Mon, 26 Mar 2007)
New Revision: 74979

Modified:
   
trunk/mcs/class/Mainsoft.Web/Mainsoft.Web.SessionState/ServletSessionStateStoreProvider.cs
Log:
use session timeout taken from web.xml; add support for changing session 
timeout programmatically

Modified: 
trunk/mcs/class/Mainsoft.Web/Mainsoft.Web.SessionState/ServletSessionStateStoreProvider.cs
===================================================================
--- 
trunk/mcs/class/Mainsoft.Web/Mainsoft.Web.SessionState/ServletSessionStateStoreProvider.cs
  2007-03-26 13:12:30 UTC (rev 74978)
+++ 
trunk/mcs/class/Mainsoft.Web/Mainsoft.Web.SessionState/ServletSessionStateStoreProvider.cs
  2007-03-26 13:26:43 UTC (rev 74979)
@@ -42,8 +42,10 @@
 
                public override SessionStateStoreData CreateNewStoreData 
(HttpContext context, int timeout) {
 
+                       // we ignore this timeout and use web.xml settings.
                        //must set now as this can be a last chance for ro item
-                       GetSession (context, false).setMaxInactiveInterval 
(timeout * 60);
+                       //GetSession (context, false).setMaxInactiveInterval 
(timeout * 60);
+                       timeout = GetSession (context, 
false).getMaxInactiveInterval () / 60;
                        ServletSessionStateItemCollection sessionState = new 
ServletSessionStateItemCollection (context);
                        return new SessionStateStoreData (
                                sessionState,
@@ -95,7 +97,13 @@
                }
 
                public override void ResetItemTimeout (HttpContext context, 
string id) {
-                       //Java does this for us
+                       if (context == null)
+                               throw new ArgumentNullException ("context");
+                       HttpSession session = GetSession (context, false);
+                       int current = session.getMaxInactiveInterval ();
+                       int requested = context.Session.Timeout * 60;
+                       if (current != requested)
+                               session.setMaxInactiveInterval (requested);
                }
 
                public override void SetAndReleaseItemExclusive (HttpContext 
context, string id, SessionStateStoreData item, object lockId, bool newItem) {

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to