+
+class handler(object):
+ def handle(self, request):
+ raise Exception()
+ def ckflush(self, req):
+ raise Exception()
+ def close(self):
+ pass
+
+class freethread(handler):
+ def __init__(self, **kw):
+ super().__init__(**kw)
+ self.current = set()
+ self.lk = threading.Lock()
+
+ def handle(self, req):
+ reqthread(target=self.run, args=[req]).start()
+
+ def ckflush(self, req):
+ while len(req.buffer) > 0:
+ rls, wls, els = select.select([], [req], [req])
+ req.flush()
+
+ def run(self, req):