diff options
author | Josh Marshall <catchjosh@gmail.com> | 2021-03-30 15:20:57 +0900 |
---|---|---|
committer | Josh Marshall <catchjosh@gmail.com> | 2021-03-30 15:20:57 +0900 |
commit | 4b82291c402f876a57a115c5a6a04185bfaaf096 (patch) | |
tree | 937b33ba947872069f7d6436e49efa7f79699404 | |
parent | 75a9318ab26d7feb7e8bb2c2d6ce6cf6b280cf0a (diff) | |
download | jsonrpclib-4b82291c402f876a57a115c5a6a04185bfaaf096.tar.gz |
Bypassing TCP sockopts for Unix sockets, fixing Unix teardowns.
-rw-r--r-- | jsonrpclib/SimpleJSONRPCServer.py | 8 | ||||
-rw-r--r-- | tests.py | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/jsonrpclib/SimpleJSONRPCServer.py b/jsonrpclib/SimpleJSONRPCServer.py index 5addcf0..0bb1833 100644 --- a/jsonrpclib/SimpleJSONRPCServer.py +++ b/jsonrpclib/SimpleJSONRPCServer.py @@ -189,6 +189,11 @@ class SimpleJSONRPCRequestHandler( self.connection.shutdown(1) +class SimpleJSONRPCUnixRequestHandler(SimpleJSONRPCRequestHandler): + + disable_nagle_algorithm = False + + class SimpleJSONRPCServer(socketserver.TCPServer, SimpleJSONRPCDispatcher): allow_reuse_address = True @@ -210,6 +215,9 @@ class SimpleJSONRPCServer(socketserver.TCPServer, SimpleJSONRPCDispatcher): except OSError: logging.warning("Could not unlink socket %s", addr) + if requestHandler == SimpleJSONRPCRequestHandler: + requestHandler = SimpleJSONRPCUnixRequestHandler + socketserver.TCPServer.__init__( self, addr, requestHandler, bind_and_activate) if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'): @@ -330,7 +330,10 @@ class InternalTests(unittest.TestCase): def test_single_namespace(self): client = self.get_client() + response = client.namespace.sum(1, 2, 4) + self.assertEqual(7, response) + request = json.loads(history.request) response = json.loads(history.response) verify_request = { @@ -342,8 +345,8 @@ class InternalTests(unittest.TestCase): } verify_request['id'] = request['id'] verify_response['id'] = request['id'] - self.assertTrue(verify_request == request) - self.assertTrue(verify_response == response) + self.assertEqual(verify_request, request) + self.assertEqual(verify_response, response) def test_history_defaults_to_20(self): client = self.get_client() @@ -445,6 +448,7 @@ class UnixSocketInternalTests(InternalTests): but over a Unix socket instead of a TCP socket. """ def setUp(self): + super().setUp() suffix = "%d.sock" % get_port() # Open to safer, alternative processes @@ -461,7 +465,6 @@ class UnixSocketInternalTests(InternalTests): ) def get_client(self): - print("Serving on {}".format(self.port)) return Server('unix:/%s' % self.port) def tearDown(self): @@ -551,6 +554,7 @@ def server_set_up(addr, address_family=socket.AF_INET): server.shutdown() server_proc = Thread(target=server.serve_forever) + server_proc.daemon = True server_proc.stop = stop server_proc.start() return server_proc |