Skip to content

Commit 94b07b4

Browse files
committed
xmlrpc: properly close connection on SupervisorTransport.close
Method on parent class ( xmlrpclib.Transport.close ) expect connection to be self._connection[1], but SupervisorTransport use self.connection for the socket. Implement SupervisorTransport.close which uses self.connection.
1 parent 0d0cdf6 commit 94b07b4

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

supervisor/tests/test_xmlrpc.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,17 @@ def getconn():
508508
self.assertEqual(dummy_conn.requestargs[3]['Accept'], 'text/xml')
509509
self.assertEqual(result, ('South Dakota',))
510510

511+
def test_close(self):
512+
transport = self._makeOne('user', 'pass', 'http://127.0.0.1/')
513+
dummy_conn = DummyConnection(200, '''<?xml version="1.0"?>
514+
<methodResponse><params/></methodResponse>''')
515+
def getconn():
516+
return dummy_conn
517+
transport._get_connection = getconn
518+
transport.request('localhost', '/', '')
519+
transport.close()
520+
self.assertTrue(dummy_conn.closed)
521+
511522
class TestDeferredXMLRPCResponse(unittest.TestCase):
512523
def _getTargetClass(self):
513524
from supervisor.xmlrpc import DeferredXMLRPCResponse

supervisor/xmlrpc.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,11 @@ def get_connection(serverurl=serverurl):
507507
else:
508508
raise ValueError('Unknown protocol for serverurl %s' % serverurl)
509509

510+
def close(self):
511+
if self.connection:
512+
self.connection.close()
513+
self.connection = None
514+
510515
def request(self, host, handler, request_body, verbose=0):
511516
request_body = as_bytes(request_body)
512517
if not self.connection:

0 commit comments

Comments
 (0)