X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=python3%2Fscgi-wsgi3;h=428767fed9c1fbc007aaa654f0fb04d2db998c8e;hb=d570c3a5c601a7484761f547e8c655eefca70230;hp=1f5495dda630de1bfc97d18dd50e3dd4d1b32447;hpb=c9aa6b2889e6de7f82e5f44ab5bbcd0ef90099bd;p=ashd.git diff --git a/python3/scgi-wsgi3 b/python3/scgi-wsgi3 index 1f5495d..428767f 100755 --- a/python3/scgi-wsgi3 +++ b/python3/scgi-wsgi3 @@ -100,20 +100,17 @@ reqhandler = ashd.serve.freethread() class request(ashd.serve.wsgirequest): def __init__(self, *, sk, **kw): super().__init__(**kw) - self.sk = sk.dup() + self.bsk = sk.dup() + self.sk = self.bsk.makefile("rwb") def mkenv(self): - fsk = self.sk.dup().makefile("rwb") - try: - return mkenv(ashd.scgi.readhead(fsk), fsk) - finally: - fsk.close() + return mkenv(ashd.scgi.readhead(self.sk), self.sk) def handlewsgi(self, env, startreq): return handler(env, startreq) def fileno(self): - return self.sk.fileno() + return self.bsk.fileno() def writehead(self, status, headers): w = self.buffer.extend @@ -124,17 +121,21 @@ class request(ashd.serve.wsgirequest): def flush(self): try: - ret = self.sk.send(self.buffer, socket.MSG_DONTWAIT) + ret = self.bsk.send(self.buffer, socket.MSG_DONTWAIT) self.buffer[:ret] = b"" except IOError: raise ashd.serve.closed() def close(self): self.sk.close() + self.bsk.close() -while True: - nsk, addr = sk.accept() - try: - reqhandler.handle(request(sk=nsk, handler=reqhandler)) - finally: - nsk.close() +try: + while True: + nsk, addr = sk.accept() + try: + reqhandler.handle(request(sk=nsk, handler=reqhandler)) + finally: + nsk.close() +finally: + reqhandler.close()