Log message for revision 77228:
  The REQUEST should not accept holds after it has been closed.
  

Changed:
  U   Zope/branches/2.10/doc/CHANGES.txt
  U   Zope/branches/2.10/lib/python/ZPublisher/BaseRequest.py
  U   Zope/branches/2.10/lib/python/ZPublisher/tests/testBaseRequest.py

-=-
Modified: Zope/branches/2.10/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.10/doc/CHANGES.txt  2007-06-29 09:21:26 UTC (rev 77227)
+++ Zope/branches/2.10/doc/CHANGES.txt  2007-06-29 09:49:45 UTC (rev 77228)
@@ -8,6 +8,8 @@
 
     Bugs fixed
 
+      - The REQUEST no longer accepts holds after it has been closed.
+
       - Collector #1441: WebDAV compatibility with Windows Web Folders
         restored by adding a configuration variable that controls the
         sending of the non-standard MS-Author-Via and Public

Modified: Zope/branches/2.10/lib/python/ZPublisher/BaseRequest.py
===================================================================
--- Zope/branches/2.10/lib/python/ZPublisher/BaseRequest.py     2007-06-29 
09:21:26 UTC (rev 77227)
+++ Zope/branches/2.10/lib/python/ZPublisher/BaseRequest.py     2007-06-29 
09:49:45 UTC (rev 77228)
@@ -634,7 +634,8 @@
     def _hold(self, object):
         """Hold a reference to an object to delay it's destruction until mine
         """
-        self._held=self._held+(object,)
+        if self._held is not None:
+            self._held=self._held+(object,)
 
 def exec_callables(callables):
     result = None

Modified: Zope/branches/2.10/lib/python/ZPublisher/tests/testBaseRequest.py
===================================================================
--- Zope/branches/2.10/lib/python/ZPublisher/tests/testBaseRequest.py   
2007-06-29 09:21:26 UTC (rev 77227)
+++ Zope/branches/2.10/lib/python/ZPublisher/tests/testBaseRequest.py   
2007-06-29 09:49:45 UTC (rev 77228)
@@ -247,6 +247,17 @@
         self.assertRaises(NotFound, r.traverse, 'folder/simpleSet')
         self.assertRaises(NotFound, r.traverse, 'folder/simpleFrozenSet')
 
+    def test_hold_after_close(self):
+        # Request should no longer accept holds after it has been closed
+        r = self.makeBaseRequest()
+        r._hold(lambda x: None)
+        self.assertEqual(len(r._held), 1)
+        r.close()
+        # No more holding from now on
+        self.assertEqual(r._held, None)
+        r._hold(lambda x: None)
+        self.assertEqual(r._held, None)
+
 from ZPublisher import NotFound
 
 import zope.interface

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to