diff --git a/pysyncobj/tcp_connection.py b/pysyncobj/tcp_connection.py index 6260b60..4487868 100644 --- a/pysyncobj/tcp_connection.py +++ b/pysyncobj/tcp_connection.py @@ -3,6 +3,7 @@ from sys import platform import zlib import struct +import logging import pysyncobj.pickle as pickle import pysyncobj.win_inet_pton @@ -284,16 +285,20 @@ def __processParseMessage(self): try: if self.encryptor: dataTimestamp = self.encryptor.extract_timestamp(data) - assert dataTimestamp >= self.recvLastTimestamp + assert dataTimestamp >= self.recvLastTimestamp, "Replay - timestamp" self.recvLastTimestamp = dataTimestamp # Unfortunately we can't get a timestamp and data in one go data = self.encryptor.decrypt(data) message = pickle.loads(zlib.decompress(data)) if self.recvRandKey: randKey, message = message - assert randKey == self.recvRandKey - except: - # Why no logging of security errors? + assert randKey == self.recvRandKey, "Replay - recvRandKey" + except Exception as e: + try: + peername = self.__socket.getpeername()[0] + except Exception as e2: + peername = "(%s)" % repr(e2) + logging.info('Invalid message from %s, connection closing due to %s.' % (peername, repr(e))) self.disconnect() return None self.__readBuffer = self.__readBuffer[4 + l:]