fixed problem with session __hash

This commit is contained in:
mdipierro
2012-10-15 20:43:51 -05:00
parent 6b9ebb6dc5
commit ab95dfa7cd
2 changed files with 14 additions and 6 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.1.1 (2012-10-15 19:39:19) dev
Version 2.1.1 (2012-10-15 20:43:47) dev
+13 -5
View File
@@ -608,7 +608,8 @@ class Session(Storage):
rcookies = response.cookies
rcookies[response.session_id_name] = response.session_id
rcookies[response.session_id_name]['path'] = '/'
self.__hash = hashlib.md5(str(self)).digest()
pickle = cPickle.dumps(self)
self.__hash = hashlib.md5(pickle).digest()
if self.flash:
(response.flash, self.flash) = (self.flash, None)
@@ -653,16 +654,20 @@ class Session(Storage):
# don't save if no change to session
__hash = self.__hash
pickle = None
if __hash is not None:
del self.__hash
if __hash == hashlib.md5(str(self)).digest():
pickle = cPickle.dumps(self)
if __hash == hashlib.md5(pickle).digest():
return
else:
pickle = cPickle.dumps(self)
(record_id_name, table, record_id, unique_key) = \
response._dbtable_and_field
dd = dict(locked=False, client_ip=request.client.replace(':','.'),
modified_datetime=request.now,
session_data=cPickle.dumps(dict(self)),
session_data=pickle,
unique_key=unique_key)
if record_id:
table._db(table.id == record_id).update(**dd)
@@ -680,9 +685,11 @@ class Session(Storage):
# don't save if no change to session
__hash = self.__hash
pickle = None
if __hash is not None:
del self.__hash
if __hash == hashlib.md5(str(self)).digest():
pickle = cPickle.dumps(self)
if __hash == hashlib.md5(pickle).digest():
self._close(response)
return
@@ -700,7 +707,8 @@ class Session(Storage):
response.session_locked = True
if response.session_file:
cPickle.dump(dict(self), response.session_file)
if not pickle: pickle = cPickle.dumps(self)
response.session_file.write(pickle)
response.session_file.truncate()
self._close(response)