From fd95f8f519d9c06ad2cdac4016901c76ec03a657 Mon Sep 17 00:00:00 2001 From: Justin Ramos Date: Fri, 13 Jan 2017 01:12:11 +0000 Subject: [PATCH] allowing for max outbound connection configuration Signed-off-by: Justin Ramos --- .gitignore | 4 +++- src/bitmessageqt/__init__.py | 6 ++++++ src/bitmessageqt/settings.py | 14 ++++++++++++++ src/bitmessageqt/settings.ui | 23 +++++++++++++++++++++++ src/class_outgoingSynSender.py | 2 +- src/class_sqlThread.py | 10 ++++++++++ src/helper_startup.py | 1 + 7 files changed, 58 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b0bf5ae4..f3eb161c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ src/dist src/.project src/.pydevproject src/.settings/ -*.dll \ No newline at end of file +src/**/.dll +src/**/*.o +src/**/*.so diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index 9862a373..cbf6217f 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -2400,6 +2400,10 @@ class MyForm(settingsmixin.SMainWindow): except: QMessageBox.about(self, _translate("MainWindow", "Number needed"), _translate( "MainWindow", "Your maximum download and upload rate must be numbers. Ignoring what you typed.")) + + BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', str( + int(float(self.settingsDialogInstance.ui.lineEditMaxOutboundConnections.text())))) + throttle.SendThrottle().resetLimit() throttle.ReceiveThrottle().resetLimit() @@ -4108,6 +4112,8 @@ class settingsDialog(QtGui.QDialog): BMConfigParser().get('bitmessagesettings', 'maxdownloadrate'))) self.ui.lineEditMaxUploadRate.setText(str( BMConfigParser().get('bitmessagesettings', 'maxuploadrate'))) + self.ui.lineEditMaxOutboundConnections.setText(str( + BMConfigParser().get('bitmessagesettings', 'maxoutboundconnections'))) # Demanded difficulty tab self.ui.lineEditTotalDifficulty.setText(str((float(BMConfigParser().getint( diff --git a/src/bitmessageqt/settings.py b/src/bitmessageqt/settings.py index 33b4c29d..300c3544 100644 --- a/src/bitmessageqt/settings.py +++ b/src/bitmessageqt/settings.py @@ -154,6 +154,19 @@ class Ui_settingsDialog(object): self.lineEditMaxUploadRate.setMaximumSize(QtCore.QSize(60, 16777215)) self.lineEditMaxUploadRate.setObjectName(_fromUtf8("lineEditMaxUploadRate")) self.gridLayout_9.addWidget(self.lineEditMaxUploadRate, 1, 2, 1, 1) + self.label_26 = QtGui.QLabel(self.groupBox_3) + self.label_26.setObjectName(_fromUtf8("label_26")) + self.gridLayout_9.addWidget(self.label_26, 2, 1, 1, 1) + self.lineEditMaxOutboundConnections = QtGui.QLineEdit(self.groupBox_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.lineEditMaxOutboundConnections.sizePolicy().hasHeightForWidth()) + self.lineEditMaxOutboundConnections.setSizePolicy(sizePolicy) + self.lineEditMaxOutboundConnections.setMaximumSize(QtCore.QSize(60, 16777215)) + self.lineEditMaxOutboundConnections.setObjectName(_fromUtf8("lineEditMaxOutboundConnections")) + self.lineEditMaxOutboundConnections.setValidator(QtGui.QIntValidator(0, 4096, self.lineEditMaxOutboundConnections)) + self.gridLayout_9.addWidget(self.lineEditMaxOutboundConnections, 2, 2, 1, 1) self.gridLayout_4.addWidget(self.groupBox_3, 2, 0, 1, 1) self.groupBox_2 = QtGui.QGroupBox(self.tabNetworkSettings) self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) @@ -459,6 +472,7 @@ class Ui_settingsDialog(object): self.groupBox_3.setTitle(_translate("settingsDialog", "Bandwidth limit", None)) self.label_24.setText(_translate("settingsDialog", "Maximum download rate (kB/s): [0: unlimited]", None)) self.label_25.setText(_translate("settingsDialog", "Maximum upload rate (kB/s): [0: unlimited]", None)) + self.label_26.setText(_translate("settingsDialog", "Maximum outbound connections: [0: none]", None)) self.groupBox_2.setTitle(_translate("settingsDialog", "Proxy server / Tor", None)) self.label_2.setText(_translate("settingsDialog", "Type:", None)) self.label_3.setText(_translate("settingsDialog", "Server hostname:", None)) diff --git a/src/bitmessageqt/settings.ui b/src/bitmessageqt/settings.ui index 475821f8..4aeba3ce 100644 --- a/src/bitmessageqt/settings.ui +++ b/src/bitmessageqt/settings.ui @@ -317,6 +317,29 @@ + + + + Maximum outbound connections: [0: none] + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + diff --git a/src/class_outgoingSynSender.py b/src/class_outgoingSynSender.py index 91cd660a..a41ae75a 100644 --- a/src/class_outgoingSynSender.py +++ b/src/class_outgoingSynSender.py @@ -78,7 +78,7 @@ class outgoingSynSender(threading.Thread, StoppableThread): self.stop.wait(2) while BMConfigParser().safeGetBoolean('bitmessagesettings', 'sendoutgoingconnections') and not self._stopped: self.name = "outgoingSynSender" - maximumConnections = 1 if state.trustedPeer else 8 # maximum number of outgoing connections = 8 + maximumConnections = 1 if state.trustedPeer else BMConfigParser().safeGetInt('bitmessagesettings', 'maxoutboundconnections') while len(self.selfInitiatedConnections[self.streamNumber]) >= maximumConnections and not self._stopped: self.stop.wait(10) if state.shutdown: diff --git a/src/class_sqlThread.py b/src/class_sqlThread.py index 3a8b1bed..332a40ec 100644 --- a/src/class_sqlThread.py +++ b/src/class_sqlThread.py @@ -434,6 +434,16 @@ class sqlThread(threading.Thread): BMConfigParser().set('bitmessagesettings', 'smtpdeliver', '') if not BMConfigParser().has_option('bitmessagesettings', 'hidetrayconnectionnotifications'): BMConfigParser().set('bitmessagesettings', 'hidetrayconnectionnotifications', 'false') + if BMConfigParser().has_option('bitmessagesettings', 'maxoutboundconnections'): + try: + if BMConfigParser().getint('bitmessagesettings', 'maxoutboundconnections') < 1: raise ValueError + except ValueError as err: + BMConfigParser().remove_option('bitmessagesettings', 'maxoutboundconnections') + logger.error('Your maximum outbound connections must be a number.') + if not BMConfigParser().has_option('bitmessagesettings', 'maxoutboundconnections'): + logger.info('Setting maximum outbound connections to 8.') + BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', '8') + BMConfigParser().save() # Are you hoping to add a new option to the keys.dat file of existing diff --git a/src/helper_startup.py b/src/helper_startup.py index 3841e1ed..ca89d111 100644 --- a/src/helper_startup.py +++ b/src/helper_startup.py @@ -107,6 +107,7 @@ def loadConfig(): BMConfigParser().set('bitmessagesettings', 'replybelow', 'False') BMConfigParser().set('bitmessagesettings', 'maxdownloadrate', '0') BMConfigParser().set('bitmessagesettings', 'maxuploadrate', '0') + BMConfigParser().set('bitmessagesettings', 'maxoutboundconnections', '8') BMConfigParser().set('bitmessagesettings', 'ttl', '367200') #start:UI setting to stop trying to send messages after X days/months