Index: Publish.py
===================================================================
RCS file: /cvs-repository/Packages/ZPublisher/Attic/Publish.py,v
retrieving revision 1.164.2.4
diff -u -r1.164.2.4 Publish.py
--- Publish.py	23 May 2004 05:53:44 -0000	1.164.2.4
+++ Publish.py	24 Aug 2004 21:58:28 -0000
@@ -125,35 +125,30 @@
             if parents:
                 parents=parents[0]
             try:
-                response = err_hook(parents, request,
+                try:
+                    return err_hook(parents, request,
                                     sys.exc_info()[0],
                                     sys.exc_info()[1],
                                     sys.exc_info()[2],
                                     )
-                if transactions_manager:
-                    transactions_manager.abort()
-                return response
-
-            except Retry:
-                if not request.supports_retry():
-                    response = err_hook(parents, request,
+                except Retry:
+                    if not request.supports_retry():
+                        return err_hook(parents, request,
                                         sys.exc_info()[0],
                                         sys.exc_info()[1],
                                         sys.exc_info()[2],
                                         )
-                    if transactions_manager:
-                        transactions_manager.abort()
-                    return response
-
-
+            finally:
                 if transactions_manager:
                     transactions_manager.abort()
-                newrequest=request.retry()
-                request.close()  # Free resources held by the request.
-                try:
-                    return publish(newrequest, module_name, after_list, debug)
-                finally:
-                    newrequest.close()
+                    
+            # Only reachable if Retry is raised and request supports retry.
+            newrequest=request.retry()
+            request.close()  # Free resources held by the request.
+            try:
+                return publish(newrequest, module_name, after_list, debug)
+            finally:
+                newrequest.close()
 
         else:
             if transactions_manager:
