diff options
3 files changed, 18 insertions, 4 deletions
diff --git a/OpenSim/Capabilities/CapsHandlers.cs b/OpenSim/Capabilities/CapsHandlers.cs index 1709f46..458272d 100644 --- a/OpenSim/Capabilities/CapsHandlers.cs +++ b/OpenSim/Capabilities/CapsHandlers.cs | |||
@@ -158,7 +158,7 @@ namespace OpenSim.Framework.Capabilities | |||
158 | /// capabilities and their handler details. | 158 | /// capabilities and their handler details. |
159 | /// </summary> | 159 | /// </summary> |
160 | /// <param name="excludeSeed">If true, then exclude the seed cap.</param> | 160 | /// <param name="excludeSeed">If true, then exclude the seed cap.</param> |
161 | public Hashtable GetCapsDetails(bool excludeSeed) | 161 | public Hashtable GetCapsDetails(bool excludeSeed, List<string> requestedCaps) |
162 | { | 162 | { |
163 | Hashtable caps = new Hashtable(); | 163 | Hashtable caps = new Hashtable(); |
164 | string protocol = "http://"; | 164 | string protocol = "http://"; |
@@ -175,6 +175,9 @@ namespace OpenSim.Framework.Capabilities | |||
175 | if (excludeSeed && "SEED" == capsName) | 175 | if (excludeSeed && "SEED" == capsName) |
176 | continue; | 176 | continue; |
177 | 177 | ||
178 | if (requestedCaps != null && !requestedCaps.Contains(capsName)) | ||
179 | continue; | ||
180 | |||
178 | caps[capsName] = baseUrl + m_capsHandlers[capsName].Path; | 181 | caps[capsName] = baseUrl + m_capsHandlers[capsName].Path; |
179 | } | 182 | } |
180 | } | 183 | } |
@@ -182,4 +185,4 @@ namespace OpenSim.Framework.Capabilities | |||
182 | return caps; | 185 | return caps; |
183 | } | 186 | } |
184 | } | 187 | } |
185 | } \ No newline at end of file | 188 | } |
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); |