diff --git a/indra/newview/aldiscordmanager.cpp b/indra/newview/aldiscordmanager.cpp
index c57ee6b2a418dd72111547fcfc0fc6e7d0336c8e..65756792d87a1533fc00840eb45f1f1d75e45aab 100644
--- a/indra/newview/aldiscordmanager.cpp
+++ b/indra/newview/aldiscordmanager.cpp
@@ -47,7 +47,7 @@ ALDiscordManager::ALDiscordManager()
 {
 	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&ALDiscordManager::onLoginCompleted, this));
 
-	gSavedPerAccountSettings.getControl("ALDiscordIntegration")->getSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
+	mIntegrationSettingConnection = gSavedPerAccountSettings.getControl("ALDiscordIntegration")->getSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
 		{
 			bool discord_enabled = new_val;
 			if (discord_enabled)
@@ -68,6 +68,7 @@ ALDiscordManager::ALDiscordManager()
 
 ALDiscordManager::~ALDiscordManager()
 {
+	mIntegrationSettingConnection.disconnect();
 	shutdown();
 }
 
diff --git a/indra/newview/aldiscordmanager.h b/indra/newview/aldiscordmanager.h
index 8ad3c183574f08f0477a62e306745da9bd282281..2176a84f4f87c5c7d874e16c8c82739462f8578c 100644
--- a/indra/newview/aldiscordmanager.h
+++ b/indra/newview/aldiscordmanager.h
@@ -49,6 +49,7 @@ class ALDiscordManager final
     void onRegionChange();
     void updateActivity();
 
+    boost::signals2::connection mIntegrationSettingConnection;
     boost::signals2::connection mRegionChangeConnection;
     std::unique_ptr<discord::Core> mDiscord;
     LLHost mCurrentHost;
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index e3d0d07825e4927118be476b00bda90e107af872..24573da5b485007adb1a56443c3b71157f1b8804 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -5706,6 +5706,7 @@ void LLAppViewer::handleLoginComplete()
 	}
 
 	mOnLoginCompleted();
+	mOnLoginCompleted.disconnect_all_slots(); // No longer needed
 
 // [SL:KB] - Patch: Build-AssetRecovery | Checked: 2011-11-24 (Catznip-3.2)
 	LLAssetRecoverQueue::recoverIfNeeded();