Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Feb 2012 16:00:30 +0000 (17:00 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Feb 2012 16:00:30 +0000 (17:00 +0100)
Conflicts:
wrw/resp.py
wrw/session.py

1  2 
wrw/dispatch.py
wrw/resp.py
wrw/session.py
wrw/util.py

diff --cc wrw/dispatch.py
index 709cfe4e18dedad2921de5e7390e4a601c313f29,15ea99e8c537e74c77006d7ea052f32ebc5b859a..e51559e1fbe4b477a847af6bc1ea985a588393f2
@@@ -1,3 -1,6 +1,6 @@@
 -import env
+ import sys, traceback
++from . import env
  __all__ = ["restart"]
  
  class restart(Exception):
@@@ -39,15 -42,33 +42,33 @@@ class iterproxy(object)
          if hasattr(self.bk, "close"):
              self.bk.close()
  
 -    import resp
+ def defaulterror(req, excinfo):
++    from . import resp
+     traceback.print_exception(*excinfo)
+     raise resp.httperror(500)
+ def wraphandler(handler, excinfo):
+     def wrapped(req):
+         return handler(req, excinfo)
+     return wrapped
+ errorhandler = env.var(defaulterror)
  def handle(req, startreq, handler):
+     eh = errorhandler.val
      try:
          resp = [""]
          while True:
              try:
                  resp = iterproxy(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())
+                 eh = None
          req.commit(startreq)
          return resp
      finally:
diff --cc wrw/resp.py
index 75a7f3a5cd64d9addc84a5414dc10febd3d809db,35146164d735e5cc900f4bc60d8aeaef9fbb7cce..6e95ec56c8f172a6104adf4e39eec2cc58850cb1
@@@ -1,4 -1,4 +1,4 @@@
- from . import dispatch, proto
 -import dispatch, proto, env
++from . import dispatch, proto, env
  
  __all__ = ["skeleton", "skelfor", "setskel", "usererror"]
  
diff --cc wrw/session.py
index d78c43b8538e2c86678539182d8e017012a8477d,1239ecd0be6812d23d1d9dc256bf6dedbd7afa45..832387e13d1cdc5a6b19cf2ca86e57ca1e1886e7
@@@ -1,5 -1,5 +1,5 @@@
  import threading, time, pickle, random, os
- from . import cookie
 -import cookie, env
++from . import cookie, env
  
  __all__ = ["db", "get"]
  
diff --cc wrw/util.py
Simple merge