Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 11 Jan 2014 04:46:51 +0000 (05:46 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 11 Jan 2014 04:46:51 +0000 (05:46 +0100)
1  2 
wrw/dispatch.py

diff --combined wrw/dispatch.py
@@@ -1,5 -1,5 +1,5 @@@
  import sys, traceback
 -import env, req, proto
 +from . import env, req, proto
  
  __all__ = ["restart"]
  
@@@ -17,7 -17,7 +17,7 @@@ def mangle(result)
      return [str(result)]
  
  def defaulterror(req, excinfo):
 -    import resp
 +    from . import resp
      traceback.print_exception(*excinfo)
      sys.stderr.flush()
      raise resp.httperror(500)
@@@ -38,9 -38,9 +38,9 @@@ def handle(req, startreq, handler)
              try:
                  resp = handler(req)
                  break
 -            except restart, i:
 +            except restart as i:
                  handler = i.handle
 -            except Exception, i:
 +            except Exception as i:
                  if eh is None:
                      raise
                  handler = wraphandler(eh, sys.exc_info())
@@@ -55,3 -55,15 +55,15 @@@ def handleenv(env, startreq, handler)
          return proto.simpleerror(env, startreq, 400, "Bad Request", "Request must include Host header.")
      r = req.origrequest(env)
      return handle(r, startreq, handler)
+ def exterror(env, startreq):
+     def handler(req):
+         import resp
+         code = 404
+         if "Response-Code" in req.ihead:
+             try:
+                 code = int(req.ihead["Response-Code"])
+             except ValueError:
+                 pass
+         raise resp.httperror(code)
+     return handleenv(env, startreq, handler)