Kaydet (Commit) 2a1d5160 authored tarafından Guido van Rossum's avatar Guido van Rossum

Fix from Vinaj for the "writing to closed file" errors. SF 670390.

üst 81d40d6f
test_logging
About to start TCP server...
-- log_test0 begin ---------------------------------------------------
CRITICAL:ERR:Message 0
ERROR:ERR:Message 1
......
......@@ -24,7 +24,7 @@
Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved.
"""
from select import select
import select
import os, sys, string, struct, types, cPickle, cStringIO
import socket, threading, time, locale
import logging, logging.handlers, logging.config
......@@ -64,7 +64,6 @@ class LogRecordStreamHandler(StreamRequestHandler):
if len(chunk) < 4:
break
slen = struct.unpack(">L", chunk)[0]
#print slen
chunk = self.connection.recv(slen)
while len(chunk) < slen:
chunk = chunk + self.connection.recv(slen - len(chunk))
......@@ -102,13 +101,19 @@ class LogRecordSocketReceiver(ThreadingTCPServer):
def serve_until_stopped(self):
abort = 0
while not abort:
rd, wr, ex = select([self.socket.fileno()],
rd, wr, ex = select.select([self.socket.fileno()],
[], [],
self.timeout)
if rd:
self.handle_request()
abort = self.abort
def process_request(self, request, client_address):
#import threading
t = threading.Thread(target = self.finish_request,
args = (request, client_address))
t.start()
def runTCP(tcpserver):
tcpserver.serve_until_stopped()
......@@ -421,7 +426,7 @@ def test_main():
#Set up servers
threads = []
tcpserver = LogRecordSocketReceiver()
sys.stdout.write("About to start TCP server...\n")
#sys.stdout.write("About to start TCP server...\n")
threads.append(threading.Thread(target=runTCP, args=(tcpserver,)))
for thread in threads:
......@@ -447,18 +452,17 @@ def test_main():
test3()
banner("log_test3", "end")
banner("logrecv output", "begin")
sys.stdout.write(sockOut.getvalue())
sockOut.close()
banner("logrecv output", "end")
finally:
#shut down server
tcpserver.abort = 1
for thread in threads:
thread.join()
banner("logrecv output", "begin")
sys.stdout.write(sockOut.getvalue())
sockOut.close()
banner("logrecv output", "end")
sys.stdout.flush()
if __name__ == "__main__":
sys.stdout.write("test_logging\n")
test_main()
sys.stdout.flush()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment