python: Changed wmain calling convention.
[ashd.git] / python / ashd-wsgi
index d334765..e8f8435 100755 (executable)
@@ -29,7 +29,7 @@ if not modwsgi_compat:
     if not hasattr(handlermod, "wmain"):
         sys.stderr.write("ashd-wsgi: handler %s has no `wmain' function\n" % args[0])
         sys.exit(1)
-    handler = handlermod.wmain(args[1:])
+    handler = handlermod.wmain(*args[1:])
 else:
     if not hasattr(handlermod, "application"):
         sys.stderr.write("ashd-wsgi: handler %s has no `application' object\n" % args[0])
@@ -50,8 +50,8 @@ def dowsgi(req):
     name = req.url
     p = name.find('?')
     if p >= 0:
-        name = name[:p]
         env["QUERY_STRING"] = name[p + 1:]
+        name = name[:p]
     else:
         env["QUERY_STRING"] = ""
     if name[-len(req.rest):] == req.rest:
@@ -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()