Opened 20 years ago
Closed 19 years ago
#1095 closed defect (fixed)
[patch] SESSION_SAVE_EVERY_REQUEST causes errors when you hit the server with a redirect
| Reported by: | Owned by: | Adrian Holovaty | |
|---|---|---|---|
| Component: | Core (Other) | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
i've been playing a bit with the session cookie, and noticed that if you don't have a initial cookie and one isn't set by the request (ie..it's a redirect) then you will get a attribute error as there is no request.session object
fix:
Index: sessions.py
===================================================================
--- sessions.py (revision 1749)
+++ sessions.py (working copy)
@@ -68,10 +68,13 @@
         except AttributeError:
             modified = False
         if modified or SESSION_SAVE_EVERY_REQUEST:
-            session_key = request.session.session_key or sessions.get_new_session_key()
-            new_session = sessions.save(session_key, request.session._session,
-                datetime.datetime.now() + datetime.timedelta(seconds=SESSION_COOKIE_AGE))
-            expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT")
-            response.set_cookie(SESSION_COOKIE_NAME, session_key,
-                max_age=SESSION_COOKIE_AGE, expires=expires, domain=SESSION_COOKIE_DOMAIN)
+            try:
+                session_key = request.session.session_key or sessions.get_new_session_key()
+                new_session = sessions.save(session_key, request.session._session,
+                    datetime.datetime.now() + datetime.timedelta(seconds=SESSION_COOKIE_AGE))
+                expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=SESSION_COOKIE_AGE), "%a, %d-%b-%Y %H:%M:%S GMT")
+                response.set_cookie(SESSION_COOKIE_NAME, session_key,
+                    max_age=SESSION_COOKIE_AGE, expires=expires, domain=SESSION_COOKIE_DOMAIN)
+            except AttributeError:
+                pass
         return response
      Change History (2)
comment:1 by , 19 years ago
| Summary: | SESSION_SAVE_EVERY_REQUEST causes errors when you hit the server with a redirect → [patch] SESSION_SAVE_EVERY_REQUEST causes errors when you hit the server with a redirect | 
|---|
comment:2 by , 19 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | new → closed | 
  Note:
 See   TracTickets
 for help on using tickets.
    
This was fixed somewhere between [1866] and [1979].