]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - xmlrpcclient.py
return K nodes and not K-1
[quix0rs-apt-p2p.git] / xmlrpcclient.py
index 866039f991e61639ce69939cb06ad62806c70450..7b50917df8b63243c3056e886d13a014cff28a2c 100644 (file)
@@ -4,11 +4,12 @@ from twisted.internet.defer import Deferred
 
 from xmlrpclib import loads, dumps
 
+USER_AGENT = 'Python/Twisted XMLRPC 0.1'
 class XMLRPCClient(HTTPClient):
     def connectionMade(self):
        payload = dumps(self.args, self.method)
        self.sendCommand('POST', '/RPC2')
-       self.sendHeader('User-Agent', 'Python/Twisted XMLRPC 0.1')
+       self.sendHeader('User-Agent', USER_AGENT)
        self.sendHeader('Content-Type', 'text/xml')
        self.sendHeader('Content-Length', len(payload))
        self.endHeaders()
@@ -16,9 +17,17 @@ class XMLRPCClient(HTTPClient):
         self.transport.write('\r\n')
        
     def handleResponse(self, buf):
-       args, name = loads(buf)
-       apply(self.d.callback, args)
-
+       try:
+           args, name = loads(buf)
+       except Exception, e:
+           print "response decode error: " + `e`
+           self.d.errback()
+       else:
+           l = []
+           for i in args:
+               l.append(i)
+           l.append({'host' : self.transport.getHost()[1]})
+           apply(self.d.callback, (l,))
 
 class XMLRPCClientFactory(ClientFactory):
     def __init__(self, method, args, callback=None, errback=None):
@@ -36,3 +45,6 @@ class XMLRPCClientFactory(ClientFactory):
        prot.args = self.args
        prot.d = self.d
        return prot
+
+    def clientConnectionFailed(self, connector, reason):
+       self.d.errback()
\ No newline at end of file