summaryrefslogtreecommitdiff
path: root/Lib/SocketServer.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/SocketServer.py')
-rw-r--r--Lib/SocketServer.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py
index e5863b5adb..e52dddc3b2 100644
--- a/Lib/SocketServer.py
+++ b/Lib/SocketServer.py
@@ -120,7 +120,12 @@ BaseServer:
# Author of the BaseServer patch: Luke Kenneth Casson Leighton
-__version__ = "0.3"
+# XXX Warning!
+# There is a test suite for this module, but it cannot be run by the
+# standard regression test.
+# To run it manually, run Lib/test/test_socketserver.py.
+
+__version__ = "0.4"
import socket
@@ -129,7 +134,8 @@ import os
__all__ = ["TCPServer","UDPServer","ForkingUDPServer","ForkingTCPServer",
"ThreadingUDPServer","ThreadingTCPServer","BaseRequestHandler",
- "StreamRequestHandler","DatagramRequestHandler"]
+ "StreamRequestHandler","DatagramRequestHandler",
+ "ThreadingMixIn", "ForkingMixIn"]
if hasattr(socket, "AF_UNIX"):
__all__.extend(["UnixStreamServer","UnixDatagramServer",
"ThreadingUnixStreamServer",
@@ -215,7 +221,7 @@ class BaseServer:
self.process_request(request, client_address)
except:
self.handle_error(request, client_address)
- self.close_request(request)
+ self.close_request(request)
def verify_request(self, request, client_address):
"""Verify the request. May be overridden.
@@ -232,6 +238,7 @@ class BaseServer:
"""
self.finish_request(request, client_address)
+ self.close_request(request)
def server_close(self):
"""Called to clean-up the server.
@@ -423,18 +430,17 @@ class ForkingMixIn:
if self.active_children is None:
self.active_children = []
self.active_children.append(pid)
+ self.close_request(request)
return
else:
# Child process.
# This must never return, hence os._exit()!
try:
- self.server_close()
self.finish_request(request, client_address)
os._exit(0)
except:
try:
- self.handle_error(request,
- client_address)
+ self.handle_error(request, client_address)
finally:
os._exit(1)
@@ -545,6 +551,9 @@ class StreamRequestHandler(BaseRequestHandler):
class DatagramRequestHandler(BaseRequestHandler):
+ # XXX Regrettably, I cannot get this working on Linux;
+ # s.recvfrom() doesn't return a meaningful client address.
+
"""Define self.rfile and self.wfile for datagram sockets."""
def setup(self):