diff --git a/wptserve/handlers.py b/wptserve/handlers.py
index 318219c..bc1ef33 100644
--- a/wptserve/handlers.py
+++ b/wptserve/handlers.py
@@ -63,7 +63,7 @@ def __call__(self, request, response):
if not os.path.isdir(path):
raise HTTPException(404, "%s is not a directory" % path)
- response.headers = [("Content-Type", "text/html")]
+ response.headers.set("Content-Type", "text/html")
response.content = """
Directory listing for %(path)s
diff --git a/wptserve/server.py b/wptserve/server.py
index cc79c08..4829852 100644
--- a/wptserve/server.py
+++ b/wptserve/server.py
@@ -250,18 +250,25 @@ def handle_one_request(self):
if handler is None:
response.set_error(404)
- else:
- try:
- handler(request, response)
- except HTTPException as e:
- response.set_error(e.code, e.message)
- except Exception as e:
- if e.message:
- err = [e.message]
- else:
- err = []
- err.append(traceback.format_exc())
- response.set_error(500, "\n".join(err))
+ response.write()
+ return
+
+ # Set any default headers before calling the handler, so that any headers
+ # set in the handler will overwrite the defaults.
+ if "default_headers" in Server.config and Server.config["default_headers"]:
+ response.headers.update(Server.config["default_headers"])
+
+ try:
+ handler(request, response)
+ except HTTPException as e:
+ response.set_error(e.code, e.message)
+ except Exception as e:
+ if e.message:
+ err = [e.message]
+ else:
+ err = []
+ err.append(traceback.format_exc())
+ response.set_error(500, "\n".join(err))
self.logger.debug("%i %s %s (%s) %i" % (response.status[0],
request.method,
request.request_path,