## 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
except Exception, e:
if self.noisy:
print "response decode error: " + `e`
- self.d.errback()
else:
#if self.noisy:
# print msg
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:
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
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