aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2013-04-30 23:35:59 +0200
committerMelanie2013-04-30 23:50:23 +0100
commitac135c649c55fefc73e2f5f654a5ff65f45d50c0 (patch)
tree522130f0a6df75c1b48d156db78ea8cc0af10386 /OpenSim/Region
parentBulletSim: fix error messages created while an avatar has no initial (diff)
downloadopensim-SC-ac135c649c55fefc73e2f5f654a5ff65f45d50c0.zip
opensim-SC-ac135c649c55fefc73e2f5f654a5ff65f45d50c0.tar.gz
opensim-SC-ac135c649c55fefc73e2f5f654a5ff65f45d50c0.tar.bz2
opensim-SC-ac135c649c55fefc73e2f5f654a5ff65f45d50c0.tar.xz
Fix CAPS to work like they should - do not send caps to the viewer if they're not in the requested caps list.
The previous wrong behavior caused the debug setting "UseHTTPInventory" to fail on all viewers when turned off. UDB inventory would not be correctly used in that case.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs13
-rw-r--r--OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs2
2 files changed, 13 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 8752404..a46c24a 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -273,11 +273,22 @@ namespace OpenSim.Region.ClientStack.Linden
273 return string.Empty; 273 return string.Empty;
274 } 274 }
275 275
276 Hashtable caps = m_HostCapsObj.CapsHandlers.GetCapsDetails(true); 276 OSDArray capsRequested = (OSDArray)OSDParser.DeserializeLLSDXml(request);
277 List<string> validCaps = new List<string>();
278
279 foreach (OSD c in capsRequested)
280 validCaps.Add(c.AsString());
281
282 Hashtable caps = m_HostCapsObj.CapsHandlers.GetCapsDetails(true, validCaps);
277 283
278 // Add the external too 284 // Add the external too
279 foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers) 285 foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers)
286 {
287 if (!validCaps.Contains(kvp.Key))
288 continue;
289
280 caps[kvp.Key] = kvp.Value; 290 caps[kvp.Key] = kvp.Value;
291 }
281 292
282 string result = LLSDHelpers.SerialiseLLSDReply(caps); 293 string result = LLSDHelpers.SerialiseLLSDReply(caps);
283 294
diff --git a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
index 8329af0..6ae9448 100644
--- a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
@@ -240,7 +240,7 @@ namespace OpenSim.Region.CoreModules.Framework
240 { 240 {
241 caps.AppendFormat("** User {0}:\n", kvp.Key); 241 caps.AppendFormat("** User {0}:\n", kvp.Key);
242 242
243 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.GetCapsDetails(false).GetEnumerator(); kvp2.MoveNext(); ) 243 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.GetCapsDetails(false, null).GetEnumerator(); kvp2.MoveNext(); )
244 { 244 {
245 Uri uri = new Uri(kvp2.Value.ToString()); 245 Uri uri = new Uri(kvp2.Value.ToString());
246 caps.AppendFormat(m_showCapsCommandFormat, kvp2.Key, uri.PathAndQuery); 246 caps.AppendFormat(m_showCapsCommandFormat, kvp2.Key, uri.PathAndQuery);