diff -Nur -x '*.orig' -x '*~' poker-network-version0908/pokernetwork/pokersite.py poker-network-version0908.new/pokernetwork/pokersite.py
--- poker-network-version0908/pokernetwork/pokersite.py	2010-01-26 16:22:46.827967969 +0100
+++ poker-network-version0908.new/pokernetwork/pokersite.py	2010-01-26 16:23:38.824220071 +0100
@@ -175,8 +175,17 @@
             # session already expired.
             #
             self.site.getSession(self.uid)
-            server.Session.checkExpired(self)
-            return True
+            #
+            # The session may be replaced by a new session as a side
+            # effect of the verifications made by getSession against
+            # memcache. When this happens no exception is thrown and
+            # checkExpired should not be called because the session
+            # has already expired.
+            #
+            if not self.expired:
+                server.Session.checkExpired(self)
+                return True
+            return False
         except KeyError:
             return False
         
diff -Nur -x '*.orig' -x '*~' poker-network-version0908/tests/test-pokersite.py.in poker-network-version0908.new/tests/test-pokersite.py.in
--- poker-network-version0908/tests/test-pokersite.py.in	2010-01-26 16:22:43.044990800 +0100
+++ poker-network-version0908.new/tests/test-pokersite.py.in	2010-01-26 16:23:38.828991627 +0100
@@ -599,6 +599,22 @@
             self.site.memcache.delete(uid)
             self.assertEqual(False, session.checkExpired())
 
+      def test02_expireFromTwisted(self):
+            uid = 'uid'
+            session = self.site.makeSessionFromUid(uid)
+            self.site.memcache.set(uid, '0')
+            session.lastModified = 0
+            session.expire()
+            session.checkExpired()
+
+      def test03_replaceFromGetSession(self):
+            uid = 'uid'
+            session = self.site.makeSessionFromUid(uid)
+            session.avatar.user.serial = 5
+            session.lastModified = 0
+            self.site.memcache.set(uid, '0')
+            self.assertEqual(False, session.checkExpired())
+
 class RequestTestCase(PokerSiteBase):
 
       def test01_name(self):
