python: Fixed WSGI wrapper to handle empty responses.
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 23 Oct 2010 06:17:11 +0000 (08:17 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 23 Oct 2010 06:17:11 +0000 (08:17 +0200)
python/ashd-wsgi
python/ashd/scgi.py

index d334765..dc3bc91 100755 (executable)
@@ -74,9 +74,7 @@ def dowsgi(req):
     resp = []
     respsent = []
 
-    def write(data):
-        if not data:
-            return
+    def flushreq():
         if not respsent:
             if not resp:
                 raise Exception, "Trying to write data before starting response."
@@ -86,6 +84,11 @@ def dowsgi(req):
             for nm, val in headers:
                 req.sk.write("%s: %s\n" % (nm, val))
             req.sk.write("\n")
+
+    def write(data):
+        if not data:
+            return
+        flushreq()
         req.sk.write(data)
         req.sk.flush()
 
@@ -106,7 +109,8 @@ def dowsgi(req):
     try:
         for data in respiter:
             write(data)
-        write("")
+        if resp:
+            flushreq()
     finally:
         if hasattr(respiter, "close"):
             respiter.close()
index 9357e9d..a4342d0 100644 (file)
@@ -74,9 +74,7 @@ def wrapwsgi(handler):
         resp = []
         respsent = []
 
-        def write(data):
-            if not data:
-                return
+        def flushreq():
             if not respsent:
                 if not resp:
                     raise Exception, "Trying to write data before starting response."
@@ -86,6 +84,11 @@ def wrapwsgi(handler):
                 for nm, val in headers:
                     sk.write("%s: %s\n" % (nm, val))
                 sk.write("\n")
+
+        def write(data):
+            if not data:
+                return
+            flushreq()
             sk.write(data)
             sk.flush()
 
@@ -106,7 +109,8 @@ def wrapwsgi(handler):
         try:
             for data in respiter:
                 write(data)
-            write("")
+            if resp:
+                flushresp()
         finally:
             if hasattr(respiter, "close"):
                 respiter.close()