Example #1
0
 def __init__(self, factory, host, port):
     self.factory = factory
     self.host = host
     self.peer_port = port
     self.connect_trans_id = n_random(4)
     self.key = n_random(4)
     self.connected = False
     self.deferred = defer.Deferred()
Example #2
0
 def datagramReceived(self, datagram, addr):
     self.timeout.reset(5)
     if not self.connected:
         assert len(datagram) >= 16
         action, trans_id, conn_id = struct.unpack('!I4sQ', datagram)
         assert action == 0
         assert self.connect_trans_id == trans_id
         self.connect_id = conn_id
         self.trans_id = n_random(4)
         self.transport.write(self._make_announce_pack(actions['announce'],
                                                         events['started']))
         self.connected = True
     else:
         size = len(datagram)
         assert size >= 20
         action, trans_id = struct.unpack_from('!I4s', datagram)
         assert action == 1
         assert trans_id == self.trans_id
         datagram = datagram[8:]
         self.peers(datagram)
         self.timeout.cancel()