]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - krpc.py
Make it also work from the command-line.
[quix0rs-apt-p2p.git] / krpc.py
diff --git a/krpc.py b/krpc.py
index 7e64544f4103b26e8b0ed925d6144e5c40a8561b..8a6009250e619f88606629d21c1d142ce61bad31 100644 (file)
--- a/krpc.py
+++ b/krpc.py
@@ -1,18 +1,16 @@
 ## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved
 # see LICENSE.txt for license information
 
-import airhook
-from twisted.internet.defer import Deferred
-from twisted.protocols import basic
 from bencode import bencode, bdecode
-from twisted.internet import protocol
+from time import asctime
+import sys
+from traceback import format_exception
 
+from twisted.internet.defer import Deferred
+from twisted.internet import protocol
 from twisted.internet import reactor
-import time
-
-import khash as hash
 
-KRPC_TIMEOUT = 60
+KRPC_TIMEOUT = 20
 
 KRPC_ERROR = 1
 KRPC_ERROR_METHOD_UNKNOWN = 2
@@ -73,7 +71,6 @@ class KRPC:
         except Exception, e:
             if self.noisy:
                 print "response decode error: " + `e`
-            self.d.errback()
         else:
             #if self.noisy:
             #    print msg
@@ -89,7 +86,7 @@ class KRPC:
                         ret = apply(f, (), msg[ARG])
                     except Exception, e:
                         ## send error
-                        out = bencode({TID:msg[TID], TYP:ERR, ERR :`e`})
+                        out = bencode({TID:msg[TID], TYP:ERR, ERR :`format_exception(type(e), e, sys.exc_info()[2])`})
                         olen = len(out)
                         self.transport.write(out, addr)
                     else:
@@ -110,7 +107,7 @@ class KRPC:
                     olen = len(out)
                     self.transport.write(out, addr)
                 if self.noisy:
-                    print "%s %s >>> %s - %s %s %s" % (time.asctime(), addr, self.factory.node.port, 
+                    print "%s %s >>> %s - %s %s %s" % (asctime(), addr, self.factory.node.port, 
                                                     ilen, msg[REQ], olen)
             elif msg[TYP] == RSP:
                 # if response
@@ -121,7 +118,7 @@ class KRPC:
                     del(self.tids[msg[TID]])
                     df.callback({'rsp' : msg[RSP], '_krpc_sender': addr})
                 else:
-                    print 'timeout ' + `msg[RSP]['sender']`
+                    print 'timeout ' + `msg[RSP]['id']`
                     # no tid, this transaction timed out already...
             elif msg[TYP] == ERR:
                 # if error