--- /dev/null
+Index: mod_python/lib/python/mod_python/apache.py
+===================================================================
+RCS file: /home/devel/CVS/rhn/modules/mod_python/lib/python/mod_python/apache.py,v
+retrieving revision 1.4
+diff -u -r1.4 apache.py
+--- mod_python/lib/python/mod_python/apache.py 2 Aug 2001 22:52:50 -0000 1.4
++++ mod_python/lib/python/mod_python/apache.py 28 Feb 2002 02:57:53 -0000
+@@ -58,10 +58,6 @@
+ # variable stores the last PythonPath in raw (unevaled) form.
+ _path = None
+
+-# this is used in Request.__init__
+-def _cleanup_request(_req):
+- _req._Request = None
+-
+ class Request:
+ """ This is a normal Python Class that can be subclassed.
+ However, most of its functionality comes from a built-in
+@@ -73,11 +69,6 @@
+ # look at __setattr__ if changing this line!
+ self._req = _req
+
+- # this will decrement the reference to the _req
+- # object at cleanup time. If we don't do this, we
+- # get a cirular reference and _req never gets destroyed.
+- _req.register_cleanup(_cleanup_request, _req)
+-
+ def __getattr__(self, attr):
+ try:
+ return getattr(self._req, attr)
+@@ -129,6 +120,7 @@
+
+ # is there a Request object for this request?
+ if not _req._Request:
++ # warning, creating circular reference here
+ _req._Request = Request(_req)
+
+ req = _req._Request
+@@ -239,6 +231,10 @@
+ htype=htype, hname=handler, debug=debug)
+ finally:
+ exc_traceback = None
++
++ if htype == "PythonCleanupHandler":
++ # destroy the circular reference
++ _req._Request = req = None
+
+ return result
+