From 3063c256d4dee650fe66a8a8b937ffce7de6b8f6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 3 Aug 2013 12:45:15 +0100 Subject: [PATCH] Maximum message length configurable within keys.dat --- src/class_receiveDataThread.py | 13 ++++++++++++- src/helper_startup.py | 1 + src/shared.py | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/class_receiveDataThread.py b/src/class_receiveDataThread.py index 2693b293..f1ba979d 100644 --- a/src/class_receiveDataThread.py +++ b/src/class_receiveDataThread.py @@ -46,6 +46,17 @@ class receiveDataThread(threading.Thread): self.PORT = port self.streamNumber = streamNumber self.payloadLength = 0 # This is the protocol payload length thus it doesn't include the 24 byte message header + self.maxMessageLength = 180000000 # maximum length of a message in bytes, default 180MB + + # get the maximum message length from the settings + try: + maxMsgLen = shared.config.getint( + 'bitmessagesettings', 'maxmessagelength') + if maxMsgLen > 32768: # minimum of 32K + self.maxMessageLength = maxMsgLen + except Exception: + pass + self.objectsThatWeHaveYetToCheckAndSeeWhetherWeAlreadyHave = {} self.selfInitiatedConnections = selfInitiatedConnections shared.connectedHostsList[ @@ -140,7 +151,7 @@ class receiveDataThread(threading.Thread): shared.knownNodes[self.streamNumber][ self.HOST] = (self.PORT, int(time.time())) shared.knownNodesLock.release() - if self.payloadLength <= 180000000: # If the size of the message is greater than 180MB, ignore it. (I get memory errors when processing messages much larger than this though it is concievable that this value will have to be lowered if some systems are less tolarant of large messages.) + if self.payloadLength <= self.maxMessageLength: # If the size of the message is greater than the maximum, ignore it. remoteCommand = self.data[4:16] with shared.printLock: print 'remoteCommand', repr(remoteCommand.replace('\x00', '')), ' from', self.HOST diff --git a/src/helper_startup.py b/src/helper_startup.py index d60ad681..c36589d5 100644 --- a/src/helper_startup.py +++ b/src/helper_startup.py @@ -67,6 +67,7 @@ def loadConfig(): shared.config.set( 'bitmessagesettings', 'maxacceptablepayloadlengthextrabytes', '0') shared.config.set('bitmessagesettings', 'dontconnect', 'true') + shared.config.set('bitmessagesettings', 'maxMessageLength', '180000000') if storeConfigFilesInSameDirectoryAsProgramByDefault: # Just use the same directory as the program and forget about diff --git a/src/shared.py b/src/shared.py index 32370524..aed1971e 100644 --- a/src/shared.py +++ b/src/shared.py @@ -371,4 +371,4 @@ def fixSensitiveFilePermissions(filename, hasEnabledKeys): raise helper_startup.loadConfig() -from debug import logger \ No newline at end of file +from debug import logger