diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 142378b5403dd35e64bd7a6f0d94041e6216a190..bc06078928f84cb4aeead9c6c1f89a030f73b35c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2962,6 +2962,17 @@
         <string>Boolean</string>
         <key>Value</key>
         <integer>0</integer>
+    </map>
+    <key>FastQuit</key>
+      <map>
+        <key>Comment</key>
+        <string>Quits as quickly as possible, only sending logout request before forcefully terminating.  Use with care, as this might result in data corruption or loss.</string>
+        <key>Persist</key>
+        <integer>1</integer>
+        <key>Type</key>
+        <string>Boolean</string>
+        <key>Value</key>
+        <integer>0</integer>
     </map>
 	<key>FeatureManagerHTTPTable</key>
       <map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index e6661e4c9abdf935ef5ed0a668a60c315631bc28..91fae709df9e7d1f66fcb139b0883a74739a8535 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2879,8 +2879,22 @@ void LLAppViewer::forceQuit()
 	LLApp::setQuitting(); 
 }
 
+void LLAppViewer::fastQuit()
+{
+	if (LLStartUp::getStartupState() >= STATE_STARTED)
+	{
+		sendLogoutRequest();
+	}
+	_exit(isError());	
+}
+
 void LLAppViewer::requestQuit()
 {
+	if (gSavedSettings.getBOOL("FastQuit"))
+	{
+		fastQuit();
+	}
+
 	llinfos << "requestQuit" << llendl;
 
 	LLViewerRegion* region = gAgent.getRegion();
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index b0f8c1dc3da1370e0d15018084d960df6500a6e1..62ebd0712eeca07d12424a4d26d1f75172ae17a6 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -66,6 +66,7 @@ class LLAppViewer : public LLApp
 
 	// Application control
 	void forceQuit(); // Puts the viewer into 'shutting down without error' mode.
+	void fastQuit(); // Shuts down the viewer immediately after sending a logout message
 	void requestQuit(); // Request a quit. A kinder, gentler quit.
 	void userQuit(); // The users asks to quit. Confirm, then requestQuit()
     void earlyExit(const std::string& name, 
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index d328567a0e0f4f2e7e919fffebdaad9618af947a..2c6f014d17c56c9cdc96abcdac9bb3afc0b07c56 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -175,6 +175,12 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
 		viewer_app_ptr->mainLoop();
 	}
 
+	if (gSavedSettings.getBOOL("FastQuit"))
+	{
+		viewer_app_ptr->fastQuit();
+	}
+
+
 	if (!LLApp::isError())
 	{
 		//