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 ...@@ -4,6 +4,13 @@ Zope Changes
Change information for previous versions of Zope can be found in the Change information for previous versions of Zope can be found in the
file HISTORY.txt. 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) Zope 2.11.4 (2009/08/06)
Restructuring Restructuring
......
...@@ -203,11 +203,14 @@ class BaseRequest: ...@@ -203,11 +203,14 @@ class BaseRequest:
else: other.update(kw) else: other.update(kw)
self.other=other self.other=other
def close(self): def clear(self):
self.other.clear() self.other.clear()
notify(EndRequestEvent(None, self))
self._held=None self._held=None
def close(self):
self.clear()
notify(EndRequestEvent(None, self))
def processInputs(self): def processInputs(self):
"""Do any input processing that could raise errors """Do any input processing that could raise errors
""" """
......
...@@ -149,7 +149,7 @@ class HTTPRequest(BaseRequest): ...@@ -149,7 +149,7 @@ class HTTPRequest(BaseRequest):
r.retry_count=self.retry_count r.retry_count=self.retry_count
return r return r
def close(self): def clear(self):
# Clear all references to the input stream, possibly # Clear all references to the input stream, possibly
# removing tempfiles. # removing tempfiles.
self.stdin = None self.stdin = None
...@@ -159,7 +159,7 @@ class HTTPRequest(BaseRequest): ...@@ -159,7 +159,7 @@ class HTTPRequest(BaseRequest):
# one. Without this, there's the possibility of memory leaking # one. Without this, there's the possibility of memory leaking
# after every request. # after every request.
self._lazies = {} self._lazies = {}
BaseRequest.close(self) BaseRequest.clear(self)
def setServerURL(self, protocol=None, hostname=None, port=None): def setServerURL(self, protocol=None, hostname=None, port=None):
""" Set the parts of generated URLs. """ """ Set the parts of generated URLs. """
...@@ -1082,7 +1082,7 @@ class HTTPRequest(BaseRequest): ...@@ -1082,7 +1082,7 @@ class HTTPRequest(BaseRequest):
try: object=req.traverse(path) try: object=req.traverse(path)
except: rsp.exception() except: rsp.exception()
if object is None: if object is None:
req.close() req.clear()
raise rsp.errmsg, sys.exc_info()[1] raise rsp.errmsg, sys.exc_info()[1]
# The traversal machinery may return a "default object" # The traversal machinery may return a "default object"
...@@ -1100,7 +1100,7 @@ class HTTPRequest(BaseRequest): ...@@ -1100,7 +1100,7 @@ class HTTPRequest(BaseRequest):
if name != os.path.split(path)[-1]: if name != os.path.split(path)[-1]:
object=req.PARENTS[0] object=req.PARENTS[0]
req.close() req.clear()
return object return object
......
...@@ -75,6 +75,20 @@ class AuthCredentialsTests( unittest.TestCase ): ...@@ -75,6 +75,20 @@ class AuthCredentialsTests( unittest.TestCase ):
self.assertEqual( user_id_x, user_id ) self.assertEqual( user_id_x, user_id )
self.assertEqual( password_x, password ) 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 ): class RecordTests( unittest.TestCase ):
def test_repr( self ): 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