From eae426a413f9d93abc0fb762003100488da00cf6 Mon Sep 17 00:00:00 2001 From: TheKysek Date: Tue, 19 Jul 2016 14:09:42 +0200 Subject: [PATCH] Connection logic tweaks --- src/connection.py | 10 ++++++---- src/message.py | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/connection.py b/src/connection.py index 7013d4e..7113a85 100644 --- a/src/connection.py +++ b/src/connection.py @@ -116,7 +116,7 @@ class Connection(threading.Thread): else: break except Exception as e: - print(e) + logging.error(e) break self.s.settimeout(0.5) self.tls = True @@ -132,15 +132,17 @@ class Connection(threading.Thread): self.s.settimeout(0.5) def _on_connection_fully_established(self): - self.status = 'fully_established' logging.info('Established Bitmessage protocol connection to {}:{}'.format(self.host, self.port)) if self.remote_version.services & 2: # NODE_SSL self._do_tls_handshake() + time.sleep(5) with shared.objects_lock: - self.send_queue.put(message.Inv({vector for vector in shared.objects.keys() if shared.objects[vector].expires_time > time.time()})) - addr = {structure.NetAddr(1, c.host, c.port) for c in shared.connections.copy() if not c.server and c.status == 'fully_established'} + if len(shared.objects) > 0: + self.send_queue.put(message.Inv({vector for vector in shared.objects.keys() if shared.objects[vector].expires_time > time.time()})) + addr = {structure.NetAddr(c.remote_version.services, c.host, c.port) for c in shared.connections.copy() if not c.server and c.status == 'fully_established'} if len(addr) != 0: self.send_queue.put(message.Addr(addr)) + self.status = 'fully_established' def _process_queue(self): while not self.send_queue.empty(): diff --git a/src/message.py b/src/message.py index a3dbc99..17ae576 100644 --- a/src/message.py +++ b/src/message.py @@ -158,6 +158,8 @@ class Inv(object): vectors.add(payload[:32]) payload = payload[32:] + assert vector_count == len(vectors) + return cls(vectors)