diff --git a/src/chat/_chatwidget.py b/src/chat/_chatwidget.py
index 17cb522fe..f0d68d4ba 100644
--- a/src/chat/_chatwidget.py
+++ b/src/chat/_chatwidget.py
@@ -91,7 +91,9 @@ def __init__(self, client, *args, **kwargs):
def disconnect(self):
self.canDisconnect = True
self.irc_disconnect()
- self._notifier = None
+ if self._notifier:
+ self._notifier.activated.disconnect(self.once)
+ self._notifier = None
@QtCore.pyqtSlot(object)
diff --git a/src/client/_clientwindow.py b/src/client/_clientwindow.py
index dc1ca4f5e..e1a58e042 100644
--- a/src/client/_clientwindow.py
+++ b/src/client/_clientwindow.py
@@ -990,7 +990,7 @@ def disconnectedFromServer(self):
self.urls = {}
self.usersUpdated.emit(oldplayers)
- if self.state != ClientState.DISCONNECTED:
+ if self.state != ClientState.DISCONNECTED and self.state != ClientState.SHUTDOWN:
self.state = ClientState.DROPPED
if self._connection_attempts < 2:
logger.info("Reconnecting immediately")
@@ -1118,6 +1118,8 @@ def handle_session(self, message):
@QtCore.pyqtSlot()
def perform_login(self):
self.uniqueId = util.uniqueID(self.login, self.session)
+ if not self.uniqueId:
+ return False
self.send(dict(command="hello",
login=self.login,
password=self.password,
diff --git a/src/util/__init__.py b/src/util/__init__.py
index af6080e25..47d7c025f 100644
--- a/src/util/__init__.py
+++ b/src/util/__init__.py
@@ -585,8 +585,10 @@ def uniqueID(user, session):
return baseString
except:
- logger.error("UniqueID Failure", exc_info=sys.exc_info())
- return None
+ QtGui.QMessageBox.warning(None, "C++ 2010 Runtime Missing",
+ "You are missing the Microsoft Visual C++ 2010 Runtime.
Get it from here: https://www.microsoft.com/en-us/download/details.aspx?id=5555")
+ logger.warning("UniqueID Failure, user warned", exc_info=sys.exc_info())
+ QtGui.QApplication.quit()
import datetime