From 99c60b83f15a3c40ecf0e5f144cfc060b37c4cf8 Mon Sep 17 00:00:00 2001
From: Monty Brandenberg <monty@lindenlab.com>
Date: Thu, 12 Sep 2013 20:15:20 -0400
Subject: SH-4489 New debug/dev settings for control over new mesh behavior
 While giving myself a full project code review, found a bug in the
 MeshUseGetMesh1 setting.  Mostly defaulted to old configuration but used the
 GetMesh2 caps which would have been a huge DoS resource sink.  Did some
 documentation maintenance as well while I was in there.  More for the to-do
 list, etc.

---
 indra/newview/app_settings/settings.xml |  4 ++--
 indra/newview/llmeshrepository.cpp      | 17 +++++++++++------
 2 files changed, 13 insertions(+), 8 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9948f9974a..60fc2d349d 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9983,7 +9983,7 @@
   <key>MeshUseHttpRetryAfter</key>
   <map>
     <key>Comment</key>
-    <string>If TRUE, use Retry-After response headers when rescheduling a mesh request that fails with an HTTP 503 status.</string>
+    <string>If TRUE, use Retry-After response headers when rescheduling a mesh request that fails with an HTTP 503 status.  Static.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
@@ -9994,7 +9994,7 @@
   <key>MeshUseGetMesh1</key>
   <map>
     <key>Comment</key>
-    <string>If TRUE, use the legacy GetMesh capability for mesh download requests.</string>
+    <string>If TRUE, use the legacy GetMesh capability for mesh download requests.  Semi-dynamic (read at region crossings).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 353e7e9a7f..c3d149db9a 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -282,10 +282,15 @@
 //     dialog.  Get the structured information going into the log into a
 //     tree there.
 //   * Header parse failures come without much explanation.  Elaborate.
-//   * Need a final failure state for requests that are retried and just won't
-//     complete.  We can fail a LOD request, others we don't.
-
-
+//   * Work queue for uploads?  Any need for this or is the current scheme good
+//     enough?
+//   * Various temp buffers used in VFS I/O might be allocated once or even
+//     statically.  Look for some wins here.
+//   * Move data structures holding mesh data used by main thread into main-
+//     thread-only access so that no locking is needed.  May require duplication
+//     of some data so that worker thread has a minimal data set to guide
+//     operations.
+//
 // --------------------------------------------------------------------------
 //                    Development/Debug/QA Tools
 //
@@ -1052,7 +1057,7 @@ std::string LLMeshRepoThread::constructUrl(LLUUID mesh_id)
 	
 	if (gAgent.getRegion())
 	{
-		if (! gMeshRepo.mGetMesh2Capability.empty())
+		if (! gMeshRepo.mGetMesh2Capability.empty() && gMeshRepo.mGetMeshVersion > 1)
 		{
 			http_url = gMeshRepo.mGetMesh2Capability;
 		}
@@ -2181,7 +2186,7 @@ void LLMeshUploadThread::doWholeModelUpload()
 		LLCore::BufferArray * ba = new LLCore::BufferArray;
 		LLCore::BufferArrayStream bas(ba);
 		LLSDSerialize::toXML(body, bas);
-		// LLSDSerialize::toXML(mModelData, bas);		// <- This will generate a convenient upload error
+		// LLSDSerialize::toXML(mModelData, bas);		// <- Enabling this will generate a convenient upload error
 		LLCore::HttpHandle handle = mHttpRequest->requestPost(mHttpPolicyClass,
 															  mHttpPriority,
 															  mWholeModelUploadURL,
-- 
cgit v1.2.3