From 529ab8f8d98ddf9f38b9c1fff8e6410dd8540b69 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 20 Apr 2007 23:46:32 +0200
Subject: added better support for HEAD

---
 wsgitools/applications.py |  2 ++
 wsgitools/middlewares.py  | 13 +++++++------
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/wsgitools/applications.py b/wsgitools/applications.py
index 1e2b435..4ddf7ea 100644
--- a/wsgitools/applications.py
+++ b/wsgitools/applications.py
@@ -24,4 +24,6 @@ class StaticContent:
     def __call__(self, environ, start_response):
         """wsgi interface"""
         start_response(self.status, self.headers)
+        if environ["REQUEST_METHOD"].upper() == "HEAD":
+            return []
         return self.content
diff --git a/wsgitools/middlewares.py b/wsgitools/middlewares.py
index 5ff610f..ff8120b 100644
--- a/wsgitools/middlewares.py
+++ b/wsgitools/middlewares.py
@@ -263,15 +263,14 @@ class BasicAuthMiddleware:
     def authorization_required(self, environ, start_response):
         """wsgi application for indicating authorization is required."""
         status = "401 Authorization required"
-        headers = [('Content-type', 'text/html'),
-                   ('WWW-Authenticate', 'Basic realm="%s"' % self.realm)]
-        if environ["REQUEST_METHOD"] == "HEAD":
-            start_response(status, headers)
-            return []
         html = "<html><head><title>Authorization required</title></head>" + \
                "<body><h1>Authorization required</h1></body></html>\n"
-        headers.append(('Content-length', len(html)))
+        headers = [('Content-type', 'text/html'),
+                   ('WWW-Authenticate', 'Basic realm="%s"' % self.realm),
+                   ("Content-length", str(len(html)))]
         start_response(status, headers)
+        if environ["REQUEST_METHOD"].upper() == "HEAD":
+            return []
         return [html]
 
 __all__.append("TracebackMiddleware")
@@ -300,4 +299,6 @@ class TracebackMiddleware:
             data = cgitb.html(exc_info)
             start_response("200 OK", [("Content-type", "text/html"),
                                       ("Content-length", str(len(data)))])
+            if environ["REQUEST_METHOD"].upper() == "HEAD":
+                return []
             return [data]
-- 
cgit v1.2.3