diff options
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | 13 |
1 files changed, 12 insertions, 1 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 | ||