From 3361b63c157384a1b8206503aa7ec2e3e43c9f49 Mon Sep 17 00:00:00 2001
From: Kitty Barnett <develop@catznip.com>
Date: Sun, 27 Nov 2016 18:23:57 +0100
Subject: [PATCH] [FIXED] RLVa can be enabled from the command prompt
 (bypassing user consent)   -> if detected force RLVa to disabled and inform
 the user

--HG--
branch : RLVa
---
 indra/llxml/llcontrol.h       |  3 +++
 indra/newview/llappviewer.cpp | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index 77065dcf8d3..0d805e72d25 100644
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -134,6 +134,9 @@ class LLControlVariable : public LLRefCount
 	commit_signal_t* getCommitSignal() { return &mCommitSignal; }
 	validate_signal_t* getValidateSignal() { return &mValidateSignal; }
 
+// [RLVa:KB] - Patch: RLVa-2.1.0
+	bool hasUnsavedValue() { return mValues.size() >= 2; }
+// [/RLVa:KB]
 	bool isDefault() { return (mValues.size() == 1); }
 	bool shouldSave(bool nondefault_only);
 	bool isPersisted() { return mPersist != PERSIST_NO; }
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 9efd13d6678..972d44b5334 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2848,6 +2848,21 @@ bool LLAppViewer::initConfiguration()
 		LLEventPumps::instance().obtain("LLControlGroup").post(LLSDMap("init", *ki));
 	}
 
+// [RLVa:KB] - Patch: RLVa-2.1.0
+	if (LLControlVariable* pControl = gSavedSettings.getControl(RLV_SETTING_MAIN))
+	{
+		if ( (pControl->getValue().asBoolean()) && (pControl->hasUnsavedValue()) )
+		{
+			pControl->resetToDefault();
+			pControl->setValue(false);
+
+			std::ostringstream msg;
+			msg << LLTrans::getString("RLVaToggleMessageLogin", LLSD().with("[STATE]", LLTrans::getString("RLVaToggleDisabled")));
+			OSMessageBox(msg.str(), LLStringUtil::null, OSMB_OK);
+		}
+	}
+// [/RLVa:KB]
+
 	return true; // Config was successful.
 }
 
-- 
GitLab