diff --git a/supervisor/tests/test_xmlrpc.py b/supervisor/tests/test_xmlrpc.py index 158d69a98..3d49ce04b 100644 --- a/supervisor/tests/test_xmlrpc.py +++ b/supervisor/tests/test_xmlrpc.py @@ -508,6 +508,17 @@ def getconn(): self.assertEqual(dummy_conn.requestargs[3]['Accept'], 'text/xml') self.assertEqual(result, ('South Dakota',)) + def test_close(self): + transport = self._makeOne('user', 'pass', 'http://127.0.0.1/') + dummy_conn = DummyConnection(200, ''' + ''') + def getconn(): + return dummy_conn + transport._get_connection = getconn + transport.request('localhost', '/', '') + transport.close() + self.assertTrue(dummy_conn.closed) + class TestDeferredXMLRPCResponse(unittest.TestCase): def _getTargetClass(self): from supervisor.xmlrpc import DeferredXMLRPCResponse diff --git a/supervisor/xmlrpc.py b/supervisor/xmlrpc.py index c3b6784b7..4588c5201 100644 --- a/supervisor/xmlrpc.py +++ b/supervisor/xmlrpc.py @@ -507,6 +507,11 @@ def get_connection(serverurl=serverurl): else: raise ValueError('Unknown protocol for serverurl %s' % serverurl) + def close(self): + if self.connection: + self.connection.close() + self.connection = None + def request(self, host, handler, request_body, verbose=0): request_body = as_bytes(request_body) if not self.connection: