فهرست منبع

fix handling of incoming 'myport' messages

Malte Kraus 8 سال پیش
والد
کامیت
265da0c435
1فایلهای تغییر یافته به همراه5 افزوده شده و 1 حذف شده
  1. 5 1
      src/protocol.py

+ 5 - 1
src/protocol.py

@@ -53,6 +53,7 @@ class PeerConnection:
         Does not return until the writer thread does.
         """
         if self.socket is None:
+            logging.info("connecting to peer %s", repr(self._sock_addr))
             self.socket = socket.create_connection(self._sock_addr)
         self.socket.sendall(HELLO_MSG)
         if self.socket.recv(len(HELLO_MSG)) != HELLO_MSG:
@@ -141,7 +142,7 @@ class PeerConnection:
             logging.debug("received %s", obj['msg_type'])
 
             if msg_type == 'myport':
-                self.peer_addr = (self._sock_addr,) + (int(msg_param),) + self._sock_addr[2:]
+                self.peer_addr = (self._sock_addr[0],) + (int(msg_param),) + self._sock_addr[2:]
             else:
                 self.proto.received(msg_type, msg_param, self)
 
@@ -183,7 +184,10 @@ class Protocol:
             """ Handler for incoming P2P connections. """
             proto = self
             def handle(self):
+                logging.info("connection from peer %s", repr(self.client_address))
                 if len(self.proto.peers) > MAX_PEERS:
+                    logging.warn("too many connections: rejecting peer %s", repr(self.client_address))
+                    self.request.close()
                     # TODO: separate limits for incoming and outgoing connections
                     return