]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - xmlrpcclient.py
quiet down the factory
[quix0rs-apt-p2p.git] / xmlrpcclient.py
index 866039f991e61639ce69939cb06ad62806c70450..f8d33b2fb05d7e5bdf1cf24572fa1595bb486be9 100644 (file)
@@ -3,12 +3,14 @@ from twisted.protocols.http import HTTPClient
 from twisted.internet.defer import Deferred
 
 from xmlrpclib import loads, dumps
+import socket
 
+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 +18,13 @@ 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:
+           apply(self.d.callback, args)
 
 class XMLRPCClientFactory(ClientFactory):
     def __init__(self, method, args, callback=None, errback=None):
@@ -29,10 +35,14 @@ class XMLRPCClientFactory(ClientFactory):
            self.d.addCallback(callback)
        if errback:
            self.d.addErrback(errback)
-           
+        self.noisy = 0
+        
     def buildProtocol(self, addr):
         prot =  XMLRPCClient()
        prot.method = self.method
        prot.args = self.args
        prot.d = self.d
        return prot
+
+    def clientConnectionFailed(self, connector, reason):
+       self.d.errback()
\ No newline at end of file