Commit b670bb7e authored by Martijn Pieters's avatar Martijn Pieters

Backport r104360 from trunk: do not emit the request closed event from a request clone

parent 9c125a91
......@@ -4,6 +4,13 @@ Zope Changes
Change information for previous versions of Zope can be found in the
file HISTORY.txt.
Zope 2.11.5 (Unreleased)
Bugs Fixed
- LP #414757 (backported from Zope trunk): don't emit a IEndRequestEvent
when clearing a cloned request.
Zope 2.11.4 (2009/08/06)
Restructuring
......
......@@ -203,11 +203,14 @@ class BaseRequest:
else: other.update(kw)
self.other=other
def close(self):
def clear(self):
self.other.clear()
notify(EndRequestEvent(None, self))
self._held=None
def close(self):
self.clear()
notify(EndRequestEvent(None, self))
def processInputs(self):
"""Do any input processing that could raise errors
"""
......
......@@ -149,7 +149,7 @@ class HTTPRequest(BaseRequest):
r.retry_count=self.retry_count
return r
def close(self):
def clear(self):
# Clear all references to the input stream, possibly
# removing tempfiles.
self.stdin = None
......@@ -159,7 +159,7 @@ class HTTPRequest(BaseRequest):
# one. Without this, there's the possibility of memory leaking
# after every request.
self._lazies = {}
BaseRequest.close(self)
BaseRequest.clear(self)
def setServerURL(self, protocol=None, hostname=None, port=None):
""" Set the parts of generated URLs. """
......@@ -1082,7 +1082,7 @@ class HTTPRequest(BaseRequest):
try: object=req.traverse(path)
except: rsp.exception()
if object is None:
req.close()
req.clear()
raise rsp.errmsg, sys.exc_info()[1]
# The traversal machinery may return a "default object"
......@@ -1100,7 +1100,7 @@ class HTTPRequest(BaseRequest):
if name != os.path.split(path)[-1]:
object=req.PARENTS[0]
req.close()
req.clear()
return object
......
......@@ -75,6 +75,20 @@ class AuthCredentialsTests( unittest.TestCase ):
self.assertEqual( user_id_x, user_id )
self.assertEqual( password_x, password )
def test_resolve_url_doesnt_send_endrequestevent(self):
import zope.event
events = []
zope.event.subscribers.append(events.append)
request = self._makeOne()
request['PARENTS'] = [object()]
try:
request.resolve_url(request.script + '/')
finally:
zope.event.subscribers.remove(events.append)
self.failIf(len(events),
"HTTPRequest.resolve_url should not emit events")
class RecordTests( unittest.TestCase ):
def test_repr( self ):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment