summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt9
-rw-r--r--repoze/bfg/router.py13
2 files changed, 16 insertions, 6 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 964ba7fe9..05813cc7a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,12 @@
+Next release
+============
+
+Big Fixes
+---------
+
+- Process the response callbacks and the NewResponse event earlier, to
+ enable mutations to the response to take effect.
+
1.3a10 (2010-09-05)
===================
diff --git a/repoze/bfg/router.py b/repoze/bfg/router.py
index 277ee559b..f976dfea2 100644
--- a/repoze/bfg/router.py
+++ b/repoze/bfg/router.py
@@ -144,6 +144,13 @@ class Router(object):
attrs['exception'] = why
response = view_callable(why, request)
+ # process the response
+
+ if request.response_callbacks:
+ request._process_response_callbacks(response)
+
+ has_listeners and registry.notify(NewResponse(request, response))
+
try:
headers = response.headerlist
app_iter = response.app_iter
@@ -153,12 +160,6 @@ class Router(object):
'Non-response object returned from view named %s '
'(and no renderer): %r' % (view_name, response))
- if request.response_callbacks:
- request._process_response_callbacks(response)
-
- # process the response
- has_listeners and registry.notify(NewResponse(request, response))
-
start_response(status, headers)
return app_iter