aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Communications
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Communications')
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetCache.cs22
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetServerBase.cs8
-rw-r--r--OpenSim/Framework/Communications/Cache/CachedUserInfo.cs220
-rw-r--r--OpenSim/Framework/Communications/Cache/GridAssetClient.cs8
-rw-r--r--OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs46
-rw-r--r--OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs72
-rw-r--r--OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs78
-rw-r--r--OpenSim/Framework/Communications/Capabilities/Caps.cs130
-rw-r--r--OpenSim/Framework/Communications/Capabilities/CapsHandlers.cs16
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSD.cs26
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDHelpers.cs10
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDInventoryItem.cs2
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDParcelVoiceInfoResponse.cs4
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDStreamHandler.cs2
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDTaskInventoryUploadComplete.cs2
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDTaskScriptUpdate.cs6
-rw-r--r--OpenSim/Framework/Communications/Capabilities/LLSDVoiceAccountResponse.cs4
-rw-r--r--OpenSim/Framework/Communications/CommunicationsManager.cs2
-rw-r--r--OpenSim/Framework/Communications/GenericAsyncResult.cs4
-rw-r--r--OpenSim/Framework/Communications/IInventoryServices.cs22
-rw-r--r--OpenSim/Framework/Communications/IUserService.cs8
-rw-r--r--OpenSim/Framework/Communications/InventoryServiceBase.cs122
-rw-r--r--OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs10
-rw-r--r--OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs6
-rw-r--r--OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs38
-rw-r--r--OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs50
-rw-r--r--OpenSim/Framework/Communications/LoginResponse.cs4
-rw-r--r--OpenSim/Framework/Communications/LoginService.cs108
-rw-r--r--OpenSim/Framework/Communications/Properties/AssemblyInfo.cs10
-rw-r--r--OpenSim/Framework/Communications/RestClient.cs12
-rw-r--r--OpenSim/Framework/Communications/UserManagerBase.cs26
31 files changed, 539 insertions, 539 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs
index 1414260..0669ce9 100644
--- a/OpenSim/Framework/Communications/Cache/AssetCache.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs
@@ -40,12 +40,12 @@ namespace OpenSim.Framework.Communications.Cache
40 40
41 /// <summary> 41 /// <summary>
42 /// Manages local cache of assets and their sending to viewers. 42 /// Manages local cache of assets and their sending to viewers.
43 /// 43 ///
44 /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either 44 /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either
45 /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and 45 /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and
46 /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and 46 /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and
47 /// AssetNotFound(), which means they do share the same asset and texture caches. 47 /// AssetNotFound(), which means they do share the same asset and texture caches.
48 /// 48 ///
49 /// TODO Assets in this cache are effectively immortal (they are never disposed off through old age). 49 /// TODO Assets in this cache are effectively immortal (they are never disposed off through old age).
50 /// This is not a huge problem at the moment since other memory use usually dwarfs that used by assets 50 /// This is not a huge problem at the moment since other memory use usually dwarfs that used by assets
51 /// but it's something to bear in mind. 51 /// but it's something to bear in mind.
@@ -281,8 +281,8 @@ namespace OpenSim.Framework.Communications.Cache
281 281
282 /// <summary> 282 /// <summary>
283 /// Synchronously retreive an asset. If the asset isn't in the cache, a request will be made to the persistent store to 283 /// Synchronously retreive an asset. If the asset isn't in the cache, a request will be made to the persistent store to
284 /// load it into the cache. 284 /// load it into the cache.
285 /// 285 ///
286 /// XXX We'll keep polling the cache until we get the asset or we exceed 286 /// XXX We'll keep polling the cache until we get the asset or we exceed
287 /// the allowed number of polls. This isn't a very good way of doing things since a single thread 287 /// the allowed number of polls. This isn't a very good way of doing things since a single thread
288 /// is processing inbound packets, so if the asset server is slow, we could block this for up to 288 /// is processing inbound packets, so if the asset server is slow, we could block this for up to
@@ -431,11 +431,11 @@ namespace OpenSim.Framework.Communications.Cache
431 //making a copy of the list is not ideal 431 //making a copy of the list is not ideal
432 //but the old method of locking around this whole block of code was causing a multi-thread lock 432 //but the old method of locking around this whole block of code was causing a multi-thread lock
433 //between this and the TextureDownloadModule 433 //between this and the TextureDownloadModule
434 //while the localAsset thread running this and trying to send a texture to the callback in the 434 //while the localAsset thread running this and trying to send a texture to the callback in the
435 //texturedownloadmodule , and hitting a lock in there. While the texturedownload thread (which was holding 435 //texturedownloadmodule , and hitting a lock in there. While the texturedownload thread (which was holding
436 // the lock in the texturedownload module) was trying to 436 // the lock in the texturedownload module) was trying to
437 //request a new asset and hitting a lock in here on the RequestLists. 437 //request a new asset and hitting a lock in here on the RequestLists.
438 438
439 List<NewAssetRequest> theseRequests = new List<NewAssetRequest>(reqList.Requests); 439 List<NewAssetRequest> theseRequests = new List<NewAssetRequest>(reqList.Requests);
440 reqList.Requests.Clear(); 440 reqList.Requests.Clear();
441 441
@@ -460,7 +460,7 @@ namespace OpenSim.Framework.Communications.Cache
460 { 460 {
461 // m_log.WarnFormat("[ASSET CACHE]: AssetNotFound for {0}", assetID); 461 // m_log.WarnFormat("[ASSET CACHE]: AssetNotFound for {0}", assetID);
462 462
463 // Notify requesters for this asset 463 // Notify requesters for this asset
464 AssetRequestsList reqList = null; 464 AssetRequestsList reqList = null;
465 lock (RequestLists) 465 lock (RequestLists)
466 { 466 {
@@ -552,7 +552,7 @@ namespace OpenSim.Framework.Communications.Cache
552 } 552 }
553 return; 553 return;
554 } 554 }
555 //it is in our cache 555 //it is in our cache
556 AssetInfo asset = Assets[requestID]; 556 AssetInfo asset = Assets[requestID];
557 557
558 // add to the AssetRequests list 558 // add to the AssetRequests list
@@ -679,14 +679,14 @@ namespace OpenSim.Framework.Communications.Cache
679 public byte AssetRequestSource = 2; 679 public byte AssetRequestSource = 2;
680 public byte[] Params = null; 680 public byte[] Params = null;
681 //public bool AssetInCache; 681 //public bool AssetInCache;
682 //public int TimeRequested; 682 //public int TimeRequested;
683 public int DiscardLevel = -1; 683 public int DiscardLevel = -1;
684 684
685 public AssetRequest() 685 public AssetRequest()
686 { 686 {
687 } 687 }
688 } 688 }
689 689
690 public class AssetInfo : AssetBase 690 public class AssetInfo : AssetBase
691 { 691 {
692 public AssetInfo() 692 public AssetInfo()
diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
index 1a7f872..b16512c 100644
--- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs
@@ -36,7 +36,7 @@ namespace OpenSim.Framework.Communications.Cache
36{ 36{
37 public abstract class AssetServerBase : IAssetServer 37 public abstract class AssetServerBase : IAssetServer
38 { 38 {
39 private static readonly ILog m_log 39 private static readonly ILog m_log
40 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 40 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
41 41
42 protected IAssetReceiver m_receiver; 42 protected IAssetReceiver m_receiver;
@@ -47,12 +47,12 @@ namespace OpenSim.Framework.Communications.Cache
47 47
48 // Temporarily hardcoded - should be a plugin 48 // Temporarily hardcoded - should be a plugin
49 protected IAssetLoader assetLoader = new AssetLoaderFileSystem(); 49 protected IAssetLoader assetLoader = new AssetLoaderFileSystem();
50 50
51 protected abstract void StoreAsset(AssetBase asset); 51 protected abstract void StoreAsset(AssetBase asset);
52 protected abstract void CommitAssets(); 52 protected abstract void CommitAssets();
53 53
54 /// <summary> 54 /// <summary>
55 /// This method must be implemented by a subclass to retrieve the asset named in the 55 /// This method must be implemented by a subclass to retrieve the asset named in the
56 /// AssetRequest. If the asset is not found, null should be returned. 56 /// AssetRequest. If the asset is not found, null should be returned.
57 /// </summary> 57 /// </summary>
58 /// <param name="req"></param> 58 /// <param name="req"></param>
@@ -60,7 +60,7 @@ namespace OpenSim.Framework.Communications.Cache
60 protected abstract AssetBase GetAsset(AssetRequest req); 60 protected abstract AssetBase GetAsset(AssetRequest req);
61 61
62 /// <summary> 62 /// <summary>
63 /// Process an asset request. This method will call GetAsset(AssetRequest req) 63 /// Process an asset request. This method will call GetAsset(AssetRequest req)
64 /// on the subclass. 64 /// on the subclass.
65 /// </summary> 65 /// </summary>
66 /// <param name="req"></param> 66 /// <param name="req"></param>
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index 218fd5a..f40f078 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -36,55 +36,55 @@ using log4net;
36namespace OpenSim.Framework.Communications.Cache 36namespace OpenSim.Framework.Communications.Cache
37{ 37{
38 internal delegate void AddItemDelegate(InventoryItemBase itemInfo); 38 internal delegate void AddItemDelegate(InventoryItemBase itemInfo);
39 internal delegate void UpdateItemDelegate(InventoryItemBase itemInfo); 39 internal delegate void UpdateItemDelegate(InventoryItemBase itemInfo);
40 internal delegate void DeleteItemDelegate(LLUUID itemID); 40 internal delegate void DeleteItemDelegate(LLUUID itemID);
41 41
42 internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID); 42 internal delegate void CreateFolderDelegate(string folderName, LLUUID folderID, ushort folderType, LLUUID parentID);
43 internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID); 43 internal delegate void MoveFolderDelegate(LLUUID folderID, LLUUID parentID);
44 internal delegate void PurgeFolderDelegate(LLUUID folderID); 44 internal delegate void PurgeFolderDelegate(LLUUID folderID);
45 internal delegate void UpdateFolderDelegate(string name, LLUUID folderID, ushort type, LLUUID parentID); 45 internal delegate void UpdateFolderDelegate(string name, LLUUID folderID, ushort type, LLUUID parentID);
46 46
47 internal delegate void SendInventoryDescendentsDelegate( 47 internal delegate void SendInventoryDescendentsDelegate(
48 IClientAPI client, LLUUID folderID, bool fetchFolders, bool fetchItems); 48 IClientAPI client, LLUUID folderID, bool fetchFolders, bool fetchItems);
49 49
50 /// <summary> 50 /// <summary>
51 /// Stores user profile and inventory data received from backend services for a particular user. 51 /// Stores user profile and inventory data received from backend services for a particular user.
52 /// </summary> 52 /// </summary>
53 public class CachedUserInfo 53 public class CachedUserInfo
54 { 54 {
55 private static readonly ILog m_log 55 private static readonly ILog m_log
56 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 56 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
57 57
58 /// <summary> 58 /// <summary>
59 /// The comms manager holds references to services (user, grid, inventory, etc.) 59 /// The comms manager holds references to services (user, grid, inventory, etc.)
60 /// </summary> 60 /// </summary>
61 private readonly CommunicationsManager m_commsManager; 61 private readonly CommunicationsManager m_commsManager;
62 62
63 public UserProfileData UserProfile { get { return m_userProfile; } } 63 public UserProfileData UserProfile { get { return m_userProfile; } }
64 private readonly UserProfileData m_userProfile; 64 private readonly UserProfileData m_userProfile;
65 65
66 /// <summary> 66 /// <summary>
67 /// Has we received the user's inventory from the inventory service? 67 /// Has we received the user's inventory from the inventory service?
68 /// </summary> 68 /// </summary>
69 private bool m_hasInventory; 69 private bool m_hasInventory;
70 70
71 /// <summary> 71 /// <summary>
72 /// Inventory requests waiting for receipt of this user's inventory from the inventory service. 72 /// Inventory requests waiting for receipt of this user's inventory from the inventory service.
73 /// </summary> 73 /// </summary>
74 private readonly IList<IInventoryRequest> m_pendingRequests = new List<IInventoryRequest>(); 74 private readonly IList<IInventoryRequest> m_pendingRequests = new List<IInventoryRequest>();
75 75
76 /// <summary> 76 /// <summary>
77 /// Has this user info object yet received its inventory information from the invetnroy service? 77 /// Has this user info object yet received its inventory information from the invetnroy service?
78 /// </summary> 78 /// </summary>
79 public bool HasInventory { get { return m_hasInventory; } } 79 public bool HasInventory { get { return m_hasInventory; } }
80 80
81 private InventoryFolderImpl m_rootFolder; 81 private InventoryFolderImpl m_rootFolder;
82 public InventoryFolderImpl RootFolder { get { return m_rootFolder; } } 82 public InventoryFolderImpl RootFolder { get { return m_rootFolder; } }
83 83
84 /// <summary> 84 /// <summary>
85 /// FIXME: This could be contained within a local variable - it doesn't need to be a field 85 /// FIXME: This could be contained within a local variable - it doesn't need to be a field
86 /// </summary> 86 /// </summary>
87 private IDictionary<LLUUID, IList<InventoryFolderImpl>> pendingCategorizationFolders 87 private IDictionary<LLUUID, IList<InventoryFolderImpl>> pendingCategorizationFolders
88 = new Dictionary<LLUUID, IList<InventoryFolderImpl>>(); 88 = new Dictionary<LLUUID, IList<InventoryFolderImpl>>();
89 89
90 /// <summary> 90 /// <summary>
@@ -97,7 +97,7 @@ namespace OpenSim.Framework.Communications.Cache
97 m_commsManager = commsManager; 97 m_commsManager = commsManager;
98 m_userProfile = userProfile; 98 m_userProfile = userProfile;
99 } 99 }
100 100
101 /// <summary> 101 /// <summary>
102 /// This allows a request to be added to be processed once we receive a user's inventory 102 /// This allows a request to be added to be processed once we receive a user's inventory
103 /// from the inventory service. If we already have the inventory, the request 103 /// from the inventory service. If we already have the inventory, the request
@@ -118,7 +118,7 @@ namespace OpenSim.Framework.Communications.Cache
118 } 118 }
119 } 119 }
120 } 120 }
121 121
122 /// <summary> 122 /// <summary>
123 /// Store a folder pending arrival of its parent 123 /// Store a folder pending arrival of its parent
124 /// </summary> 124 /// </summary>
@@ -126,7 +126,7 @@ namespace OpenSim.Framework.Communications.Cache
126 private void AddPendingFolder(InventoryFolderImpl folder) 126 private void AddPendingFolder(InventoryFolderImpl folder)
127 { 127 {
128 LLUUID parentFolderId = folder.ParentID; 128 LLUUID parentFolderId = folder.ParentID;
129 129
130 if (pendingCategorizationFolders.ContainsKey(parentFolderId)) 130 if (pendingCategorizationFolders.ContainsKey(parentFolderId))
131 { 131 {
132 pendingCategorizationFolders[parentFolderId].Add(folder); 132 pendingCategorizationFolders[parentFolderId].Add(folder);
@@ -135,11 +135,11 @@ namespace OpenSim.Framework.Communications.Cache
135 { 135 {
136 IList<InventoryFolderImpl> folders = new List<InventoryFolderImpl>(); 136 IList<InventoryFolderImpl> folders = new List<InventoryFolderImpl>();
137 folders.Add(folder); 137 folders.Add(folder);
138 138
139 pendingCategorizationFolders[parentFolderId] = folders; 139 pendingCategorizationFolders[parentFolderId] = folders;
140 } 140 }
141 } 141 }
142 142
143 /// <summary> 143 /// <summary>
144 /// Add any pending folders which were received before the given folder 144 /// Add any pending folders which were received before the given folder
145 /// </summary> 145 /// </summary>
@@ -155,18 +155,18 @@ namespace OpenSim.Framework.Communications.Cache
155// m_log.DebugFormat( 155// m_log.DebugFormat(
156// "[INVENTORY CACHE]: Resolving pending received folder {0} {1} into {2} {3}", 156// "[INVENTORY CACHE]: Resolving pending received folder {0} {1} into {2} {3}",
157// folder.name, folder.folderID, parent.name, parent.folderID); 157// folder.name, folder.folderID, parent.name, parent.folderID);
158 158
159 lock (newFolder.SubFolders) 159 lock (newFolder.SubFolders)
160 { 160 {
161 if (!newFolder.SubFolders.ContainsKey(folder.ID)) 161 if (!newFolder.SubFolders.ContainsKey(folder.ID))
162 { 162 {
163 newFolder.SubFolders.Add(folder.ID, folder); 163 newFolder.SubFolders.Add(folder.ID, folder);
164 } 164 }
165 } 165 }
166 } 166 }
167 } 167 }
168 } 168 }
169 169
170 /// <summary> 170 /// <summary>
171 /// Callback invoked when the inventory is received from an async request to the inventory service 171 /// Callback invoked when the inventory is received from an async request to the inventory service
172 /// </summary> 172 /// </summary>
@@ -177,12 +177,12 @@ namespace OpenSim.Framework.Communications.Cache
177 // FIXME: Exceptions thrown upwards never appear on the console. Could fix further up if these 177 // FIXME: Exceptions thrown upwards never appear on the console. Could fix further up if these
178 // are simply being swallowed 178 // are simply being swallowed
179 try 179 try
180 { 180 {
181 foreach (InventoryFolderImpl folder in folders) 181 foreach (InventoryFolderImpl folder in folders)
182 { 182 {
183 FolderReceive(folder); 183 FolderReceive(folder);
184 } 184 }
185 185
186 foreach (InventoryItemBase item in items) 186 foreach (InventoryItemBase item in items)
187 { 187 {
188 ItemReceive(item); 188 ItemReceive(item);
@@ -191,15 +191,15 @@ namespace OpenSim.Framework.Communications.Cache
191 catch (Exception e) 191 catch (Exception e)
192 { 192 {
193 m_log.ErrorFormat("[INVENTORY CACHE]: Error processing inventory received from inventory service, {0}", e); 193 m_log.ErrorFormat("[INVENTORY CACHE]: Error processing inventory received from inventory service, {0}", e);
194 } 194 }
195 195
196 // Deal with pending requests 196 // Deal with pending requests
197 lock (m_pendingRequests) 197 lock (m_pendingRequests)
198 { 198 {
199 // We're going to change inventory status within the lock to avoid a race condition 199 // We're going to change inventory status within the lock to avoid a race condition
200 // where requests are processed after the AddRequest() method has been called. 200 // where requests are processed after the AddRequest() method has been called.
201 m_hasInventory = true; 201 m_hasInventory = true;
202 202
203 foreach (IInventoryRequest request in m_pendingRequests) 203 foreach (IInventoryRequest request in m_pendingRequests)
204 { 204 {
205 request.Execute(); 205 request.Execute();
@@ -215,7 +215,7 @@ namespace OpenSim.Framework.Communications.Cache
215 private void FolderReceive(InventoryFolderImpl newFolder) 215 private void FolderReceive(InventoryFolderImpl newFolder)
216 { 216 {
217// m_log.DebugFormat( 217// m_log.DebugFormat(
218// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}", 218// "[INVENTORY CACHE]: Received folder {0} {1} for user {2}",
219// folderInfo.Name, folderInfo.ID, userID); 219// folderInfo.Name, folderInfo.ID, userID);
220 220
221 if (RootFolder == null) 221 if (RootFolder == null)
@@ -232,7 +232,7 @@ namespace OpenSim.Framework.Communications.Cache
232 else 232 else
233 { 233 {
234 InventoryFolderImpl parentFolder = RootFolder.FindFolder(newFolder.ParentID); 234 InventoryFolderImpl parentFolder = RootFolder.FindFolder(newFolder.ParentID);
235 235
236 if (parentFolder != null) 236 if (parentFolder != null)
237 { 237 {
238 lock (parentFolder.SubFolders) 238 lock (parentFolder.SubFolders)
@@ -252,44 +252,44 @@ namespace OpenSim.Framework.Communications.Cache
252 else 252 else
253 { 253 {
254 AddPendingFolder(newFolder); 254 AddPendingFolder(newFolder);
255 } 255 }
256 } 256 }
257 257
258 ResolvePendingFolders(newFolder); 258 ResolvePendingFolders(newFolder);
259 } 259 }
260 260
261 /// <summary> 261 /// <summary>
262 /// Callback invoked when an item is received from an async request to the inventory service. 262 /// Callback invoked when an item is received from an async request to the inventory service.
263 /// 263 ///
264 /// We're assuming here that items are always received after all the folders 264 /// We're assuming here that items are always received after all the folders
265 /// received. 265 /// received.
266 /// </summary> 266 /// </summary>
267 /// <param name="folderInfo"></param> 267 /// <param name="folderInfo"></param>
268 private void ItemReceive(InventoryItemBase itemInfo) 268 private void ItemReceive(InventoryItemBase itemInfo)
269 { 269 {
270// m_log.DebugFormat( 270// m_log.DebugFormat(
271// "[INVENTORY CACHE]: Received item {0} {1} for user {2}", 271// "[INVENTORY CACHE]: Received item {0} {1} for user {2}",
272// itemInfo.Name, itemInfo.ID, userID); 272// itemInfo.Name, itemInfo.ID, userID);
273 InventoryFolderImpl folder = RootFolder.FindFolder(itemInfo.Folder); 273 InventoryFolderImpl folder = RootFolder.FindFolder(itemInfo.Folder);
274 274
275 if (null == folder) 275 if (null == folder)
276 { 276 {
277 m_log.WarnFormat( 277 m_log.WarnFormat(
278 "Received item {0} {1} but its folder {2} does not exist", 278 "Received item {0} {1} but its folder {2} does not exist",
279 itemInfo.Name, itemInfo.ID, itemInfo.Folder); 279 itemInfo.Name, itemInfo.ID, itemInfo.Folder);
280 280
281 return; 281 return;
282 } 282 }
283 283
284 lock (folder.Items) 284 lock (folder.Items)
285 { 285 {
286 folder.Items[itemInfo.ID] = itemInfo; 286 folder.Items[itemInfo.ID] = itemInfo;
287 } 287 }
288 } 288 }
289 289
290 /// <summary> 290 /// <summary>
291 /// Create a folder in this agent's inventory. 291 /// Create a folder in this agent's inventory.
292 /// 292 ///
293 /// If the inventory service has not yet delievered the inventory 293 /// If the inventory service has not yet delievered the inventory
294 /// for this user then the request will be queued. 294 /// for this user then the request will be queued.
295 /// </summary> 295 /// </summary>
@@ -299,20 +299,20 @@ namespace OpenSim.Framework.Communications.Cache
299 { 299 {
300// m_log.DebugFormat( 300// m_log.DebugFormat(
301// "[AGENT INVENTORY]: Creating inventory folder {0} {1} for {2} {3}", folderID, folderName, remoteClient.Name, remoteClient.AgentId); 301// "[AGENT INVENTORY]: Creating inventory folder {0} {1} for {2} {3}", folderID, folderName, remoteClient.Name, remoteClient.AgentId);
302 302
303 if (HasInventory) 303 if (HasInventory)
304 { 304 {
305 InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID); 305 InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID);
306 306
307 if (null == parentFolder) 307 if (null == parentFolder)
308 { 308 {
309 m_log.WarnFormat( 309 m_log.WarnFormat(
310 "[AGENT INVENTORY]: Tried to create folder {0} {1} but the parent {2} does not exist", 310 "[AGENT INVENTORY]: Tried to create folder {0} {1} but the parent {2} does not exist",
311 folderName, folderID, parentID); 311 folderName, folderID, parentID);
312 312
313 return false; 313 return false;
314 } 314 }
315 315
316 InventoryFolderImpl createdFolder = parentFolder.CreateChildFolder(folderID, folderName, folderType); 316 InventoryFolderImpl createdFolder = parentFolder.CreateChildFolder(folderID, folderName, folderType);
317 317
318 if (createdFolder != null) 318 if (createdFolder != null)
@@ -324,17 +324,17 @@ namespace OpenSim.Framework.Communications.Cache
324 createdBaseFolder.ParentID = createdFolder.ParentID; 324 createdBaseFolder.ParentID = createdFolder.ParentID;
325 createdBaseFolder.Type = createdFolder.Type; 325 createdBaseFolder.Type = createdFolder.Type;
326 createdBaseFolder.Version = createdFolder.Version; 326 createdBaseFolder.Version = createdFolder.Version;
327 327
328 m_commsManager.InventoryService.AddFolder(createdBaseFolder); 328 m_commsManager.InventoryService.AddFolder(createdBaseFolder);
329 329
330 return true; 330 return true;
331 } 331 }
332 else 332 else
333 { 333 {
334 m_log.WarnFormat( 334 m_log.WarnFormat(
335 "[AGENT INVENTORY]: Tried to create folder {0} {1} but the folder already exists", 335 "[AGENT INVENTORY]: Tried to create folder {0} {1} but the folder already exists",
336 folderName, folderID); 336 folderName, folderID);
337 337
338 return false; 338 return false;
339 } 339 }
340 } 340 }
@@ -344,22 +344,22 @@ namespace OpenSim.Framework.Communications.Cache
344 new InventoryRequest( 344 new InventoryRequest(
345 Delegate.CreateDelegate(typeof(CreateFolderDelegate), this, "CreateFolder"), 345 Delegate.CreateDelegate(typeof(CreateFolderDelegate), this, "CreateFolder"),
346 new object[] { folderName, folderID, folderType, parentID })); 346 new object[] { folderName, folderID, folderType, parentID }));
347 347
348 return true; 348 return true;
349 } 349 }
350 } 350 }
351 351
352 /// <summary> 352 /// <summary>
353 /// Handle a client request to update the inventory folder 353 /// Handle a client request to update the inventory folder
354 /// 354 ///
355 /// If the inventory service has not yet delievered the inventory 355 /// If the inventory service has not yet delievered the inventory
356 /// for this user then the request will be queued. 356 /// for this user then the request will be queued.
357 /// 357 ///
358 /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE 358 /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE
359 /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, 359 /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing,
360 /// and needs to be changed. 360 /// and needs to be changed.
361 /// </summary> 361 /// </summary>
362 /// 362 ///
363 /// <param name="folderID"></param> 363 /// <param name="folderID"></param>
364 /// <param name="type"></param> 364 /// <param name="type"></param>
365 /// <param name="name"></param> 365 /// <param name="name"></param>
@@ -367,7 +367,7 @@ namespace OpenSim.Framework.Communications.Cache
367 public bool UpdateFolder(string name, LLUUID folderID, ushort type, LLUUID parentID) 367 public bool UpdateFolder(string name, LLUUID folderID, ushort type, LLUUID parentID)
368 { 368 {
369// m_log.DebugFormat( 369// m_log.DebugFormat(
370// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId); 370// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId);
371 371
372 if (HasInventory) 372 if (HasInventory)
373 { 373 {
@@ -378,7 +378,7 @@ namespace OpenSim.Framework.Communications.Cache
378 baseFolder.ParentID = parentID; 378 baseFolder.ParentID = parentID;
379 baseFolder.Type = (short) type; 379 baseFolder.Type = (short) type;
380 baseFolder.Version = RootFolder.Version; 380 baseFolder.Version = RootFolder.Version;
381 381
382 m_commsManager.InventoryService.AddFolder(baseFolder); 382 m_commsManager.InventoryService.AddFolder(baseFolder);
383 } 383 }
384 else 384 else
@@ -387,18 +387,18 @@ namespace OpenSim.Framework.Communications.Cache
387 new InventoryRequest( 387 new InventoryRequest(
388 Delegate.CreateDelegate(typeof(UpdateFolderDelegate), this, "UpdateFolder"), 388 Delegate.CreateDelegate(typeof(UpdateFolderDelegate), this, "UpdateFolder"),
389 new object[] { name, folderID, type, parentID })); 389 new object[] { name, folderID, type, parentID }));
390 } 390 }
391 391
392 return true; 392 return true;
393 } 393 }
394 394
395 /// <summary> 395 /// <summary>
396 /// Handle an inventory folder move request from the client. 396 /// Handle an inventory folder move request from the client.
397 /// 397 ///
398 /// If the inventory service has not yet delievered the inventory 398 /// If the inventory service has not yet delievered the inventory
399 /// for this user then the request will be queued. 399 /// for this user then the request will be queued.
400 /// </summary> 400 /// </summary>
401 /// 401 ///
402 /// <param name="folderID"></param> 402 /// <param name="folderID"></param>
403 /// <param name="parentID"></param> 403 /// <param name="parentID"></param>
404 public bool MoveFolder(LLUUID folderID, LLUUID parentID) 404 public bool MoveFolder(LLUUID folderID, LLUUID parentID)
@@ -413,9 +413,9 @@ namespace OpenSim.Framework.Communications.Cache
413 baseFolder.Owner = m_userProfile.ID; 413 baseFolder.Owner = m_userProfile.ID;
414 baseFolder.ID = folderID; 414 baseFolder.ID = folderID;
415 baseFolder.ParentID = parentID; 415 baseFolder.ParentID = parentID;
416 416
417 m_commsManager.InventoryService.MoveFolder(baseFolder); 417 m_commsManager.InventoryService.MoveFolder(baseFolder);
418 418
419 return true; 419 return true;
420 } 420 }
421 else 421 else
@@ -424,30 +424,30 @@ namespace OpenSim.Framework.Communications.Cache
424 new InventoryRequest( 424 new InventoryRequest(
425 Delegate.CreateDelegate(typeof(MoveFolderDelegate), this, "MoveFolder"), 425 Delegate.CreateDelegate(typeof(MoveFolderDelegate), this, "MoveFolder"),
426 new object[] { folderID, parentID })); 426 new object[] { folderID, parentID }));
427 427
428 return true; 428 return true;
429 } 429 }
430 } 430 }
431 431
432 /// <summary> 432 /// <summary>
433 /// This method will delete all the items and folders in the given folder. 433 /// This method will delete all the items and folders in the given folder.
434 /// 434 ///
435 /// If the inventory service has not yet delievered the inventory 435 /// If the inventory service has not yet delievered the inventory
436 /// for this user then the request will be queued. 436 /// for this user then the request will be queued.
437 /// </summary> 437 /// </summary>
438 /// 438 ///
439 /// <param name="folderID"></param> 439 /// <param name="folderID"></param>
440 public bool PurgeFolder(LLUUID folderID) 440 public bool PurgeFolder(LLUUID folderID)
441 { 441 {
442// m_log.InfoFormat("[AGENT INVENTORY]: Purging folder {0} for {1} uuid {2}", 442// m_log.InfoFormat("[AGENT INVENTORY]: Purging folder {0} for {1} uuid {2}",
443// folderID, remoteClient.Name, remoteClient.AgentId); 443// folderID, remoteClient.Name, remoteClient.AgentId);
444 444
445 if (HasInventory) 445 if (HasInventory)
446 { 446 {
447 InventoryFolderImpl purgedFolder = RootFolder.FindFolder(folderID); 447 InventoryFolderImpl purgedFolder = RootFolder.FindFolder(folderID);
448 448
449 if (purgedFolder != null) 449 if (purgedFolder != null)
450 { 450 {
451 // XXX Nasty - have to create a new object to hold details we already have 451 // XXX Nasty - have to create a new object to hold details we already have
452 InventoryFolderBase purgedBaseFolder = new InventoryFolderBase(); 452 InventoryFolderBase purgedBaseFolder = new InventoryFolderBase();
453 purgedBaseFolder.Owner = purgedFolder.Owner; 453 purgedBaseFolder.Owner = purgedFolder.Owner;
@@ -455,12 +455,12 @@ namespace OpenSim.Framework.Communications.Cache
455 purgedBaseFolder.Name = purgedFolder.Name; 455 purgedBaseFolder.Name = purgedFolder.Name;
456 purgedBaseFolder.ParentID = purgedFolder.ParentID; 456 purgedBaseFolder.ParentID = purgedFolder.ParentID;
457 purgedBaseFolder.Type = purgedFolder.Type; 457 purgedBaseFolder.Type = purgedFolder.Type;
458 purgedBaseFolder.Version = purgedFolder.Version; 458 purgedBaseFolder.Version = purgedFolder.Version;
459 459
460 m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder); 460 m_commsManager.InventoryService.PurgeFolder(purgedBaseFolder);
461 461
462 purgedFolder.Purge(); 462 purgedFolder.Purge();
463 463
464 return true; 464 return true;
465 } 465 }
466 } 466 }
@@ -470,12 +470,12 @@ namespace OpenSim.Framework.Communications.Cache
470 new InventoryRequest( 470 new InventoryRequest(
471 Delegate.CreateDelegate(typeof(PurgeFolderDelegate), this, "PurgeFolder"), 471 Delegate.CreateDelegate(typeof(PurgeFolderDelegate), this, "PurgeFolder"),
472 new object[] { folderID })); 472 new object[] { folderID }));
473 473
474 return true; 474 return true;
475 } 475 }
476 476
477 return false; 477 return false;
478 } 478 }
479 479
480 /// <summary> 480 /// <summary>
481 /// Add an item to the user's inventory 481 /// Add an item to the user's inventory
@@ -494,7 +494,7 @@ namespace OpenSim.Framework.Communications.Cache
494 new InventoryRequest( 494 new InventoryRequest(
495 Delegate.CreateDelegate(typeof(AddItemDelegate), this, "AddItem"), 495 Delegate.CreateDelegate(typeof(AddItemDelegate), this, "AddItem"),
496 new object[] { item })); 496 new object[] { item }));
497 } 497 }
498 } 498 }
499 499
500 /// <summary> 500 /// <summary>
@@ -514,18 +514,18 @@ namespace OpenSim.Framework.Communications.Cache
514 new InventoryRequest( 514 new InventoryRequest(
515 Delegate.CreateDelegate(typeof(UpdateItemDelegate), this, "UpdateItem"), 515 Delegate.CreateDelegate(typeof(UpdateItemDelegate), this, "UpdateItem"),
516 new object[] { item })); 516 new object[] { item }));
517 } 517 }
518 } 518 }
519 519
520 /// <summary> 520 /// <summary>
521 /// Delete an item from the user's inventory 521 /// Delete an item from the user's inventory
522 /// 522 ///
523 /// If the inventory service has not yet delievered the inventory 523 /// If the inventory service has not yet delievered the inventory
524 /// for this user then the request will be queued. 524 /// for this user then the request will be queued.
525 /// </summary> 525 /// </summary>
526 /// <param name="itemID"></param> 526 /// <param name="itemID"></param>
527 /// <returns> 527 /// <returns>
528 /// true on a successful delete or a if the request is queued. 528 /// true on a successful delete or a if the request is queued.
529 /// Returns false on an immediate failure 529 /// Returns false on an immediate failure
530 /// </returns> 530 /// </returns>
531 public bool DeleteItem(LLUUID itemID) 531 public bool DeleteItem(LLUUID itemID)
@@ -535,14 +535,14 @@ namespace OpenSim.Framework.Communications.Cache
535 // XXX For historical reasons (grid comms), we need to retrieve the whole item in order to delete, even though 535 // XXX For historical reasons (grid comms), we need to retrieve the whole item in order to delete, even though
536 // really only the item id is required. 536 // really only the item id is required.
537 InventoryItemBase item = RootFolder.FindItem(itemID); 537 InventoryItemBase item = RootFolder.FindItem(itemID);
538 538
539 if (null == item) 539 if (null == item)
540 { 540 {
541 m_log.WarnFormat("[AGENT INVENTORY]: Tried to delete item {0} which does not exist", itemID); 541 m_log.WarnFormat("[AGENT INVENTORY]: Tried to delete item {0} which does not exist", itemID);
542 542
543 return false; 543 return false;
544 } 544 }
545 545
546 if (RootFolder.DeleteItem(item.ID)) 546 if (RootFolder.DeleteItem(item.ID))
547 { 547 {
548 return m_commsManager.InventoryService.DeleteItem(item); 548 return m_commsManager.InventoryService.DeleteItem(item);
@@ -554,13 +554,13 @@ namespace OpenSim.Framework.Communications.Cache
554 new InventoryRequest( 554 new InventoryRequest(
555 Delegate.CreateDelegate(typeof(DeleteItemDelegate), this, "DeleteItem"), 555 Delegate.CreateDelegate(typeof(DeleteItemDelegate), this, "DeleteItem"),
556 new object[] { itemID })); 556 new object[] { itemID }));
557 557
558 return true; 558 return true;
559 } 559 }
560 560
561 return false; 561 return false;
562 } 562 }
563 563
564 /// <summary> 564 /// <summary>
565 /// Send details of the inventory items and/or folders in a given folder to the client. 565 /// Send details of the inventory items and/or folders in a given folder to the client.
566 /// </summary> 566 /// </summary>
@@ -574,13 +574,13 @@ namespace OpenSim.Framework.Communications.Cache
574 if (HasInventory) 574 if (HasInventory)
575 { 575 {
576 InventoryFolderImpl folder; 576 InventoryFolderImpl folder;
577 577
578 if ((folder = RootFolder.FindFolder(folderID)) != null) 578 if ((folder = RootFolder.FindFolder(folderID)) != null)
579 { 579 {
580// m_log.DebugFormat( 580// m_log.DebugFormat(
581// "[AGENT INVENTORY]: Found folder {0} for client {1}", 581// "[AGENT INVENTORY]: Found folder {0} for client {1}",
582// folderID, remoteClient.AgentId); 582// folderID, remoteClient.AgentId);
583 583
584 client.SendInventoryFolderDetails( 584 client.SendInventoryFolderDetails(
585 client.AgentId, folderID, folder.RequestListOfItems(), 585 client.AgentId, folderID, folder.RequestListOfItems(),
586 folder.RequestListOfFolders(), fetchFolders, fetchItems); 586 folder.RequestListOfFolders(), fetchFolders, fetchItems);
@@ -592,7 +592,7 @@ namespace OpenSim.Framework.Communications.Cache
592 m_log.WarnFormat( 592 m_log.WarnFormat(
593 "[AGENT INVENTORY]: Could not find folder {0} requested by user {1} {2}", 593 "[AGENT INVENTORY]: Could not find folder {0} requested by user {1} {2}",
594 folderID, client.Name, client.AgentId); 594 folderID, client.Name, client.AgentId);
595 595
596 return false; 596 return false;
597 } 597 }
598 } 598 }
@@ -604,13 +604,13 @@ namespace OpenSim.Framework.Communications.Cache
604 new object[] { client, folderID, fetchFolders, fetchItems })); 604 new object[] { client, folderID, fetchFolders, fetchItems }));
605 605
606 return true; 606 return true;
607 } 607 }
608 } 608 }
609 } 609 }
610 610
611 /// <summary> 611 /// <summary>
612 /// Should be implemented by callers which require a callback when the user's inventory is received 612 /// Should be implemented by callers which require a callback when the user's inventory is received
613 /// </summary> 613 /// </summary>
614 public interface IInventoryRequest 614 public interface IInventoryRequest
615 { 615 {
616 /// <summary> 616 /// <summary>
@@ -618,7 +618,7 @@ namespace OpenSim.Framework.Communications.Cache
618 /// </summary> 618 /// </summary>
619 void Execute(); 619 void Execute();
620 } 620 }
621 621
622 /// <summary> 622 /// <summary>
623 /// Generic inventory request 623 /// Generic inventory request
624 /// </summary> 624 /// </summary>
@@ -626,16 +626,16 @@ namespace OpenSim.Framework.Communications.Cache
626 { 626 {
627 private Delegate m_delegate; 627 private Delegate m_delegate;
628 private Object[] m_args; 628 private Object[] m_args;
629 629
630 internal InventoryRequest(Delegate delegat, Object[] args) 630 internal InventoryRequest(Delegate delegat, Object[] args)
631 { 631 {
632 m_delegate = delegat; 632 m_delegate = delegat;
633 m_args = args; 633 m_args = args;
634 } 634 }
635 635
636 public void Execute() 636 public void Execute()
637 { 637 {
638 m_delegate.DynamicInvoke(m_args); 638 m_delegate.DynamicInvoke(m_args);
639 } 639 }
640 } 640 }
641} 641}
diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
index d5b7fea..4b4ef17 100644
--- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
+++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs
@@ -95,9 +95,9 @@ namespace OpenSim.Framework.Communications.Cache
95 // XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); 95 // XmlSerializer xs = new XmlSerializer(typeof(AssetBase));
96 // xs.Serialize(s, asset); 96 // xs.Serialize(s, asset);
97 // RestClient rc = new RestClient(_assetServerUrl); 97 // RestClient rc = new RestClient(_assetServerUrl);
98 98
99 string assetUrl = _assetServerUrl + "/assets/"; 99 string assetUrl = _assetServerUrl + "/assets/";
100 100
101 //rc.AddResourcePath("assets"); 101 //rc.AddResourcePath("assets");
102 102
103 // rc.RequestMethod = "POST"; 103 // rc.RequestMethod = "POST";
@@ -105,7 +105,7 @@ namespace OpenSim.Framework.Communications.Cache
105 //m_log.InfoFormat("[ASSET]: Stored {0}", rc); 105 //m_log.InfoFormat("[ASSET]: Stored {0}", rc);
106 106
107 m_log.InfoFormat("[GRID ASSET CLIENT]: Sending store request for asset {0}", asset.FullID); 107 m_log.InfoFormat("[GRID ASSET CLIENT]: Sending store request for asset {0}", asset.FullID);
108 108
109 RestObjectPoster.BeginPostObject<AssetBase>(assetUrl, asset); 109 RestObjectPoster.BeginPostObject<AssetBase>(assetUrl, asset);
110 } 110 }
111 catch (Exception e) 111 catch (Exception e)
diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
index c8cec69..0fbc427 100644
--- a/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
+++ b/OpenSim/Framework/Communications/Cache/InventoryFolderImpl.cs
@@ -36,7 +36,7 @@ namespace OpenSim.Framework.Communications.Cache
36 public class InventoryFolderImpl : InventoryFolderBase 36 public class InventoryFolderImpl : InventoryFolderBase
37 { 37 {
38 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 38 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
39 39
40 // Fields 40 // Fields
41 public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>(); 41 public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>();
42 public Dictionary<LLUUID, InventoryFolderImpl> SubFolders = new Dictionary<LLUUID, InventoryFolderImpl>(); 42 public Dictionary<LLUUID, InventoryFolderImpl> SubFolders = new Dictionary<LLUUID, InventoryFolderImpl>();
@@ -82,14 +82,14 @@ namespace OpenSim.Framework.Communications.Cache
82 subFold.ParentID = this.ID; 82 subFold.ParentID = this.ID;
83 subFold.Owner = Owner; 83 subFold.Owner = Owner;
84 SubFolders.Add(subFold.ID, subFold); 84 SubFolders.Add(subFold.ID, subFold);
85 85
86 return subFold; 86 return subFold;
87 } 87 }
88 } 88 }
89 89
90 return null; 90 return null;
91 } 91 }
92 92
93 /// <summary> 93 /// <summary>
94 /// Delete all the folders and items in this folder. 94 /// Delete all the folders and items in this folder.
95 /// </summary> 95 /// </summary>
@@ -97,9 +97,9 @@ namespace OpenSim.Framework.Communications.Cache
97 { 97 {
98 foreach (InventoryFolderImpl folder in SubFolders.Values) 98 foreach (InventoryFolderImpl folder in SubFolders.Values)
99 { 99 {
100 folder.Purge(); 100 folder.Purge();
101 } 101 }
102 102
103 SubFolders.Clear(); 103 SubFolders.Clear();
104 Items.Clear(); 104 Items.Clear();
105 } 105 }
@@ -118,20 +118,20 @@ namespace OpenSim.Framework.Communications.Cache
118 return Items[itemID]; 118 return Items[itemID];
119 } 119 }
120 } 120 }
121 121
122 lock (SubFolders) 122 lock (SubFolders)
123 { 123 {
124 foreach (InventoryFolderImpl folder in SubFolders.Values) 124 foreach (InventoryFolderImpl folder in SubFolders.Values)
125 { 125 {
126 InventoryItemBase item = folder.FindItem(itemID); 126 InventoryItemBase item = folder.FindItem(itemID);
127 127
128 if (item != null) 128 if (item != null)
129 { 129 {
130 return item; 130 return item;
131 } 131 }
132 } 132 }
133 } 133 }
134 134
135 return null; 135 return null;
136 } 136 }
137 137
@@ -143,7 +143,7 @@ namespace OpenSim.Framework.Communications.Cache
143 public bool DeleteItem(LLUUID itemID) 143 public bool DeleteItem(LLUUID itemID)
144 { 144 {
145 bool found = false; 145 bool found = false;
146 146
147 lock (Items) 147 lock (Items)
148 { 148 {
149 if (Items.ContainsKey(itemID)) 149 if (Items.ContainsKey(itemID))
@@ -152,20 +152,20 @@ namespace OpenSim.Framework.Communications.Cache
152 return true; 152 return true;
153 } 153 }
154 } 154 }
155 155
156 lock (SubFolders) 156 lock (SubFolders)
157 { 157 {
158 foreach (InventoryFolderImpl folder in SubFolders.Values) 158 foreach (InventoryFolderImpl folder in SubFolders.Values)
159 { 159 {
160 found = folder.DeleteItem(itemID); 160 found = folder.DeleteItem(itemID);
161 161
162 if (found == true) 162 if (found == true)
163 { 163 {
164 break; 164 break;
165 } 165 }
166 } 166 }
167 } 167 }
168 168
169 return found; 169 return found;
170 } 170 }
171 171
@@ -175,25 +175,25 @@ namespace OpenSim.Framework.Communications.Cache
175 /// </summary> 175 /// </summary>
176 /// <returns>The requested folder if it exists, null if it does not.</returns> 176 /// <returns>The requested folder if it exists, null if it does not.</returns>
177 public InventoryFolderImpl FindFolder(LLUUID folderID) 177 public InventoryFolderImpl FindFolder(LLUUID folderID)
178 { 178 {
179 if (folderID == ID) 179 if (folderID == ID)
180 { 180 {
181 return this; 181 return this;
182 } 182 }
183 183
184 lock (SubFolders) 184 lock (SubFolders)
185 { 185 {
186 foreach (InventoryFolderImpl folder in SubFolders.Values) 186 foreach (InventoryFolderImpl folder in SubFolders.Values)
187 { 187 {
188 InventoryFolderImpl returnFolder = folder.FindFolder(folderID); 188 InventoryFolderImpl returnFolder = folder.FindFolder(folderID);
189 189
190 if (returnFolder != null) 190 if (returnFolder != null)
191 { 191 {
192 return returnFolder; 192 return returnFolder;
193 } 193 }
194 } 194 }
195 } 195 }
196 196
197 return null; 197 return null;
198 } 198 }
199 199
@@ -203,7 +203,7 @@ namespace OpenSim.Framework.Communications.Cache
203 public List<InventoryItemBase> RequestListOfItems() 203 public List<InventoryItemBase> RequestListOfItems()
204 { 204 {
205 List<InventoryItemBase> itemList = new List<InventoryItemBase>(); 205 List<InventoryItemBase> itemList = new List<InventoryItemBase>();
206 206
207 lock (Items) 207 lock (Items)
208 { 208 {
209 foreach (InventoryItemBase item in Items.Values) 209 foreach (InventoryItemBase item in Items.Values)
@@ -211,9 +211,9 @@ namespace OpenSim.Framework.Communications.Cache
211 itemList.Add(item); 211 itemList.Add(item);
212 } 212 }
213 } 213 }
214 214
215 //m_log.DebugFormat("[INVENTORY FOLDER IMPL]: Found {0} items", itemList.Count); 215 //m_log.DebugFormat("[INVENTORY FOLDER IMPL]: Found {0} items", itemList.Count);
216 216
217 return itemList; 217 return itemList;
218 } 218 }
219 219
@@ -221,9 +221,9 @@ namespace OpenSim.Framework.Communications.Cache
221 /// Return the list of immediate child folders in this folder. 221 /// Return the list of immediate child folders in this folder.
222 /// </summary> 222 /// </summary>
223 public List<InventoryFolderBase> RequestListOfFolders() 223 public List<InventoryFolderBase> RequestListOfFolders()
224 { 224 {
225 List<InventoryFolderBase> folderList = new List<InventoryFolderBase>(); 225 List<InventoryFolderBase> folderList = new List<InventoryFolderBase>();
226 226
227 lock (SubFolders) 227 lock (SubFolders)
228 { 228 {
229 foreach (InventoryFolderBase folder in SubFolders.Values) 229 foreach (InventoryFolderBase folder in SubFolders.Values)
@@ -231,7 +231,7 @@ namespace OpenSim.Framework.Communications.Cache
231 folderList.Add(folder); 231 folderList.Add(folder);
232 } 232 }
233 } 233 }
234 234
235 return folderList; 235 return folderList;
236 } 236 }
237 } 237 }
diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
index b3852c0..ca7eb13 100644
--- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
+++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
@@ -45,34 +45,34 @@ namespace OpenSim.Framework.Communications.Cache
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46 46
47 private LLUUID libOwner = new LLUUID("11111111-1111-0000-0000-000100bba000"); 47 private LLUUID libOwner = new LLUUID("11111111-1111-0000-0000-000100bba000");
48 48
49 /// <summary> 49 /// <summary>
50 /// Holds the root library folder and all its descendents. This is really only used during inventory 50 /// Holds the root library folder and all its descendents. This is really only used during inventory
51 /// setup so that we don't have to repeatedly search the tree of library folders. 51 /// setup so that we don't have to repeatedly search the tree of library folders.
52 /// </summary> 52 /// </summary>
53 protected Dictionary<LLUUID, InventoryFolderImpl> libraryFolders 53 protected Dictionary<LLUUID, InventoryFolderImpl> libraryFolders
54 = new Dictionary<LLUUID, InventoryFolderImpl>(); 54 = new Dictionary<LLUUID, InventoryFolderImpl>();
55 55
56 public LibraryRootFolder() 56 public LibraryRootFolder()
57 { 57 {
58 m_log.Info("[LIBRARY INVENTORY]: Loading library inventory"); 58 m_log.Info("[LIBRARY INVENTORY]: Loading library inventory");
59 59
60 Owner = libOwner; 60 Owner = libOwner;
61 ID = new LLUUID("00000112-000f-0000-0000-000100bba000"); 61 ID = new LLUUID("00000112-000f-0000-0000-000100bba000");
62 Name = "OpenSim Library"; 62 Name = "OpenSim Library";
63 ParentID = LLUUID.Zero; 63 ParentID = LLUUID.Zero;
64 Type = (short) 8; 64 Type = (short) 8;
65 Version = (ushort) 1; 65 Version = (ushort) 1;
66 66
67 libraryFolders.Add(ID, this); 67 libraryFolders.Add(ID, this);
68 68
69 LoadLibraries(Path.Combine(Util.inventoryDir(), "Libraries.xml")); 69 LoadLibraries(Path.Combine(Util.inventoryDir(), "Libraries.xml"));
70 70
71 // CreateLibraryItems(); 71 // CreateLibraryItems();
72 } 72 }
73 73
74 /// <summary> 74 /// <summary>
75 /// Hardcoded item creation. Please don't add any more items here - future items should be created 75 /// Hardcoded item creation. Please don't add any more items here - future items should be created
76 /// in the xml in the bin/inventory folder. 76 /// in the xml in the bin/inventory folder.
77 /// </summary> 77 /// </summary>
78 /// 78 ///
@@ -132,7 +132,7 @@ namespace OpenSim.Framework.Communications.Cache
132 item.NextPermissions = 0x7FFFFFFF; 132 item.NextPermissions = 0x7FFFFFFF;
133 return item; 133 return item;
134 } 134 }
135 135
136 /// <summary> 136 /// <summary>
137 /// Use the asset set information at path to load assets 137 /// Use the asset set information at path to load assets
138 /// </summary> 138 /// </summary>
@@ -142,49 +142,49 @@ namespace OpenSim.Framework.Communications.Cache
142 { 142 {
143 m_log.InfoFormat( 143 m_log.InfoFormat(
144 "[LIBRARY INVENTORY]: Loading libraries control file {0}", librariesControlPath); 144 "[LIBRARY INVENTORY]: Loading libraries control file {0}", librariesControlPath);
145 145
146 LoadFromFile(librariesControlPath, "Libraries control", ReadLibraryFromConfig); 146 LoadFromFile(librariesControlPath, "Libraries control", ReadLibraryFromConfig);
147 } 147 }
148 148
149 /// <summary> 149 /// <summary>
150 /// Read a library set from config 150 /// Read a library set from config
151 /// </summary> 151 /// </summary>
152 /// <param name="config"></param> 152 /// <param name="config"></param>
153 protected void ReadLibraryFromConfig(IConfig config) 153 protected void ReadLibraryFromConfig(IConfig config)
154 { 154 {
155 string foldersPath 155 string foldersPath
156 = Path.Combine( 156 = Path.Combine(
157 Util.inventoryDir(), config.GetString("foldersFile", String.Empty)); 157 Util.inventoryDir(), config.GetString("foldersFile", String.Empty));
158 158
159 LoadFromFile(foldersPath, "Library folders", ReadFolderFromConfig); 159 LoadFromFile(foldersPath, "Library folders", ReadFolderFromConfig);
160 160
161 string itemsPath 161 string itemsPath
162 = Path.Combine( 162 = Path.Combine(
163 Util.inventoryDir(), config.GetString("itemsFile", String.Empty)); 163 Util.inventoryDir(), config.GetString("itemsFile", String.Empty));
164 164
165 LoadFromFile(itemsPath, "Library items", ReadItemFromConfig); 165 LoadFromFile(itemsPath, "Library items", ReadItemFromConfig);
166 } 166 }
167 167
168 /// <summary> 168 /// <summary>
169 /// Read a library inventory folder from a loaded configuration 169 /// Read a library inventory folder from a loaded configuration
170 /// </summary> 170 /// </summary>
171 /// <param name="source"></param> 171 /// <param name="source"></param>
172 private void ReadFolderFromConfig(IConfig config) 172 private void ReadFolderFromConfig(IConfig config)
173 { 173 {
174 InventoryFolderImpl folderInfo = new InventoryFolderImpl(); 174 InventoryFolderImpl folderInfo = new InventoryFolderImpl();
175 175
176 folderInfo.ID = new LLUUID(config.GetString("folderID", ID.ToString())); 176 folderInfo.ID = new LLUUID(config.GetString("folderID", ID.ToString()));
177 folderInfo.Name = config.GetString("name", "unknown"); 177 folderInfo.Name = config.GetString("name", "unknown");
178 folderInfo.ParentID = new LLUUID(config.GetString("parentFolderID", ID.ToString())); 178 folderInfo.ParentID = new LLUUID(config.GetString("parentFolderID", ID.ToString()));
179 folderInfo.Type = (short)config.GetInt("type", 8); 179 folderInfo.Type = (short)config.GetInt("type", 8);
180 180
181 folderInfo.Owner = libOwner; 181 folderInfo.Owner = libOwner;
182 folderInfo.Version = 1; 182 folderInfo.Version = 1;
183 183
184 if (libraryFolders.ContainsKey(folderInfo.ParentID)) 184 if (libraryFolders.ContainsKey(folderInfo.ParentID))
185 { 185 {
186 InventoryFolderImpl parentFolder = libraryFolders[folderInfo.ParentID]; 186 InventoryFolderImpl parentFolder = libraryFolders[folderInfo.ParentID];
187 187
188 libraryFolders.Add(folderInfo.ID, folderInfo); 188 libraryFolders.Add(folderInfo.ID, folderInfo);
189 parentFolder.SubFolders.Add(folderInfo.ID, folderInfo); 189 parentFolder.SubFolders.Add(folderInfo.ID, folderInfo);
190 190
@@ -201,7 +201,7 @@ namespace OpenSim.Framework.Communications.Cache
201 /// <summary> 201 /// <summary>
202 /// Read a library inventory item metadata from a loaded configuration 202 /// Read a library inventory item metadata from a loaded configuration
203 /// </summary> 203 /// </summary>
204 /// <param name="source"></param> 204 /// <param name="source"></param>
205 private void ReadItemFromConfig(IConfig config) 205 private void ReadItemFromConfig(IConfig config)
206 { 206 {
207 InventoryItemBase item = new InventoryItemBase(); 207 InventoryItemBase item = new InventoryItemBase();
@@ -218,11 +218,11 @@ namespace OpenSim.Framework.Communications.Cache
218 item.NextPermissions = (uint)config.GetLong("nextPermissions", 0x7FFFFFFF); 218 item.NextPermissions = (uint)config.GetLong("nextPermissions", 0x7FFFFFFF);
219 item.EveryOnePermissions = (uint)config.GetLong("everyonePermissions", 0x7FFFFFFF); 219 item.EveryOnePermissions = (uint)config.GetLong("everyonePermissions", 0x7FFFFFFF);
220 item.BasePermissions = (uint)config.GetLong("basePermissions", 0x7FFFFFFF); 220 item.BasePermissions = (uint)config.GetLong("basePermissions", 0x7FFFFFFF);
221 221
222 if (libraryFolders.ContainsKey(item.Folder)) 222 if (libraryFolders.ContainsKey(item.Folder))
223 { 223 {
224 InventoryFolderImpl parentFolder = libraryFolders[item.Folder]; 224 InventoryFolderImpl parentFolder = libraryFolders[item.Folder];
225 225
226 parentFolder.Items.Add(item.ID, item); 226 parentFolder.Items.Add(item.ID, item);
227 } 227 }
228 else 228 else
@@ -230,11 +230,11 @@ namespace OpenSim.Framework.Communications.Cache
230 m_log.WarnFormat( 230 m_log.WarnFormat(
231 "[LIBRARY INVENTORY]: Couldn't add item {0} ({1}) since parent folder with ID {2} does not exist!", 231 "[LIBRARY INVENTORY]: Couldn't add item {0} ({1}) since parent folder with ID {2} does not exist!",
232 item.Name, item.ID, item.Folder); 232 item.Name, item.ID, item.Folder);
233 } 233 }
234 } 234 }
235 235
236 private delegate void ConfigAction(IConfig config); 236 private delegate void ConfigAction(IConfig config);
237 237
238 /// <summary> 238 /// <summary>
239 /// Load the given configuration at a path and perform an action on each Config contained within it 239 /// Load the given configuration at a path and perform an action on each Config contained within it
240 /// </summary> 240 /// </summary>
@@ -242,7 +242,7 @@ namespace OpenSim.Framework.Communications.Cache
242 /// <param name="fileDescription"></param> 242 /// <param name="fileDescription"></param>
243 /// <param name="action"></param> 243 /// <param name="action"></param>
244 private static void LoadFromFile(string path, string fileDescription, ConfigAction action) 244 private static void LoadFromFile(string path, string fileDescription, ConfigAction action)
245 { 245 {
246 if (File.Exists(path)) 246 if (File.Exists(path))
247 { 247 {
248 try 248 try
@@ -250,21 +250,21 @@ namespace OpenSim.Framework.Communications.Cache
250 XmlConfigSource source = new XmlConfigSource(path); 250 XmlConfigSource source = new XmlConfigSource(path);
251 251
252 for (int i = 0; i < source.Configs.Count; i++) 252 for (int i = 0; i < source.Configs.Count; i++)
253 { 253 {
254 action(source.Configs[i]); 254 action(source.Configs[i]);
255 } 255 }
256 } 256 }
257 catch (XmlException e) 257 catch (XmlException e)
258 { 258 {
259 m_log.ErrorFormat("[LIBRARY INVENTORY]: Error loading {0} : {1}", path, e); 259 m_log.ErrorFormat("[LIBRARY INVENTORY]: Error loading {0} : {1}", path, e);
260 } 260 }
261 } 261 }
262 else 262 else
263 { 263 {
264 m_log.ErrorFormat("[LIBRARY INVENTORY]: {0} file {1} does not exist!", fileDescription, path); 264 m_log.ErrorFormat("[LIBRARY INVENTORY]: {0} file {1} does not exist!", fileDescription, path);
265 } 265 }
266 } 266 }
267 267
268 /// <summary> 268 /// <summary>
269 /// Looks like a simple getter, but is written like this for some consistency with the other Request 269 /// Looks like a simple getter, but is written like this for some consistency with the other Request
270 /// methods in the superclass 270 /// methods in the superclass
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
index 7f911dc..fe61406 100644
--- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
+++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
@@ -33,7 +33,7 @@ using libsecondlife;
33using log4net; 33using log4net;
34 34
35namespace OpenSim.Framework.Communications.Cache 35namespace OpenSim.Framework.Communications.Cache
36{ 36{
37 /// <summary> 37 /// <summary>
38 /// Holds user profile information and retrieves it from backend services. 38 /// Holds user profile information and retrieves it from backend services.
39 /// </summary> 39 /// </summary>
@@ -45,7 +45,7 @@ namespace OpenSim.Framework.Communications.Cache
45 /// The comms manager holds references to services (user, grid, inventory, etc.) 45 /// The comms manager holds references to services (user, grid, inventory, etc.)
46 /// </summary> 46 /// </summary>
47 private readonly CommunicationsManager m_commsManager; 47 private readonly CommunicationsManager m_commsManager;
48 48
49 /// <summary> 49 /// <summary>
50 /// Each user has a cached profile. 50 /// Each user has a cached profile.
51 /// </summary> 51 /// </summary>
@@ -84,8 +84,8 @@ namespace OpenSim.Framework.Communications.Cache
84 } 84 }
85 } 85 }
86 } 86 }
87 } 87 }
88 88
89 /// <summary> 89 /// <summary>
90 /// Remove this user's profile cache. 90 /// Remove this user's profile cache.
91 /// </summary> 91 /// </summary>
@@ -103,9 +103,9 @@ namespace OpenSim.Framework.Communications.Cache
103 else 103 else
104 { 104 {
105 m_log.ErrorFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userID); 105 m_log.ErrorFormat("[USER CACHE]: Tried to remove the profile of user {0}, but this was not in the scene", userID);
106 } 106 }
107 } 107 }
108 108
109 return false; 109 return false;
110 } 110 }
111 111
@@ -118,14 +118,14 @@ namespace OpenSim.Framework.Communications.Cache
118 { 118 {
119 CachedUserInfo userInfo = GetUserDetails(userID); 119 CachedUserInfo userInfo = GetUserDetails(userID);
120 if (userInfo != null) 120 if (userInfo != null)
121 { 121 {
122 m_commsManager.InventoryService.RequestInventoryForUser(userID, userInfo.InventoryReceive); 122 m_commsManager.InventoryService.RequestInventoryForUser(userID, userInfo.InventoryReceive);
123 } 123 }
124 else 124 else
125 { 125 {
126 m_log.ErrorFormat("[USER CACHE]: RequestInventoryForUser() - user profile for user {0} not found", userID); 126 m_log.ErrorFormat("[USER CACHE]: RequestInventoryForUser() - user profile for user {0} not found", userID);
127 } 127 }
128 } 128 }
129 129
130 /// <summary> 130 /// <summary>
131 /// Get the details of the given user. A caller should try this method first if it isn't sure that 131 /// Get the details of the given user. A caller should try this method first if it isn't sure that
@@ -151,7 +151,7 @@ namespace OpenSim.Framework.Communications.Cache
151 /// <param name="parentID"></param> 151 /// <param name="parentID"></param>
152 public void HandleCreateInventoryFolder(IClientAPI remoteClient, LLUUID folderID, ushort folderType, 152 public void HandleCreateInventoryFolder(IClientAPI remoteClient, LLUUID folderID, ushort folderType,
153 string folderName, LLUUID parentID) 153 string folderName, LLUUID parentID)
154 { 154 {
155 CachedUserInfo userProfile; 155 CachedUserInfo userProfile;
156 156
157 if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile)) 157 if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile))
@@ -159,21 +159,21 @@ namespace OpenSim.Framework.Communications.Cache
159 if (!userProfile.CreateFolder(folderName, folderID, folderType, parentID)) 159 if (!userProfile.CreateFolder(folderName, folderID, folderType, parentID))
160 { 160 {
161 m_log.ErrorFormat( 161 m_log.ErrorFormat(
162 "[AGENT INVENTORY]: Failed to create folder for user {0} {1}", 162 "[AGENT INVENTORY]: Failed to create folder for user {0} {1}",
163 remoteClient.Name, remoteClient.AgentId); 163 remoteClient.Name, remoteClient.AgentId);
164 } 164 }
165 } 165 }
166 else 166 else
167 { 167 {
168 m_log.ErrorFormat( 168 m_log.ErrorFormat(
169 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 169 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
170 remoteClient.Name, remoteClient.AgentId); 170 remoteClient.Name, remoteClient.AgentId);
171 } 171 }
172 } 172 }
173 173
174 /// <summary> 174 /// <summary>
175 /// Handle a client request to update the inventory folder 175 /// Handle a client request to update the inventory folder
176 /// 176 ///
177 /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE 177 /// FIXME: We call add new inventory folder because in the data layer, we happen to use an SQL REPLACE
178 /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing, 178 /// so this will work to rename an existing folder. Needless to say, to rely on this is very confusing,
179 /// and needs to be changed. 179 /// and needs to be changed.
@@ -188,7 +188,7 @@ namespace OpenSim.Framework.Communications.Cache
188 { 188 {
189// m_log.DebugFormat( 189// m_log.DebugFormat(
190// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId); 190// "[AGENT INVENTORY]: Updating inventory folder {0} {1} for {2} {3}", folderID, name, remoteClient.Name, remoteClient.AgentId);
191 191
192 CachedUserInfo userProfile; 192 CachedUserInfo userProfile;
193 193
194 if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile)) 194 if (m_userProfiles.TryGetValue(remoteClient.AgentId, out userProfile))
@@ -196,16 +196,16 @@ namespace OpenSim.Framework.Communications.Cache
196 if (!userProfile.UpdateFolder(name, folderID, type, parentID)) 196 if (!userProfile.UpdateFolder(name, folderID, type, parentID))
197 { 197 {
198 m_log.ErrorFormat( 198 m_log.ErrorFormat(
199 "[AGENT INVENTORY]: Failed to update folder for user {0} {1}", 199 "[AGENT INVENTORY]: Failed to update folder for user {0} {1}",
200 remoteClient.Name, remoteClient.AgentId); 200 remoteClient.Name, remoteClient.AgentId);
201 } 201 }
202 } 202 }
203 else 203 else
204 { 204 {
205 m_log.ErrorFormat( 205 m_log.ErrorFormat(
206 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 206 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
207 remoteClient.Name, remoteClient.AgentId); 207 remoteClient.Name, remoteClient.AgentId);
208 } 208 }
209 } 209 }
210 210
211 /// <summary> 211 /// <summary>
@@ -223,16 +223,16 @@ namespace OpenSim.Framework.Communications.Cache
223 if (!userProfile.MoveFolder(folderID, parentID)) 223 if (!userProfile.MoveFolder(folderID, parentID))
224 { 224 {
225 m_log.ErrorFormat( 225 m_log.ErrorFormat(
226 "[AGENT INVENTORY]: Failed to move folder for user {0} {1}", 226 "[AGENT INVENTORY]: Failed to move folder for user {0} {1}",
227 remoteClient.Name, remoteClient.AgentId); 227 remoteClient.Name, remoteClient.AgentId);
228 } 228 }
229 } 229 }
230 else 230 else
231 { 231 {
232 m_log.ErrorFormat( 232 m_log.ErrorFormat(
233 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 233 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
234 remoteClient.Name, remoteClient.AgentId); 234 remoteClient.Name, remoteClient.AgentId);
235 } 235 }
236 } 236 }
237 237
238 /// <summary> 238 /// <summary>
@@ -267,14 +267,14 @@ namespace OpenSim.Framework.Communications.Cache
267 else 267 else
268 { 268 {
269 m_log.ErrorFormat( 269 m_log.ErrorFormat(
270 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 270 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
271 remoteClient.Name, remoteClient.AgentId); 271 remoteClient.Name, remoteClient.AgentId);
272 } 272 }
273 } 273 }
274 274
275 /// <summary> 275 /// <summary>
276 /// Handle the caps inventory descendents fetch. 276 /// Handle the caps inventory descendents fetch.
277 /// 277 ///
278 /// Since the folder structure is sent to the client on login, I believe we only need to handle items. 278 /// Since the folder structure is sent to the client on login, I believe we only need to handle items.
279 /// </summary> 279 /// </summary>
280 /// <param name="agentID"></param> 280 /// <param name="agentID"></param>
@@ -288,20 +288,20 @@ namespace OpenSim.Framework.Communications.Cache
288 bool fetchFolders, bool fetchItems, int sortOrder) 288 bool fetchFolders, bool fetchItems, int sortOrder)
289 { 289 {
290// m_log.DebugFormat( 290// m_log.DebugFormat(
291// "[INVENTORY CACHE]: Fetching folders ({0}), items ({1}) from {2} for agent {3}", 291// "[INVENTORY CACHE]: Fetching folders ({0}), items ({1}) from {2} for agent {3}",
292// fetchFolders, fetchItems, folderID, agentID); 292// fetchFolders, fetchItems, folderID, agentID);
293 293
294 // FIXME MAYBE: We're not handling sortOrder! 294 // FIXME MAYBE: We're not handling sortOrder!
295 295
296 InventoryFolderImpl fold; 296 InventoryFolderImpl fold;
297 if ((fold = libraryRoot.FindFolder(folderID)) != null) 297 if ((fold = libraryRoot.FindFolder(folderID)) != null)
298 { 298 {
299 return fold.RequestListOfItems(); 299 return fold.RequestListOfItems();
300 } 300 }
301 301
302 CachedUserInfo userProfile; 302 CachedUserInfo userProfile;
303 if (m_userProfiles.TryGetValue(agentID, out userProfile)) 303 if (m_userProfiles.TryGetValue(agentID, out userProfile))
304 { 304 {
305 // XXX: When a client crosses into a scene, their entire inventory is fetched 305 // XXX: When a client crosses into a scene, their entire inventory is fetched
306 // asynchronously. If the client makes a request before the inventory is received, we need 306 // asynchronously. If the client makes a request before the inventory is received, we need
307 // to give the inventory a chance to come in. 307 // to give the inventory a chance to come in.
@@ -315,18 +315,18 @@ namespace OpenSim.Framework.Communications.Cache
315 while (attempts++ < 30) 315 while (attempts++ < 30)
316 { 316 {
317 m_log.DebugFormat( 317 m_log.DebugFormat(
318 "[INVENTORY CACHE]: Poll number {0} for inventory items in folder {1} for user {2}", 318 "[INVENTORY CACHE]: Poll number {0} for inventory items in folder {1} for user {2}",
319 attempts, folderID, agentID); 319 attempts, folderID, agentID);
320 320
321 Thread.Sleep(2000); 321 Thread.Sleep(2000);
322 322
323 if (userProfile.HasInventory) 323 if (userProfile.HasInventory)
324 { 324 {
325 break; 325 break;
326 } 326 }
327 } 327 }
328 } 328 }
329 329
330 if (userProfile.HasInventory) 330 if (userProfile.HasInventory)
331 { 331 {
332 if ((fold = userProfile.RootFolder.FindFolder(folderID)) != null) 332 if ((fold = userProfile.RootFolder.FindFolder(folderID)) != null)
@@ -338,9 +338,9 @@ namespace OpenSim.Framework.Communications.Cache
338 m_log.WarnFormat( 338 m_log.WarnFormat(
339 "[AGENT INVENTORY]: Could not find folder {0} requested by user {1}", 339 "[AGENT INVENTORY]: Could not find folder {0} requested by user {1}",
340 folderID, agentID); 340 folderID, agentID);
341 341
342 return null; 342 return null;
343 } 343 }
344 } 344 }
345 else 345 else
346 { 346 {
@@ -352,7 +352,7 @@ namespace OpenSim.Framework.Communications.Cache
352 else 352 else
353 { 353 {
354 m_log.ErrorFormat("[AGENT INVENTORY]: Could not find user profile for {0}", agentID); 354 m_log.ErrorFormat("[AGENT INVENTORY]: Could not find user profile for {0}", agentID);
355 355
356 return null; 356 return null;
357 } 357 }
358 } 358 }
@@ -371,16 +371,16 @@ namespace OpenSim.Framework.Communications.Cache
371 if (!userProfile.PurgeFolder(folderID)) 371 if (!userProfile.PurgeFolder(folderID))
372 { 372 {
373 m_log.ErrorFormat( 373 m_log.ErrorFormat(
374 "[AGENT INVENTORY]: Failed to purge folder for user {0} {1}", 374 "[AGENT INVENTORY]: Failed to purge folder for user {0} {1}",
375 remoteClient.Name, remoteClient.AgentId); 375 remoteClient.Name, remoteClient.AgentId);
376 } 376 }
377 } 377 }
378 else 378 else
379 { 379 {
380 m_log.ErrorFormat( 380 m_log.ErrorFormat(
381 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 381 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
382 remoteClient.Name, remoteClient.AgentId); 382 remoteClient.Name, remoteClient.AgentId);
383 } 383 }
384 } 384 }
385 385
386 public void HandleFetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID) 386 public void HandleFetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID)
@@ -407,9 +407,9 @@ namespace OpenSim.Framework.Communications.Cache
407 else 407 else
408 { 408 {
409 m_log.ErrorFormat( 409 m_log.ErrorFormat(
410 "[AGENT INVENTORY]: Could not find user profile for {0} {1}", 410 "[AGENT INVENTORY]: Could not find user profile for {0} {1}",
411 remoteClient.Name, remoteClient.AgentId); 411 remoteClient.Name, remoteClient.AgentId);
412 } 412 }
413 } 413 }
414 } 414 }
415} 415}
diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs
index 705f369..dac2f34 100644
--- a/OpenSim/Framework/Communications/Capabilities/Caps.cs
+++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs
@@ -64,16 +64,16 @@ namespace OpenSim.Framework.Communications.Capabilities
64 64
65 public class Caps 65 public class Caps
66 { 66 {
67 private static readonly ILog m_log = 67 private static readonly ILog m_log =
68 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 68 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
69 69
70 private string m_httpListenerHostName; 70 private string m_httpListenerHostName;
71 private uint m_httpListenPort; 71 private uint m_httpListenPort;
72 72
73 /// <summary> 73 /// <summary>
74 /// This is the uuid portion of every CAPS path. It is used to make capability urls private to the requester. 74 /// This is the uuid portion of every CAPS path. It is used to make capability urls private to the requester.
75 /// </summary> 75 /// </summary>
76 private string m_capsObjectPath; 76 private string m_capsObjectPath;
77 public string CapsObjectPath { get { return m_capsObjectPath; } } 77 public string CapsObjectPath { get { return m_capsObjectPath; } }
78 78
79 private CapsHandlers m_capsHandlers; 79 private CapsHandlers m_capsHandlers;
@@ -88,7 +88,7 @@ namespace OpenSim.Framework.Communications.Capabilities
88 88
89 // The following two entries are in a module, however, there also here so that we don't re-assign 89 // The following two entries are in a module, however, there also here so that we don't re-assign
90 // the path to another cap by mistake. 90 // the path to another cap by mistake.
91 private static readonly string m_parcelVoiceInfoRequestPath = "0007/"; // This is in a module. 91 private static readonly string m_parcelVoiceInfoRequestPath = "0007/"; // This is in a module.
92 private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module. 92 private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module.
93 93
94 //private string eventQueue = "0100/"; 94 //private string eventQueue = "0100/";
@@ -100,7 +100,7 @@ namespace OpenSim.Framework.Communications.Capabilities
100 private bool m_dumpAssetsToFile; 100 private bool m_dumpAssetsToFile;
101 private string m_regionName; 101 private string m_regionName;
102 102
103 // These are callbacks which will be setup by the scene so that we can update scene data when we 103 // These are callbacks which will be setup by the scene so that we can update scene data when we
104 // receive capability calls 104 // receive capability calls
105 public NewInventoryItem AddNewInventoryItem = null; 105 public NewInventoryItem AddNewInventoryItem = null;
106 public ItemUpdatedCallback ItemUpdatedCall = null; 106 public ItemUpdatedCallback ItemUpdatedCall = null;
@@ -128,46 +128,46 @@ namespace OpenSim.Framework.Communications.Capabilities
128 public void RegisterHandlers() 128 public void RegisterHandlers()
129 { 129 {
130 DeregisterHandlers(); 130 DeregisterHandlers();
131 131
132 string capsBase = "/CAPS/" + m_capsObjectPath; 132 string capsBase = "/CAPS/" + m_capsObjectPath;
133 133
134 try 134 try
135 { 135 {
136 // the root of all evil 136 // the root of all evil
137 m_capsHandlers["SEED"] = new RestStreamHandler("POST", capsBase + m_requestPath, CapsRequest); 137 m_capsHandlers["SEED"] = new RestStreamHandler("POST", capsBase + m_requestPath, CapsRequest);
138 m_capsHandlers["MapLayer"] = 138 m_capsHandlers["MapLayer"] =
139 new LLSDStreamhandler<LLSDMapRequest, LLSDMapLayerResponse>("POST", 139 new LLSDStreamhandler<LLSDMapRequest, LLSDMapLayerResponse>("POST",
140 capsBase + m_mapLayerPath, 140 capsBase + m_mapLayerPath,
141 GetMapLayer); 141 GetMapLayer);
142 m_capsHandlers["NewFileAgentInventory"] = 142 m_capsHandlers["NewFileAgentInventory"] =
143 new LLSDStreamhandler<LLSDAssetUploadRequest, LLSDAssetUploadResponse>("POST", 143 new LLSDStreamhandler<LLSDAssetUploadRequest, LLSDAssetUploadResponse>("POST",
144 capsBase + m_newInventory, 144 capsBase + m_newInventory,
145 NewAgentInventoryRequest); 145 NewAgentInventoryRequest);
146 m_capsHandlers["UpdateNotecardAgentInventory"] = 146 m_capsHandlers["UpdateNotecardAgentInventory"] =
147 new RestStreamHandler("POST", capsBase + m_notecardUpdatePath, NoteCardAgentInventory); 147 new RestStreamHandler("POST", capsBase + m_notecardUpdatePath, NoteCardAgentInventory);
148 m_capsHandlers["UpdateScriptAgentInventory"] = m_capsHandlers["UpdateNotecardAgentInventory"]; 148 m_capsHandlers["UpdateScriptAgentInventory"] = m_capsHandlers["UpdateNotecardAgentInventory"];
149 m_capsHandlers["UpdateScriptTaskInventory"] = 149 m_capsHandlers["UpdateScriptTaskInventory"] =
150 new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory); 150 new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory);
151 151
152 // justincc: I've disabled the CAPS service for now to fix problems with selecting textures, and 152 // justincc: I've disabled the CAPS service for now to fix problems with selecting textures, and
153 // subsequent inventory breakage, in the edit object pane (such as mantis 1085). This requires 153 // subsequent inventory breakage, in the edit object pane (such as mantis 1085). This requires
154 // enhancements (probably filling out the folder part of the LLSD reply) to our CAPS service, 154 // enhancements (probably filling out the folder part of the LLSD reply) to our CAPS service,
155 // but when I went on the Linden grid, the 155 // but when I went on the Linden grid, the
156 // simulators I visited (version 1.21) were, surprisingly, no longer supplying this capability. Instead, 156 // simulators I visited (version 1.21) were, surprisingly, no longer supplying this capability. Instead,
157 // the 1.19.1.4 client appeared to be happily flowing inventory data over UDP 157 // the 1.19.1.4 client appeared to be happily flowing inventory data over UDP
158 // 158 //
159 // This is very probably just a temporary measure - once the CAPS service appears again on the Linden grid 159 // This is very probably just a temporary measure - once the CAPS service appears again on the Linden grid
160 // we will be 160 // we will be
161 // able to get the data we need to implement the necessary part of the protocol to fix the issue above. 161 // able to get the data we need to implement the necessary part of the protocol to fix the issue above.
162// m_capsHandlers["FetchInventoryDescendents"] = 162// m_capsHandlers["FetchInventoryDescendents"] =
163// new RestStreamHandler("POST", capsBase + m_fetchInventoryPath, FetchInventoryRequest); 163// new RestStreamHandler("POST", capsBase + m_fetchInventoryPath, FetchInventoryRequest);
164 164
165 // m_capsHandlers["FetchInventoryDescendents"] = 165 // m_capsHandlers["FetchInventoryDescendents"] =
166 // new LLSDStreamhandler<LLSDFetchInventoryDescendents, LLSDInventoryDescendents>("POST", 166 // new LLSDStreamhandler<LLSDFetchInventoryDescendents, LLSDInventoryDescendents>("POST",
167 // capsBase + m_fetchInventory, 167 // capsBase + m_fetchInventory,
168 // FetchInventory)); 168 // FetchInventory));
169 // m_capsHandlers["RequestTextureDownload"] = new RestStreamHandler("POST", 169 // m_capsHandlers["RequestTextureDownload"] = new RestStreamHandler("POST",
170 // capsBase + m_requestTexture, 170 // capsBase + m_requestTexture,
171 // RequestTexture); 171 // RequestTexture);
172 } 172 }
173 catch (Exception e) 173 catch (Exception e)
@@ -181,7 +181,7 @@ namespace OpenSim.Framework.Communications.Capabilities
181 /// </summary> 181 /// </summary>
182 /// <param name="capName"></param> 182 /// <param name="capName"></param>
183 /// <param name="handler"></param> 183 /// <param name="handler"></param>
184 public void RegisterHandler(string capName, IRequestHandler handler) 184 public void RegisterHandler(string capName, IRequestHandler handler)
185 { 185 {
186 m_capsHandlers[capName] = handler; 186 m_capsHandlers[capName] = handler;
187 m_log.DebugFormat("[CAPS]: Registering handler for \"{0}\": path {1}", capName, handler.Path); 187 m_log.DebugFormat("[CAPS]: Registering handler for \"{0}\": path {1}", capName, handler.Path);
@@ -189,14 +189,14 @@ namespace OpenSim.Framework.Communications.Capabilities
189 189
190 /// <summary> 190 /// <summary>
191 /// Remove all CAPS service handlers. 191 /// Remove all CAPS service handlers.
192 /// 192 ///
193 /// </summary> 193 /// </summary>
194 /// <param name="httpListener"></param> 194 /// <param name="httpListener"></param>
195 /// <param name="path"></param> 195 /// <param name="path"></param>
196 /// <param name="restMethod"></param> 196 /// <param name="restMethod"></param>
197 public void DeregisterHandlers() 197 public void DeregisterHandlers()
198 { 198 {
199 foreach (string capsName in m_capsHandlers.Caps) 199 foreach (string capsName in m_capsHandlers.Caps)
200 { 200 {
201 m_capsHandlers.Remove(capsName); 201 m_capsHandlers.Remove(capsName);
202 } 202 }
@@ -220,7 +220,7 @@ namespace OpenSim.Framework.Communications.Capabilities
220 220
221 // FIXME: these all should probably go into the respective region 221 // FIXME: these all should probably go into the respective region
222 // modules 222 // modules
223 223
224 /// <summary> 224 /// <summary>
225 /// Processes a fetch inventory request and sends the reply 225 /// Processes a fetch inventory request and sends the reply
226 226
@@ -229,7 +229,7 @@ namespace OpenSim.Framework.Communications.Capabilities
229 /// <param name="path"></param> 229 /// <param name="path"></param>
230 /// <param name="param"></param> 230 /// <param name="param"></param>
231 /// <returns></returns> 231 /// <returns></returns>
232 // Request is like: 232 // Request is like:
233 //<llsd> 233 //<llsd>
234 // <map><key>folders</key> 234 // <map><key>folders</key>
235 // <array> 235 // <array>
@@ -240,14 +240,14 @@ namespace OpenSim.Framework.Communications.Capabilities
240 // </map> 240 // </map>
241 //</llsd> 241 //</llsd>
242 // 242 //
243 // multiple fetch-folder maps are allowed within the larger folders map. 243 // multiple fetch-folder maps are allowed within the larger folders map.
244 public string FetchInventoryRequest(string request, string path, string param) 244 public string FetchInventoryRequest(string request, string path, string param)
245 { 245 {
246 string unmodifiedRequest = request.ToString(); 246 string unmodifiedRequest = request.ToString();
247 247
248 //m_log.DebugFormat("[AGENT INVENTORY]: Received CAPS fetch inventory request {0}", unmodifiedRequest); 248 //m_log.DebugFormat("[AGENT INVENTORY]: Received CAPS fetch inventory request {0}", unmodifiedRequest);
249 m_log.Debug("[CAPS]: Inventory Request in region: " + m_regionName); 249 m_log.Debug("[CAPS]: Inventory Request in region: " + m_regionName);
250 250
251 Hashtable hash = new Hashtable(); 251 Hashtable hash = new Hashtable();
252 try 252 try
253 { 253 {
@@ -258,7 +258,7 @@ namespace OpenSim.Framework.Communications.Capabilities
258 m_log.Error("[AGENT INVENTORY]: Fetch error: " + pe.Message); 258 m_log.Error("[AGENT INVENTORY]: Fetch error: " + pe.Message);
259 m_log.Error("Request: " + request.ToString()); 259 m_log.Error("Request: " + request.ToString());
260 } 260 }
261 261
262 ArrayList foldersrequested = (ArrayList)hash["folders"]; 262 ArrayList foldersrequested = (ArrayList)hash["folders"];
263 263
264 string response = ""; 264 string response = "";
@@ -275,15 +275,15 @@ namespace OpenSim.Framework.Communications.Capabilities
275 inventoryitemstr = LLSDHelpers.SerialiseLLSDReply(reply); 275 inventoryitemstr = LLSDHelpers.SerialiseLLSDReply(reply);
276 inventoryitemstr = inventoryitemstr.Replace("<llsd><map><key>folders</key><array>", ""); 276 inventoryitemstr = inventoryitemstr.Replace("<llsd><map><key>folders</key><array>", "");
277 inventoryitemstr = inventoryitemstr.Replace("</array></map></llsd>", ""); 277 inventoryitemstr = inventoryitemstr.Replace("</array></map></llsd>", "");
278 278
279 response += inventoryitemstr; 279 response += inventoryitemstr;
280 } 280 }
281 281
282 if (response.Length == 0) 282 if (response.Length == 0)
283 { 283 {
284 // Ter-guess: If requests fail a lot, the client seems to stop requesting descendants. 284 // Ter-guess: If requests fail a lot, the client seems to stop requesting descendants.
285 // Therefore, I'm concluding that the client only has so many threads available to do requests 285 // Therefore, I'm concluding that the client only has so many threads available to do requests
286 // and when a thread stalls.. is stays stalled. 286 // and when a thread stalls.. is stays stalled.
287 // Therefore we need to return something valid 287 // Therefore we need to return something valid
288 response = "<llsd><map><key>folders</key><array /></map></llsd>"; 288 response = "<llsd><map><key>folders</key><array /></map></llsd>";
289 } 289 }
@@ -291,7 +291,7 @@ namespace OpenSim.Framework.Communications.Capabilities
291 { 291 {
292 response = "<llsd><map><key>folders</key><array>" + response + "</array></map></llsd>"; 292 response = "<llsd><map><key>folders</key><array>" + response + "</array></map></llsd>";
293 } 293 }
294 294
295 //m_log.DebugFormat("[AGENT INVENTORY]: Replying to CAPS fetch inventory request with following xml"); 295 //m_log.DebugFormat("[AGENT INVENTORY]: Replying to CAPS fetch inventory request with following xml");
296 //m_log.Debug(Util.GetFormattedXml(response)); 296 //m_log.Debug(Util.GetFormattedXml(response));
297 297
@@ -310,7 +310,7 @@ namespace OpenSim.Framework.Communications.Capabilities
310 contents.agent___id = m_agentID; 310 contents.agent___id = m_agentID;
311 contents.owner___id = invFetch.owner_id; 311 contents.owner___id = invFetch.owner_id;
312 contents.folder___id = invFetch.folder_id; 312 contents.folder___id = invFetch.folder_id;
313 313
314 // The version number being sent back was originally 1. 314 // The version number being sent back was originally 1.
315 // Unfortunately, on 1.19.1.4, this means that we see a problem where on subsequent logins 315 // Unfortunately, on 1.19.1.4, this means that we see a problem where on subsequent logins
316 // without clearing client cache, objects in the root folder disappear until the cache is cleared, 316 // without clearing client cache, objects in the root folder disappear until the cache is cleared,
@@ -318,8 +318,8 @@ namespace OpenSim.Framework.Communications.Capabilities
318 // 318 //
319 // Seeing the version to something other than 0 may be the right thing to do, but there is 319 // Seeing the version to something other than 0 may be the right thing to do, but there is
320 // a greater subtlety of the second life protocol that needs to be understood first. 320 // a greater subtlety of the second life protocol that needs to be understood first.
321 contents.version = 0; 321 contents.version = 0;
322 322
323 contents.descendents = 0; 323 contents.descendents = 0;
324 reply.folders.Array.Add(contents); 324 reply.folders.Array.Add(contents);
325 List<InventoryItemBase> itemList = null; 325 List<InventoryItemBase> itemList = null;
@@ -327,7 +327,7 @@ namespace OpenSim.Framework.Communications.Capabilities
327 { 327 {
328 itemList = CAPSFetchInventoryDescendents(m_agentID, invFetch.folder_id, invFetch.owner_id, invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order); 328 itemList = CAPSFetchInventoryDescendents(m_agentID, invFetch.folder_id, invFetch.owner_id, invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order);
329 } 329 }
330 330
331 if (itemList != null) 331 if (itemList != null)
332 { 332 {
333 foreach (InventoryItemBase invItem in itemList) 333 foreach (InventoryItemBase invItem in itemList)
@@ -336,12 +336,12 @@ namespace OpenSim.Framework.Communications.Capabilities
336 } 336 }
337 } 337 }
338 else 338 else
339 { 339 {
340 IClientAPI client = GetClient(m_agentID); 340 IClientAPI client = GetClient(m_agentID);
341 341
342 // We're going to both notify the client of inventory service failure and send back a 'no folder contents' response. 342 // We're going to both notify the client of inventory service failure and send back a 'no folder contents' response.
343 // If we don't send back the response, 343 // If we don't send back the response,
344 // the client becomes unhappy (see Teravus' comment in FetchInventoryRequest()) 344 // the client becomes unhappy (see Teravus' comment in FetchInventoryRequest())
345 if (client != null) 345 if (client != null)
346 { 346 {
347 client.SendAgentAlertMessage( 347 client.SendAgentAlertMessage(
@@ -351,11 +351,11 @@ namespace OpenSim.Framework.Communications.Capabilities
351 else 351 else
352 { 352 {
353 m_log.ErrorFormat( 353 m_log.ErrorFormat(
354 "[AGENT INVENTORY]: Could not lookup controlling client for {0} in order to notify them of the inventory service failure", 354 "[AGENT INVENTORY]: Could not lookup controlling client for {0} in order to notify them of the inventory service failure",
355 m_agentID); 355 m_agentID);
356 } 356 }
357 } 357 }
358 358
359 contents.descendents = contents.items.Array.Count; 359 contents.descendents = contents.items.Array.Count;
360 return reply; 360 return reply;
361 } 361 }
@@ -375,7 +375,7 @@ namespace OpenSim.Framework.Communications.Capabilities
375 llsdItem.item_id = invItem.ID; 375 llsdItem.item_id = invItem.ID;
376 llsdItem.name = invItem.Name; 376 llsdItem.name = invItem.Name;
377 llsdItem.parent_id = invItem.Folder; 377 llsdItem.parent_id = invItem.Folder;
378 llsdItem.type = Enum.GetName(typeof(AssetType), invItem.AssetType).ToLower(); 378 llsdItem.type = Enum.GetName(typeof(AssetType), invItem.AssetType).ToLower();
379 llsdItem.inv_type = Enum.GetName(typeof(InventoryType), invItem.InvType).ToLower(); 379 llsdItem.inv_type = Enum.GetName(typeof(InventoryType), invItem.InvType).ToLower();
380 llsdItem.permissions = new LLSDPermissions(); 380 llsdItem.permissions = new LLSDPermissions();
381 llsdItem.permissions.creator_id = invItem.Creator; 381 llsdItem.permissions.creator_id = invItem.Creator;
@@ -395,7 +395,7 @@ namespace OpenSim.Framework.Communications.Capabilities
395 } 395 }
396 396
397 /// <summary> 397 /// <summary>
398 /// 398 ///
399 /// </summary> 399 /// </summary>
400 /// <param name="mapReq"></param> 400 /// <param name="mapReq"></param>
401 /// <returns></returns> 401 /// <returns></returns>
@@ -408,7 +408,7 @@ namespace OpenSim.Framework.Communications.Capabilities
408 } 408 }
409 409
410 /// <summary> 410 /// <summary>
411 /// 411 ///
412 /// </summary> 412 /// </summary>
413 /// <returns></returns> 413 /// <returns></returns>
414 protected static LLSDMapLayer GetLLSDMapLayerResponse() 414 protected static LLSDMapLayer GetLLSDMapLayerResponse()
@@ -421,7 +421,7 @@ namespace OpenSim.Framework.Communications.Capabilities
421 } 421 }
422 422
423 /// <summary> 423 /// <summary>
424 /// 424 ///
425 /// </summary> 425 /// </summary>
426 /// <param name="request"></param> 426 /// <param name="request"></param>
427 /// <param name="path"></param> 427 /// <param name="path"></param>
@@ -437,7 +437,7 @@ namespace OpenSim.Framework.Communications.Capabilities
437 #region EventQueue (Currently not enabled) 437 #region EventQueue (Currently not enabled)
438 438
439 /// <summary> 439 /// <summary>
440 /// 440 ///
441 /// </summary> 441 /// </summary>
442 /// <param name="request"></param> 442 /// <param name="request"></param>
443 /// <param name="path"></param> 443 /// <param name="path"></param>
@@ -463,7 +463,7 @@ namespace OpenSim.Framework.Communications.Capabilities
463 } 463 }
464 464
465 /// <summary> 465 /// <summary>
466 /// 466 ///
467 /// </summary> 467 /// </summary>
468 /// <param name="caps"></param> 468 /// <param name="caps"></param>
469 /// <param name="ipAddressPort"></param> 469 /// <param name="ipAddressPort"></param>
@@ -482,7 +482,7 @@ namespace OpenSim.Framework.Communications.Capabilities
482 } 482 }
483 483
484 /// <summary> 484 /// <summary>
485 /// 485 ///
486 /// </summary> 486 /// </summary>
487 /// <returns></returns> 487 /// <returns></returns>
488 public string CreateEmptyEventResponse() 488 public string CreateEmptyEventResponse()
@@ -590,7 +590,7 @@ namespace OpenSim.Framework.Communications.Capabilities
590 } 590 }
591 591
592 /// <summary> 592 /// <summary>
593 /// 593 ///
594 /// </summary> 594 /// </summary>
595 /// <param name="llsdRequest"></param> 595 /// <param name="llsdRequest"></param>
596 /// <returns></returns> 596 /// <returns></returns>
@@ -622,7 +622,7 @@ namespace OpenSim.Framework.Communications.Capabilities
622 } 622 }
623 623
624 /// <summary> 624 /// <summary>
625 /// 625 ///
626 /// </summary> 626 /// </summary>
627 /// <param name="assetID"></param> 627 /// <param name="assetID"></param>
628 /// <param name="inventoryItem"></param> 628 /// <param name="inventoryItem"></param>
@@ -708,7 +708,7 @@ namespace OpenSim.Framework.Communications.Capabilities
708 /// <param name="itemID">Item to update</param> 708 /// <param name="itemID">Item to update</param>
709 /// <param name="primID">Prim containing item to update</param> 709 /// <param name="primID">Prim containing item to update</param>
710 /// <param name="isScriptRunning">Signals whether the script to update is currently running</param> 710 /// <param name="isScriptRunning">Signals whether the script to update is currently running</param>
711 /// <param name="data">New asset data</param> 711 /// <param name="data">New asset data</param>
712 public void TaskScriptUpdated(LLUUID itemID, LLUUID primID, bool isScriptRunning, byte[] data) 712 public void TaskScriptUpdated(LLUUID itemID, LLUUID primID, bool isScriptRunning, byte[] data)
713 { 713 {
714 if (TaskScriptUpdatedCall != null) 714 if (TaskScriptUpdatedCall != null)
@@ -751,7 +751,7 @@ namespace OpenSim.Framework.Communications.Capabilities
751 } 751 }
752 752
753 /// <summary> 753 /// <summary>
754 /// 754 ///
755 /// </summary> 755 /// </summary>
756 /// <param name="data"></param> 756 /// <param name="data"></param>
757 /// <param name="path"></param> 757 /// <param name="path"></param>
@@ -807,7 +807,7 @@ namespace OpenSim.Framework.Communications.Capabilities
807 } 807 }
808 808
809 /// <summary> 809 /// <summary>
810 /// This class is a callback invoked when a client sends asset data to 810 /// This class is a callback invoked when a client sends asset data to
811 /// an agent inventory notecard update url 811 /// an agent inventory notecard update url
812 /// </summary> 812 /// </summary>
813 public class ItemUpdater 813 public class ItemUpdater
@@ -831,7 +831,7 @@ namespace OpenSim.Framework.Communications.Capabilities
831 } 831 }
832 832
833 /// <summary> 833 /// <summary>
834 /// 834 ///
835 /// </summary> 835 /// </summary>
836 /// <param name="data"></param> 836 /// <param name="data"></param>
837 /// <param name="path"></param> 837 /// <param name="path"></param>
@@ -889,7 +889,7 @@ namespace OpenSim.Framework.Communications.Capabilities
889 } 889 }
890 890
891 /// <summary> 891 /// <summary>
892 /// This class is a callback invoked when a client sends asset data to 892 /// This class is a callback invoked when a client sends asset data to
893 /// a task inventory script update url 893 /// a task inventory script update url
894 /// </summary> 894 /// </summary>
895 public class TaskInventoryScriptUpdater 895 public class TaskInventoryScriptUpdater
@@ -921,7 +921,7 @@ namespace OpenSim.Framework.Communications.Capabilities
921 } 921 }
922 922
923 /// <summary> 923 /// <summary>
924 /// 924 ///
925 /// </summary> 925 /// </summary>
926 /// <param name="data"></param> 926 /// <param name="data"></param>
927 /// <param name="path"></param> 927 /// <param name="path"></param>
@@ -931,7 +931,7 @@ namespace OpenSim.Framework.Communications.Capabilities
931 { 931 {
932 try 932 try
933 { 933 {
934// m_log.InfoFormat("[CAPS]: " + 934// m_log.InfoFormat("[CAPS]: " +
935// "TaskInventoryScriptUpdater received data: {0}, path: {1}, param: {2}", 935// "TaskInventoryScriptUpdater received data: {0}, path: {1}, param: {2}",
936// data, path, param)); 936// data, path, param));
937 937
diff --git a/OpenSim/Framework/Communications/Capabilities/CapsHandlers.cs b/OpenSim/Framework/Communications/Capabilities/CapsHandlers.cs
index e76a5c5..4a3d00f 100644
--- a/OpenSim/Framework/Communications/Capabilities/CapsHandlers.cs
+++ b/OpenSim/Framework/Communications/Capabilities/CapsHandlers.cs
@@ -64,14 +64,14 @@ namespace OpenSim.Framework.Communications.Capabilities
64 /// </summary> 64 /// </summary>
65 /// <param name="capsName">name of the capability of the cap 65 /// <param name="capsName">name of the capability of the cap
66 /// handler to be removed</param> 66 /// handler to be removed</param>
67 public void Remove(string capsName) 67 public void Remove(string capsName)
68 { 68 {
69 // This line must be here, or caps will break! 69 // This line must be here, or caps will break!
70 m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path); 70 m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
71 m_capsHandlers.Remove(capsName); 71 m_capsHandlers.Remove(capsName);
72 } 72 }
73 73
74 public bool ContainsCap(string cap) 74 public bool ContainsCap(string cap)
75 { 75 {
76 return m_capsHandlers.ContainsKey(cap); 76 return m_capsHandlers.ContainsKey(cap);
77 } 77 }
@@ -85,14 +85,14 @@ namespace OpenSim.Framework.Communications.Capabilities
85 /// retrieve a cap handler for a cap that is not contained in 85 /// retrieve a cap handler for a cap that is not contained in
86 /// CapsHandlers. 86 /// CapsHandlers.
87 /// </Remarks> 87 /// </Remarks>
88 public IRequestHandler this[string idx] 88 public IRequestHandler this[string idx]
89 { 89 {
90 get 90 get
91 { 91 {
92 return m_capsHandlers[idx]; 92 return m_capsHandlers[idx];
93 } 93 }
94 94
95 set 95 set
96 { 96 {
97 if (m_capsHandlers.ContainsKey(idx)) 97 if (m_capsHandlers.ContainsKey(idx))
98 { 98 {
@@ -111,9 +111,9 @@ namespace OpenSim.Framework.Communications.Capabilities
111 /// Return the list of cap names for which this CapsHandlers 111 /// Return the list of cap names for which this CapsHandlers
112 /// object contains cap handlers. 112 /// object contains cap handlers.
113 /// </summary> 113 /// </summary>
114 public string[] Caps 114 public string[] Caps
115 { 115 {
116 get 116 get
117 { 117 {
118 string[] __keys = new string[m_capsHandlers.Keys.Count]; 118 string[] __keys = new string[m_capsHandlers.Keys.Count];
119 m_capsHandlers.Keys.CopyTo(__keys, 0); 119 m_capsHandlers.Keys.CopyTo(__keys, 0);
@@ -125,7 +125,7 @@ namespace OpenSim.Framework.Communications.Capabilities
125 /// Return an LLSD-serializable Hashtable describing the 125 /// Return an LLSD-serializable Hashtable describing the
126 /// capabilities and their handler details. 126 /// capabilities and their handler details.
127 /// </summary> 127 /// </summary>
128 public Hashtable CapsDetails 128 public Hashtable CapsDetails
129 { 129 {
130 get 130 get
131 { 131 {
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSD.cs b/OpenSim/Framework/Communications/Capabilities/LLSD.cs
index e869267..bcf7a88 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSD.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSD.cs
@@ -37,12 +37,12 @@ using libsecondlife;
37namespace OpenSim.Framework.Communications.Capabilities 37namespace OpenSim.Framework.Communications.Capabilities
38{ 38{
39 /// <summary> 39 /// <summary>
40 /// Borrowed from (a older version of) libsl for now, as their new llsd code doesn't work we our decoding code. 40 /// Borrowed from (a older version of) libsl for now, as their new llsd code doesn't work we our decoding code.
41 /// </summary> 41 /// </summary>
42 public static class LLSD 42 public static class LLSD
43 { 43 {
44 /// <summary> 44 /// <summary>
45 /// 45 ///
46 /// </summary> 46 /// </summary>
47 public class LLSDParseException : Exception 47 public class LLSDParseException : Exception
48 { 48 {
@@ -52,7 +52,7 @@ namespace OpenSim.Framework.Communications.Capabilities
52 } 52 }
53 53
54 /// <summary> 54 /// <summary>
55 /// 55 ///
56 /// </summary> 56 /// </summary>
57 public class LLSDSerializeException : Exception 57 public class LLSDSerializeException : Exception
58 { 58 {
@@ -62,7 +62,7 @@ namespace OpenSim.Framework.Communications.Capabilities
62 } 62 }
63 63
64 /// <summary> 64 /// <summary>
65 /// 65 ///
66 /// </summary> 66 /// </summary>
67 /// <param name="b"></param> 67 /// <param name="b"></param>
68 /// <returns></returns> 68 /// <returns></returns>
@@ -72,7 +72,7 @@ namespace OpenSim.Framework.Communications.Capabilities
72 } 72 }
73 73
74 /// <summary> 74 /// <summary>
75 /// 75 ///
76 /// </summary> 76 /// </summary>
77 /// <param name="st"></param> 77 /// <param name="st"></param>
78 /// <returns></returns> 78 /// <returns></returns>
@@ -96,7 +96,7 @@ namespace OpenSim.Framework.Communications.Capabilities
96 } 96 }
97 97
98 /// <summary> 98 /// <summary>
99 /// 99 ///
100 /// </summary> 100 /// </summary>
101 /// <param name="obj"></param> 101 /// <param name="obj"></param>
102 /// <returns></returns> 102 /// <returns></returns>
@@ -116,7 +116,7 @@ namespace OpenSim.Framework.Communications.Capabilities
116 } 116 }
117 117
118 /// <summary> 118 /// <summary>
119 /// 119 ///
120 /// </summary> 120 /// </summary>
121 /// <param name="writer"></param> 121 /// <param name="writer"></param>
122 /// <param name="obj"></param> 122 /// <param name="obj"></param>
@@ -217,7 +217,7 @@ namespace OpenSim.Framework.Communications.Capabilities
217 } 217 }
218 218
219 /// <summary> 219 /// <summary>
220 /// 220 ///
221 /// </summary> 221 /// </summary>
222 /// <param name="reader"></param> 222 /// <param name="reader"></param>
223 /// <returns></returns> 223 /// <returns></returns>
@@ -360,7 +360,7 @@ namespace OpenSim.Framework.Communications.Capabilities
360 } 360 }
361 361
362 /// <summary> 362 /// <summary>
363 /// 363 ///
364 /// </summary> 364 /// </summary>
365 /// <param name="reader"></param> 365 /// <param name="reader"></param>
366 /// <returns></returns> 366 /// <returns></returns>
@@ -405,7 +405,7 @@ namespace OpenSim.Framework.Communications.Capabilities
405 } 405 }
406 406
407 /// <summary> 407 /// <summary>
408 /// 408 ///
409 /// </summary> 409 /// </summary>
410 /// <param name="reader"></param> 410 /// <param name="reader"></param>
411 /// <returns></returns> 411 /// <returns></returns>
@@ -441,7 +441,7 @@ namespace OpenSim.Framework.Communications.Capabilities
441 } 441 }
442 442
443 /// <summary> 443 /// <summary>
444 /// 444 ///
445 /// </summary> 445 /// </summary>
446 /// <param name="count"></param> 446 /// <param name="count"></param>
447 /// <returns></returns> 447 /// <returns></returns>
@@ -453,7 +453,7 @@ namespace OpenSim.Framework.Communications.Capabilities
453 } 453 }
454 454
455 /// <summary> 455 /// <summary>
456 /// 456 ///
457 /// </summary> 457 /// </summary>
458 /// <param name="obj"></param> 458 /// <param name="obj"></param>
459 /// <param name="indent"></param> 459 /// <param name="indent"></param>
@@ -661,7 +661,7 @@ namespace OpenSim.Framework.Communications.Capabilities
661 } 661 }
662 662
663 /// <summary> 663 /// <summary>
664 /// 664 ///
665 /// </summary> 665 /// </summary>
666 /// <param name="reader"></param> 666 /// <param name="reader"></param>
667 private static void SkipWS(XmlTextReader reader) 667 private static void SkipWS(XmlTextReader reader)
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDHelpers.cs b/OpenSim/Framework/Communications/Capabilities/LLSDHelpers.cs
index 409d2e0..507f12b 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDHelpers.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDHelpers.cs
@@ -35,9 +35,9 @@ namespace OpenSim.Framework.Communications.Capabilities
35{ 35{
36 public class LLSDHelpers 36 public class LLSDHelpers
37 { 37 {
38// private static readonly log4net.ILog m_log 38// private static readonly log4net.ILog m_log
39// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 39// = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
40 40
41 public static string SerialiseLLSDReply(object obj) 41 public static string SerialiseLLSDReply(object obj)
42 { 42 {
43 StringWriter sw = new StringWriter(); 43 StringWriter sw = new StringWriter();
@@ -47,9 +47,9 @@ namespace OpenSim.Framework.Communications.Capabilities
47 SerializeLLSDType(writer, obj); 47 SerializeLLSDType(writer, obj);
48 writer.WriteEndElement(); 48 writer.WriteEndElement();
49 writer.Close(); 49 writer.Close();
50 50
51 //m_log.DebugFormat("[LLSD Helpers]: Generated serialized LLSD reply {0}", sw.ToString()); 51 //m_log.DebugFormat("[LLSD Helpers]: Generated serialized LLSD reply {0}", sw.ToString());
52 52
53 return sw.ToString(); 53 return sw.ToString();
54 } 54 }
55 55
@@ -146,7 +146,7 @@ namespace OpenSim.Framework.Communications.Capabilities
146 fieldValue.GetType().GetField("Array").SetValue(fieldValue, enumerator.Value); 146 fieldValue.GetType().GetField("Array").SetValue(fieldValue, enumerator.Value);
147 //TODO 147 //TODO
148 // the LLSD map/array types in the array need to be deserialised 148 // the LLSD map/array types in the array need to be deserialised
149 // but first we need to know the right class to deserialise them into. 149 // but first we need to know the right class to deserialise them into.
150 } 150 }
151 else 151 else
152 { 152 {
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDInventoryItem.cs b/OpenSim/Framework/Communications/Capabilities/LLSDInventoryItem.cs
index 31896c2..1a75aba 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDInventoryItem.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDInventoryItem.cs
@@ -91,7 +91,7 @@ namespace OpenSim.Framework.Communications.Capabilities
91 public int descendents; 91 public int descendents;
92 public LLUUID folder___id; //as LL can't decide if they are going to use "_" or "-" to separate words in the field names 92 public LLUUID folder___id; //as LL can't decide if they are going to use "_" or "-" to separate words in the field names
93 public LLSDArray items = new LLSDArray(); 93 public LLSDArray items = new LLSDArray();
94 public LLUUID owner___id; // and of course we can't have field names with "-" in 94 public LLUUID owner___id; // and of course we can't have field names with "-" in
95 public int version; 95 public int version;
96 } 96 }
97} \ No newline at end of file 97} \ No newline at end of file
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDParcelVoiceInfoResponse.cs b/OpenSim/Framework/Communications/Capabilities/LLSDParcelVoiceInfoResponse.cs
index fb5eaa8..c045dcf 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDParcelVoiceInfoResponse.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDParcelVoiceInfoResponse.cs
@@ -23,7 +23,7 @@
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28 28
29using System.Collections; 29using System.Collections;
@@ -41,7 +41,7 @@ namespace OpenSim.Framework.Communications.Capabilities
41 { 41 {
42 } 42 }
43 43
44 public LLSDParcelVoiceInfoResponse(string region, int localID, Hashtable creds) 44 public LLSDParcelVoiceInfoResponse(string region, int localID, Hashtable creds)
45 { 45 {
46 region_name = region; 46 region_name = region;
47 parcel_local_id = localID; 47 parcel_local_id = localID;
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDStreamHandler.cs b/OpenSim/Framework/Communications/Capabilities/LLSDStreamHandler.cs
index 5e8a08f..8683cea 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDStreamHandler.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDStreamHandler.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Framework.Communications.Capabilities
51 //string requestBody = streamReader.ReadToEnd(); 51 //string requestBody = streamReader.ReadToEnd();
52 //streamReader.Close(); 52 //streamReader.Close();
53 53
54 // libsecondlife.StructuredData.LLSDMap hash = (libsecondlife.StructuredData.LLSDMap) 54 // libsecondlife.StructuredData.LLSDMap hash = (libsecondlife.StructuredData.LLSDMap)
55 // libsecondlife.StructuredData.LLSDParser.DeserializeXml(new XmlTextReader(request)); 55 // libsecondlife.StructuredData.LLSDParser.DeserializeXml(new XmlTextReader(request));
56 56
57 Hashtable hash = (Hashtable) LLSD.LLSDDeserialize(request); 57 Hashtable hash = (Hashtable) LLSD.LLSDDeserialize(request);
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDTaskInventoryUploadComplete.cs b/OpenSim/Framework/Communications/Capabilities/LLSDTaskInventoryUploadComplete.cs
index ee9ff1b..8bfd20c 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDTaskInventoryUploadComplete.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDTaskInventoryUploadComplete.cs
@@ -34,7 +34,7 @@ namespace OpenSim.Framework.Communications.Capabilities
34 { 34 {
35 /// <summary> 35 /// <summary>
36 /// The task inventory item that was updated 36 /// The task inventory item that was updated
37 /// </summary> 37 /// </summary>
38 public LLUUID item_id; 38 public LLUUID item_id;
39 39
40 /// <summary> 40 /// <summary>
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDTaskScriptUpdate.cs b/OpenSim/Framework/Communications/Capabilities/LLSDTaskScriptUpdate.cs
index df32d1a..e45d9de 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDTaskScriptUpdate.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDTaskScriptUpdate.cs
@@ -34,17 +34,17 @@ namespace OpenSim.Framework.Communications.Capabilities
34 { 34 {
35 /// <summary> 35 /// <summary>
36 /// The item containing the script to update 36 /// The item containing the script to update
37 /// </summary> 37 /// </summary>
38 public LLUUID item_id; 38 public LLUUID item_id;
39 39
40 /// <summary> 40 /// <summary>
41 /// The task containing the script 41 /// The task containing the script
42 /// </summary> 42 /// </summary>
43 public LLUUID task_id; 43 public LLUUID task_id;
44 44
45 /// <summary> 45 /// <summary>
46 /// Signals whether the script is currently active 46 /// Signals whether the script is currently active
47 /// </summary> 47 /// </summary>
48 public int is_script_running; 48 public int is_script_running;
49 } 49 }
50} \ No newline at end of file 50} \ No newline at end of file
diff --git a/OpenSim/Framework/Communications/Capabilities/LLSDVoiceAccountResponse.cs b/OpenSim/Framework/Communications/Capabilities/LLSDVoiceAccountResponse.cs
index 67064b0..8143233 100644
--- a/OpenSim/Framework/Communications/Capabilities/LLSDVoiceAccountResponse.cs
+++ b/OpenSim/Framework/Communications/Capabilities/LLSDVoiceAccountResponse.cs
@@ -23,7 +23,7 @@
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28 28
29namespace OpenSim.Framework.Communications.Capabilities 29namespace OpenSim.Framework.Communications.Capabilities
@@ -38,7 +38,7 @@ namespace OpenSim.Framework.Communications.Capabilities
38 { 38 {
39 } 39 }
40 40
41 public LLSDVoiceAccountResponse(string user, string pass) 41 public LLSDVoiceAccountResponse(string user, string pass)
42 { 42 {
43 username = user; 43 username = user;
44 password = pass; 44 password = pass;
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs
index 2813aa0..37020f6 100644
--- a/OpenSim/Framework/Communications/CommunicationsManager.cs
+++ b/OpenSim/Framework/Communications/CommunicationsManager.cs
@@ -236,7 +236,7 @@ namespace OpenSim.Framework.Communications
236 236
237 public void UpdateAvatarPropertiesRequest(IClientAPI remote_client, UserProfileData UserProfile) 237 public void UpdateAvatarPropertiesRequest(IClientAPI remote_client, UserProfileData UserProfile)
238 { 238 {
239 m_userService.UpdateUserProfileProperties(UserProfile); 239 m_userService.UpdateUserProfileProperties(UserProfile);
240 return; 240 return;
241 } 241 }
242 242
diff --git a/OpenSim/Framework/Communications/GenericAsyncResult.cs b/OpenSim/Framework/Communications/GenericAsyncResult.cs
index 6c5f5f7..48f72a0 100644
--- a/OpenSim/Framework/Communications/GenericAsyncResult.cs
+++ b/OpenSim/Framework/Communications/GenericAsyncResult.cs
@@ -112,7 +112,7 @@ namespace OpenSim.Framework.Communications
112 112
113 public void EndInvoke() 113 public void EndInvoke()
114 { 114 {
115 // This method assumes that only 1 thread calls EndInvoke 115 // This method assumes that only 1 thread calls EndInvoke
116 if (!IsCompleted) 116 if (!IsCompleted)
117 { 117 {
118 // If the operation isn't done, wait for it 118 // If the operation isn't done, wait for it
@@ -142,7 +142,7 @@ namespace OpenSim.Framework.Communications
142 // Save the asynchronous operation's result 142 // Save the asynchronous operation's result
143 m_result = result; 143 m_result = result;
144 144
145 // Tell the base class that the operation completed 145 // Tell the base class that the operation completed
146 // sucessfully (no exception) 146 // sucessfully (no exception)
147 base.SetAsCompleted(completedSynchronously); 147 base.SetAsCompleted(completedSynchronously);
148 } 148 }
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs
index c8a3c85..f7a8857 100644
--- a/OpenSim/Framework/Communications/IInventoryServices.cs
+++ b/OpenSim/Framework/Communications/IInventoryServices.cs
@@ -43,62 +43,62 @@ namespace OpenSim.Framework.Communications
43 public interface IInventoryServices 43 public interface IInventoryServices
44 { 44 {
45 /// <summary> 45 /// <summary>
46 /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the 46 /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the
47 /// inventory has been received 47 /// inventory has been received
48 /// </summary> 48 /// </summary>
49 /// <param name="userID"></param> 49 /// <param name="userID"></param>
50 /// <param name="callback"></param> 50 /// <param name="callback"></param>
51 void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback); 51 void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback);
52 52
53 /// <summary> 53 /// <summary>
54 /// Add a new folder to the user's inventory 54 /// Add a new folder to the user's inventory
55 /// </summary> 55 /// </summary>
56 /// <param name="folder"></param> 56 /// <param name="folder"></param>
57 /// <returns>true if the folder was successfully added</returns> 57 /// <returns>true if the folder was successfully added</returns>
58 bool AddFolder(InventoryFolderBase folder); 58 bool AddFolder(InventoryFolderBase folder);
59 59
60 /// <summary> 60 /// <summary>
61 /// Move an inventory folder to a new location 61 /// Move an inventory folder to a new location
62 /// </summary> 62 /// </summary>
63 /// <param name="folder">A folder containing the details of the new location</param> 63 /// <param name="folder">A folder containing the details of the new location</param>
64 /// <returns>true if the folder was successfully moved</returns> 64 /// <returns>true if the folder was successfully moved</returns>
65 bool MoveFolder(InventoryFolderBase folder); 65 bool MoveFolder(InventoryFolderBase folder);
66 66
67 /// <summary> 67 /// <summary>
68 /// Purge an inventory folder of all its items and subfolders. 68 /// Purge an inventory folder of all its items and subfolders.
69 /// </summary> 69 /// </summary>
70 /// <param name="folder"></param> 70 /// <param name="folder"></param>
71 /// <returns>true if the folder was successfully purged</returns> 71 /// <returns>true if the folder was successfully purged</returns>
72 bool PurgeFolder(InventoryFolderBase folder); 72 bool PurgeFolder(InventoryFolderBase folder);
73 73
74 /// <summary> 74 /// <summary>
75 /// Add a new item to the user's inventory 75 /// Add a new item to the user's inventory
76 /// </summary> 76 /// </summary>
77 /// <param name="item"></param> 77 /// <param name="item"></param>
78 /// <returns>true if the item was successfully added</returns> 78 /// <returns>true if the item was successfully added</returns>
79 bool AddItem(InventoryItemBase item); 79 bool AddItem(InventoryItemBase item);
80 80
81 /// <summary> 81 /// <summary>
82 /// Update an item in the user's inventory 82 /// Update an item in the user's inventory
83 /// </summary> 83 /// </summary>
84 /// <param name="item"></param> 84 /// <param name="item"></param>
85 /// <returns>true if the item was successfully updated</returns> 85 /// <returns>true if the item was successfully updated</returns>
86 bool UpdateItem(InventoryItemBase item); 86 bool UpdateItem(InventoryItemBase item);
87 87
88 /// <summary> 88 /// <summary>
89 /// Delete an item from the user's inventory 89 /// Delete an item from the user's inventory
90 /// </summary> 90 /// </summary>
91 /// <param name="item"></param> 91 /// <param name="item"></param>
92 /// <returns>true if the item was successfully deleted</returns> 92 /// <returns>true if the item was successfully deleted</returns>
93 bool DeleteItem(InventoryItemBase item); 93 bool DeleteItem(InventoryItemBase item);
94 94
95 /// <summary> 95 /// <summary>
96 /// Create a new inventory for the given user. 96 /// Create a new inventory for the given user.
97 /// </summary> 97 /// </summary>
98 /// <param name="user"></param> 98 /// <param name="user"></param>
99 /// <returns>true if the inventory was successfully created, false otherwise</returns> 99 /// <returns>true if the inventory was successfully created, false otherwise</returns>
100 bool CreateNewUserInventory(LLUUID user); 100 bool CreateNewUserInventory(LLUUID user);
101 101
102 bool HasInventoryForUser(LLUUID userID); 102 bool HasInventoryForUser(LLUUID userID);
103 103
104 /// <summary> 104 /// <summary>
@@ -107,12 +107,12 @@ namespace OpenSim.Framework.Communications
107 /// <param name="userID"></param> 107 /// <param name="userID"></param>
108 /// <returns>null if no root folder was found</returns> 108 /// <returns>null if no root folder was found</returns>
109 InventoryFolderBase RequestRootFolder(LLUUID userID); 109 InventoryFolderBase RequestRootFolder(LLUUID userID);
110 110
111 /// <summary> 111 /// <summary>
112 /// Returns a list of all the folders in a given user's inventory. 112 /// Returns a list of all the folders in a given user's inventory.
113 /// </summary> 113 /// </summary>
114 /// <param name="userId"></param> 114 /// <param name="userId"></param>
115 /// <returns>A flat list of the user's inventory folder tree, 115 /// <returns>A flat list of the user's inventory folder tree,
116 /// null if there is no inventory for this user</returns> 116 /// null if there is no inventory for this user</returns>
117 List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId); 117 List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId);
118 } 118 }
diff --git a/OpenSim/Framework/Communications/IUserService.cs b/OpenSim/Framework/Communications/IUserService.cs
index 7d71d02..67a8c78 100644
--- a/OpenSim/Framework/Communications/IUserService.cs
+++ b/OpenSim/Framework/Communications/IUserService.cs
@@ -37,7 +37,7 @@ namespace OpenSim.Framework.Communications
37 /// </summary> 37 /// </summary>
38 /// <param name="fname">First name</param> 38 /// <param name="fname">First name</param>
39 /// <param name="lname">Last name</param> 39 /// <param name="lname">Last name</param>
40 /// <returns>A user profile. Returns null if no profile is found</returns> 40 /// <returns>A user profile. Returns null if no profile is found</returns>
41 UserProfileData GetUserProfile(string firstName, string lastName); 41 UserProfileData GetUserProfile(string firstName, string lastName);
42 42
43 //UserProfileData GetUserProfile(string name); 43 //UserProfileData GetUserProfile(string name);
@@ -46,7 +46,7 @@ namespace OpenSim.Framework.Communications
46 /// Loads a user profile from a database by UUID 46 /// Loads a user profile from a database by UUID
47 /// </summary> 47 /// </summary>
48 /// <param name="uuid">The target UUID</param> 48 /// <param name="uuid">The target UUID</param>
49 /// <returns>A user profile. Returns null if no user profile is found.</returns> 49 /// <returns>A user profile. Returns null if no user profile is found.</returns>
50 UserProfileData GetUserProfile(LLUUID userId); 50 UserProfileData GetUserProfile(LLUUID userId);
51 51
52 void clearUserAgent(LLUUID avatarID); 52 void clearUserAgent(LLUUID avatarID);
@@ -57,7 +57,7 @@ namespace OpenSim.Framework.Communications
57 UserProfileData SetupMasterUser(LLUUID userId); 57 UserProfileData SetupMasterUser(LLUUID userId);
58 58
59 /// <summary> 59 /// <summary>
60 /// 60 ///
61 /// </summary> 61 /// </summary>
62 /// <param name="user"></param> 62 /// <param name="user"></param>
63 LLUUID AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY); 63 LLUUID AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY);
@@ -110,7 +110,7 @@ namespace OpenSim.Framework.Communications
110 List<FriendListItem> GetUserFriendList(LLUUID friendlistowner); 110 List<FriendListItem> GetUserFriendList(LLUUID friendlistowner);
111 111
112 /// <summary> 112 /// <summary>
113 /// Get's the User Appearance 113 /// Get's the User Appearance
114 AvatarAppearance GetUserAppearance(LLUUID user); 114 AvatarAppearance GetUserAppearance(LLUUID user);
115 115
116 void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance); 116 void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance);
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
index e81d8c4..dffeed3 100644
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs
@@ -40,13 +40,13 @@ namespace OpenSim.Framework.Communications
40 /// </summary> 40 /// </summary>
41 public abstract class InventoryServiceBase : IInventoryServices 41 public abstract class InventoryServiceBase : IInventoryServices
42 { 42 {
43 private static readonly ILog m_log 43 private static readonly ILog m_log
44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 45
46 protected Dictionary<string, IInventoryData> m_plugins = new Dictionary<string, IInventoryData>(); 46 protected Dictionary<string, IInventoryData> m_plugins = new Dictionary<string, IInventoryData>();
47 47
48 #region Plugin methods 48 #region Plugin methods
49 49
50 /// <summary> 50 /// <summary>
51 /// Adds a new user server plugin - plugins will be requested in the order they were loaded. 51 /// Adds a new user server plugin - plugins will be requested in the order they were loaded.
52 /// </summary> 52 /// </summary>
@@ -76,42 +76,42 @@ namespace OpenSim.Framework.Communications
76 } 76 }
77 } 77 }
78 } 78 }
79 79
80 #endregion 80 #endregion
81 81
82 #region IInventoryServices methods 82 #region IInventoryServices methods
83 83
84 // See IInventoryServices 84 // See IInventoryServices
85 public List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId) 85 public List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId)
86 { 86 {
87// m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId); 87// m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId);
88 88
89 InventoryFolderBase rootFolder = RequestRootFolder(userId); 89 InventoryFolderBase rootFolder = RequestRootFolder(userId);
90 90
91 // Agent has no inventory structure yet. 91 // Agent has no inventory structure yet.
92 if (null == rootFolder) 92 if (null == rootFolder)
93 { 93 {
94 return null; 94 return null;
95 } 95 }
96 96
97 List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>(); 97 List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>();
98 98
99 userFolders.Add(rootFolder); 99 userFolders.Add(rootFolder);
100 100
101 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 101 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
102 { 102 {
103 IList<InventoryFolderBase> folders = plugin.Value.getFolderHierarchy(rootFolder.ID); 103 IList<InventoryFolderBase> folders = plugin.Value.getFolderHierarchy(rootFolder.ID);
104 userFolders.AddRange(folders); 104 userFolders.AddRange(folders);
105 } 105 }
106 106
107// foreach (InventoryFolderBase folder in userFolders) 107// foreach (InventoryFolderBase folder in userFolders)
108// { 108// {
109// m_log.DebugFormat("[AGENT INVENTORY]: Got folder {0} {1}", folder.name, folder.folderID); 109// m_log.DebugFormat("[AGENT INVENTORY]: Got folder {0} {1}", folder.name, folder.folderID);
110// } 110// }
111 111
112 return userFolders; 112 return userFolders;
113 } 113 }
114 114
115 // See IInventoryServices 115 // See IInventoryServices
116 public virtual bool HasInventoryForUser(LLUUID userID) 116 public virtual bool HasInventoryForUser(LLUUID userID)
117 { 117 {
@@ -133,31 +133,31 @@ namespace OpenSim.Framework.Communications
133 public bool CreateNewUserInventory(LLUUID user) 133 public bool CreateNewUserInventory(LLUUID user)
134 { 134 {
135 InventoryFolderBase existingRootFolder = RequestRootFolder(user); 135 InventoryFolderBase existingRootFolder = RequestRootFolder(user);
136 136
137 if (null != existingRootFolder) 137 if (null != existingRootFolder)
138 { 138 {
139 m_log.WarnFormat( 139 m_log.WarnFormat(
140 "[AGENT INVENTORY]: Did not create a new inventory for user {0} since they already have " 140 "[AGENT INVENTORY]: Did not create a new inventory for user {0} since they already have "
141 + "a root inventory folder with id {1}", 141 + "a root inventory folder with id {1}",
142 user, existingRootFolder.ID); 142 user, existingRootFolder.ID);
143 } 143 }
144 else 144 else
145 { 145 {
146 UsersInventory inven = new UsersInventory(); 146 UsersInventory inven = new UsersInventory();
147 inven.CreateNewInventorySet(user); 147 inven.CreateNewInventorySet(user);
148 AddNewInventorySet(inven); 148 AddNewInventorySet(inven);
149 149
150 return true; 150 return true;
151 } 151 }
152 152
153 return false; 153 return false;
154 } 154 }
155 155
156 // See IInventoryServices 156 // See IInventoryServices
157 public abstract void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback); 157 public abstract void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback);
158 158
159 #endregion 159 #endregion
160 160
161 #region Methods used by GridInventoryService 161 #region Methods used by GridInventoryService
162 162
163 public List<InventoryFolderBase> RequestSubFolders(LLUUID parentFolderID) 163 public List<InventoryFolderBase> RequestSubFolders(LLUUID parentFolderID)
@@ -180,21 +180,21 @@ namespace OpenSim.Framework.Communications
180 } 180 }
181 return itemsList; 181 return itemsList;
182 } 182 }
183 183
184 #endregion 184 #endregion
185 185
186 // See IInventoryServices 186 // See IInventoryServices
187 public bool AddFolder(InventoryFolderBase folder) 187 public bool AddFolder(InventoryFolderBase folder)
188 { 188 {
189 m_log.DebugFormat( 189 m_log.DebugFormat(
190 "[AGENT INVENTORY]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); 190 "[AGENT INVENTORY]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
191 191
192 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 192 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
193 { 193 {
194 plugin.Value.addInventoryFolder(folder); 194 plugin.Value.addInventoryFolder(folder);
195 } 195 }
196 196
197 // FIXME: Should return false on failure 197 // FIXME: Should return false on failure
198 return true; 198 return true;
199 } 199 }
200 200
@@ -203,14 +203,14 @@ namespace OpenSim.Framework.Communications
203 { 203 {
204 m_log.DebugFormat( 204 m_log.DebugFormat(
205 "[AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); 205 "[AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
206 206
207 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 207 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
208 { 208 {
209 plugin.Value.moveInventoryFolder(folder); 209 plugin.Value.moveInventoryFolder(folder);
210 } 210 }
211 211
212 // FIXME: Should return false on failure 212 // FIXME: Should return false on failure
213 return true; 213 return true;
214 } 214 }
215 215
216 // See IInventoryServices 216 // See IInventoryServices
@@ -218,14 +218,14 @@ namespace OpenSim.Framework.Communications
218 { 218 {
219 m_log.DebugFormat( 219 m_log.DebugFormat(
220 "[AGENT INVENTORY]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder); 220 "[AGENT INVENTORY]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
221 221
222 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 222 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
223 { 223 {
224 plugin.Value.addInventoryItem(item); 224 plugin.Value.addInventoryItem(item);
225 } 225 }
226 226
227 // FIXME: Should return false on failure 227 // FIXME: Should return false on failure
228 return true; 228 return true;
229 } 229 }
230 230
231 // See IInventoryServices 231 // See IInventoryServices
@@ -233,14 +233,14 @@ namespace OpenSim.Framework.Communications
233 { 233 {
234 m_log.InfoFormat( 234 m_log.InfoFormat(
235 "[AGENT INVENTORY]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); 235 "[AGENT INVENTORY]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder);
236 236
237 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 237 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
238 { 238 {
239 plugin.Value.updateInventoryItem(item); 239 plugin.Value.updateInventoryItem(item);
240 } 240 }
241 241
242 // FIXME: Should return false on failure 242 // FIXME: Should return false on failure
243 return true; 243 return true;
244 } 244 }
245 245
246 // See IInventoryServices 246 // See IInventoryServices
@@ -248,19 +248,19 @@ namespace OpenSim.Framework.Communications
248 { 248 {
249 m_log.InfoFormat( 249 m_log.InfoFormat(
250 "[AGENT INVENTORY]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); 250 "[AGENT INVENTORY]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder);
251 251
252 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 252 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
253 { 253 {
254 plugin.Value.deleteInventoryItem(item.ID); 254 plugin.Value.deleteInventoryItem(item.ID);
255 } 255 }
256 256
257 // FIXME: Should return false on failure 257 // FIXME: Should return false on failure
258 return true; 258 return true;
259 } 259 }
260 260
261 /// <summary> 261 /// <summary>
262 /// Purge a folder of all items items and subfolders. 262 /// Purge a folder of all items items and subfolders.
263 /// 263 ///
264 /// FIXME: Really nasty in a sense, because we have to query the database to get information we may 264 /// FIXME: Really nasty in a sense, because we have to query the database to get information we may
265 /// already know... Needs heavy refactoring. 265 /// already know... Needs heavy refactoring.
266 /// </summary> 266 /// </summary>
@@ -269,13 +269,13 @@ namespace OpenSim.Framework.Communications
269 { 269 {
270 m_log.DebugFormat( 270 m_log.DebugFormat(
271 "[AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID); 271 "[AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
272 272
273 List<InventoryFolderBase> subFolders = RequestSubFolders(folder.ID); 273 List<InventoryFolderBase> subFolders = RequestSubFolders(folder.ID);
274 274
275 foreach (InventoryFolderBase subFolder in subFolders) 275 foreach (InventoryFolderBase subFolder in subFolders)
276 { 276 {
277// m_log.DebugFormat("[AGENT INVENTORY]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID); 277// m_log.DebugFormat("[AGENT INVENTORY]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID);
278 278
279 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 279 foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)
280 { 280 {
281 plugin.Value.deleteInventoryFolder(subFolder.ID); 281 plugin.Value.deleteInventoryFolder(subFolder.ID);
@@ -288,17 +288,17 @@ namespace OpenSim.Framework.Communications
288 { 288 {
289 DeleteItem(item); 289 DeleteItem(item);
290 } 290 }
291 291
292 // FIXME: Should return false on failure 292 // FIXME: Should return false on failure
293 return true; 293 return true;
294 } 294 }
295 295
296 private void AddNewInventorySet(UsersInventory inventory) 296 private void AddNewInventorySet(UsersInventory inventory)
297 { 297 {
298 foreach (InventoryFolderBase folder in inventory.Folders.Values) 298 foreach (InventoryFolderBase folder in inventory.Folders.Values)
299 { 299 {
300 AddFolder(folder); 300 AddFolder(folder);
301 } 301 }
302 } 302 }
303 303
304 /// <summary> 304 /// <summary>
@@ -340,7 +340,7 @@ namespace OpenSim.Framework.Communications
340 folder.Type = (short)AssetType.Bodypart; 340 folder.Type = (short)AssetType.Bodypart;
341 folder.Version = 1; 341 folder.Version = 1;
342 Folders.Add(folder.ID, folder); 342 Folders.Add(folder.ID, folder);
343 343
344 folder = new InventoryFolderBase(); 344 folder = new InventoryFolderBase();
345 folder.ParentID = rootFolder; 345 folder.ParentID = rootFolder;
346 folder.Owner = user; 346 folder.Owner = user;
@@ -348,7 +348,7 @@ namespace OpenSim.Framework.Communications
348 folder.Name = "Calling Cards"; 348 folder.Name = "Calling Cards";
349 folder.Type = (short)AssetType.CallingCard; 349 folder.Type = (short)AssetType.CallingCard;
350 folder.Version = 1; 350 folder.Version = 1;
351 Folders.Add(folder.ID, folder); 351 Folders.Add(folder.ID, folder);
352 352
353 folder = new InventoryFolderBase(); 353 folder = new InventoryFolderBase();
354 folder.ParentID = rootFolder; 354 folder.ParentID = rootFolder;
diff --git a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
index 6ec21d9..1a9cc24 100644
--- a/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/IRequestLimitStrategy.cs
@@ -31,9 +31,9 @@ namespace OpenSim.Framework.Communications.Limit
31 /// Interface for strategies that can limit requests from the client. Currently only used in the 31 /// Interface for strategies that can limit requests from the client. Currently only used in the
32 /// texture modules to deal with repeated requests for certain textures. However, limiting strategies 32 /// texture modules to deal with repeated requests for certain textures. However, limiting strategies
33 /// could be used with other requests. 33 /// could be used with other requests.
34 /// </summary> 34 /// </summary>
35 public interface IRequestLimitStrategy<TId> 35 public interface IRequestLimitStrategy<TId>
36 { 36 {
37 /// <summary> 37 /// <summary>
38 /// Should the request be allowed? If the id is not monitored, then the request is always allowed. 38 /// Should the request be allowed? If the id is not monitored, then the request is always allowed.
39 /// Otherwise, the strategy criteria will be applied. 39 /// Otherwise, the strategy criteria will be applied.
@@ -41,21 +41,21 @@ namespace OpenSim.Framework.Communications.Limit
41 /// <param name="id"></param> 41 /// <param name="id"></param>
42 /// <returns></returns> 42 /// <returns></returns>
43 bool AllowRequest(TId id); 43 bool AllowRequest(TId id);
44 44
45 /// <summary> 45 /// <summary>
46 /// Has the request been refused just once? 46 /// Has the request been refused just once?
47 /// </summary> 47 /// </summary>
48 /// <returns>False if the request has not yet been refused, or if the request has been refused more 48 /// <returns>False if the request has not yet been refused, or if the request has been refused more
49 /// than once.</returns> 49 /// than once.</returns>
50 bool IsFirstRefusal(TId id); 50 bool IsFirstRefusal(TId id);
51 51
52 /// <summary> 52 /// <summary>
53 /// Start monitoring for future AllowRequest calls. If the id is already monitored, then monitoring 53 /// Start monitoring for future AllowRequest calls. If the id is already monitored, then monitoring
54 /// continues. 54 /// continues.
55 /// </summary> 55 /// </summary>
56 /// <param name="id"></param> 56 /// <param name="id"></param>
57 void MonitorRequests(TId id); 57 void MonitorRequests(TId id);
58 58
59 /// <summary> 59 /// <summary>
60 /// Is the id being monitored? 60 /// Is the id being monitored?
61 /// </summary> 61 /// </summary>
diff --git a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
index 72d0586..932f780 100644
--- a/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/NullLimitStrategy.cs
@@ -26,15 +26,15 @@
26 */ 26 */
27 27
28namespace OpenSim.Framework.Communications.Limit 28namespace OpenSim.Framework.Communications.Limit
29{ 29{
30 /// <summary> 30 /// <summary>
31 /// Strategy which polices no limits 31 /// Strategy which polices no limits
32 /// </summary> 32 /// </summary>
33 public class NullLimitStrategy<TId> : IRequestLimitStrategy<TId> 33 public class NullLimitStrategy<TId> : IRequestLimitStrategy<TId>
34 { 34 {
35 public bool AllowRequest(TId id) { return true; } 35 public bool AllowRequest(TId id) { return true; }
36 public bool IsFirstRefusal(TId id) { return false; } 36 public bool IsFirstRefusal(TId id) { return false; }
37 public void MonitorRequests(TId id) { /* intentionally blank */ } 37 public void MonitorRequests(TId id) { /* intentionally blank */ }
38 public bool IsMonitoringRequests(TId id) { return false; } 38 public bool IsMonitoringRequests(TId id) { return false; }
39 } 39 }
40} 40}
diff --git a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
index dfa05fa..bb72029 100644
--- a/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/RepeatLimitStrategy.cs
@@ -31,14 +31,14 @@ namespace OpenSim.Framework.Communications.Limit
31{ 31{
32 /// <summary> 32 /// <summary>
33 /// Limit requests by discarding them after they've been repeated a certain number of times. 33 /// Limit requests by discarding them after they've been repeated a certain number of times.
34 /// </summary> 34 /// </summary>
35 public class RepeatLimitStrategy<TId> : IRequestLimitStrategy<TId> 35 public class RepeatLimitStrategy<TId> : IRequestLimitStrategy<TId>
36 { 36 {
37 /// <summary> 37 /// <summary>
38 /// Record each asset request that we're notified about. 38 /// Record each asset request that we're notified about.
39 /// </summary> 39 /// </summary>
40 private readonly Dictionary<TId, int> requestCounts = new Dictionary<TId, int>(); 40 private readonly Dictionary<TId, int> requestCounts = new Dictionary<TId, int>();
41 41
42 /// <summary> 42 /// <summary>
43 /// The maximum number of requests that can be made before we drop subsequent requests. 43 /// The maximum number of requests that can be made before we drop subsequent requests.
44 /// </summary> 44 /// </summary>
@@ -47,7 +47,7 @@ namespace OpenSim.Framework.Communications.Limit
47 { 47 {
48 get { return m_maxRequests; } 48 get { return m_maxRequests; }
49 } 49 }
50 50
51 /// <summary></summary> 51 /// <summary></summary>
52 /// <param name="maxRequests">The maximum number of requests that may be served before all further 52 /// <param name="maxRequests">The maximum number of requests that may be served before all further
53 /// requests are dropped.</param> 53 /// requests are dropped.</param>
@@ -55,52 +55,52 @@ namespace OpenSim.Framework.Communications.Limit
55 { 55 {
56 m_maxRequests = maxRequests; 56 m_maxRequests = maxRequests;
57 } 57 }
58 58
59 /// <summary> 59 /// <summary>
60 /// <see cref="IRequestLimitStrategy"/> 60 /// <see cref="IRequestLimitStrategy"/>
61 /// </summary> 61 /// </summary>
62 public bool AllowRequest(TId id) 62 public bool AllowRequest(TId id)
63 { 63 {
64 if (requestCounts.ContainsKey(id)) 64 if (requestCounts.ContainsKey(id))
65 { 65 {
66 requestCounts[id] += 1; 66 requestCounts[id] += 1;
67 67
68 if (requestCounts[id] > m_maxRequests) 68 if (requestCounts[id] > m_maxRequests)
69 { 69 {
70 return false; 70 return false;
71 } 71 }
72 } 72 }
73 73
74 return true; 74 return true;
75 } 75 }
76 76
77 /// <summary> 77 /// <summary>
78 /// <see cref="IRequestLimitStrategy"/> 78 /// <see cref="IRequestLimitStrategy"/>
79 /// </summary> 79 /// </summary>
80 public bool IsFirstRefusal(TId id) 80 public bool IsFirstRefusal(TId id)
81 { 81 {
82 if (requestCounts.ContainsKey(id) && m_maxRequests + 1 == requestCounts[id]) 82 if (requestCounts.ContainsKey(id) && m_maxRequests + 1 == requestCounts[id])
83 { 83 {
84 return true; 84 return true;
85 } 85 }
86 86
87 return false; 87 return false;
88 } 88 }
89 89
90 /// <summary> 90 /// <summary>
91 /// <see cref="IRequestLimitStrategy"/> 91 /// <see cref="IRequestLimitStrategy"/>
92 /// </summary> 92 /// </summary>
93 public void MonitorRequests(TId id) 93 public void MonitorRequests(TId id)
94 { 94 {
95 if (!IsMonitoringRequests(id)) 95 if (!IsMonitoringRequests(id))
96 { 96 {
97 requestCounts.Add(id, 1); 97 requestCounts.Add(id, 1);
98 } 98 }
99 } 99 }
100 100
101 /// <summary> 101 /// <summary>
102 /// <see cref="IRequestLimitStrategy"/> 102 /// <see cref="IRequestLimitStrategy"/>
103 /// </summary> 103 /// </summary>
104 public bool IsMonitoringRequests(TId id) 104 public bool IsMonitoringRequests(TId id)
105 { 105 {
106 return requestCounts.ContainsKey(id); 106 return requestCounts.ContainsKey(id);
diff --git a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs b/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
index 34b01ff..b5b925e 100644
--- a/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
+++ b/OpenSim/Framework/Communications/Limit/TimeLimitStrategy.cs
@@ -32,17 +32,17 @@ namespace OpenSim.Framework.Communications.Limit
32{ 32{
33 /// <summary> 33 /// <summary>
34 /// Limit requests by discarding repeat attempts that occur within a given time period 34 /// Limit requests by discarding repeat attempts that occur within a given time period
35 /// 35 ///
36 /// XXX Don't use this for limiting texture downloading, at least not until we better handle multiple requests 36 /// XXX Don't use this for limiting texture downloading, at least not until we better handle multiple requests
37 /// for the same texture at different resolutions. 37 /// for the same texture at different resolutions.
38 /// </summary> 38 /// </summary>
39 public class TimeLimitStrategy<TId> : IRequestLimitStrategy<TId> 39 public class TimeLimitStrategy<TId> : IRequestLimitStrategy<TId>
40 { 40 {
41 /// <summary> 41 /// <summary>
42 /// Record the time at which an asset request occurs. 42 /// Record the time at which an asset request occurs.
43 /// </summary> 43 /// </summary>
44 private readonly Dictionary<TId, Request> requests = new Dictionary<TId, Request>(); 44 private readonly Dictionary<TId, Request> requests = new Dictionary<TId, Request>();
45 45
46 /// <summary> 46 /// <summary>
47 /// The minimum time period between which requests for the same data will be serviced. 47 /// The minimum time period between which requests for the same data will be serviced.
48 /// </summary> 48 /// </summary>
@@ -53,37 +53,37 @@ namespace OpenSim.Framework.Communications.Limit
53 } 53 }
54 54
55 /// <summary></summary> 55 /// <summary></summary>
56 /// <param name="repeatPeriod"></param> 56 /// <param name="repeatPeriod"></param>
57 public TimeLimitStrategy(TimeSpan repeatPeriod) 57 public TimeLimitStrategy(TimeSpan repeatPeriod)
58 { 58 {
59 m_repeatPeriod = repeatPeriod; 59 m_repeatPeriod = repeatPeriod;
60 } 60 }
61 61
62 /// <summary> 62 /// <summary>
63 /// <see cref="IRequestLimitStrategy"/> 63 /// <see cref="IRequestLimitStrategy"/>
64 /// </summary> 64 /// </summary>
65 public bool AllowRequest(TId id) 65 public bool AllowRequest(TId id)
66 { 66 {
67 if (IsMonitoringRequests(id)) 67 if (IsMonitoringRequests(id))
68 { 68 {
69 DateTime now = DateTime.Now; 69 DateTime now = DateTime.Now;
70 TimeSpan elapsed = now - requests[id].Time; 70 TimeSpan elapsed = now - requests[id].Time;
71 71
72 if (elapsed < RepeatPeriod) 72 if (elapsed < RepeatPeriod)
73 { 73 {
74 requests[id].Refusals += 1; 74 requests[id].Refusals += 1;
75 return false; 75 return false;
76 } 76 }
77 77
78 requests[id].Time = now; 78 requests[id].Time = now;
79 } 79 }
80 80
81 return true; 81 return true;
82 } 82 }
83 83
84 /// <summary> 84 /// <summary>
85 /// <see cref="IRequestLimitStrategy"/> 85 /// <see cref="IRequestLimitStrategy"/>
86 /// </summary> 86 /// </summary>
87 public bool IsFirstRefusal(TId id) 87 public bool IsFirstRefusal(TId id)
88 { 88 {
89 if (IsMonitoringRequests(id)) 89 if (IsMonitoringRequests(id))
@@ -92,31 +92,31 @@ namespace OpenSim.Framework.Communications.Limit
92 { 92 {
93 return true; 93 return true;
94 } 94 }
95 } 95 }
96 96
97 return false; 97 return false;
98 } 98 }
99 99
100 /// <summary> 100 /// <summary>
101 /// <see cref="IRequestLimitStrategy"/> 101 /// <see cref="IRequestLimitStrategy"/>
102 /// </summary> 102 /// </summary>
103 public void MonitorRequests(TId id) 103 public void MonitorRequests(TId id)
104 { 104 {
105 if (!IsMonitoringRequests(id)) 105 if (!IsMonitoringRequests(id))
106 { 106 {
107 requests.Add(id, new Request(DateTime.Now)); 107 requests.Add(id, new Request(DateTime.Now));
108 } 108 }
109 } 109 }
110 110
111 /// <summary> 111 /// <summary>
112 /// <see cref="IRequestLimitStrategy"/> 112 /// <see cref="IRequestLimitStrategy"/>
113 /// </summary> 113 /// </summary>
114 public bool IsMonitoringRequests(TId id) 114 public bool IsMonitoringRequests(TId id)
115 { 115 {
116 return requests.ContainsKey(id); 116 return requests.ContainsKey(id);
117 } 117 }
118 } 118 }
119 119
120 /// <summary> 120 /// <summary>
121 /// Private request details. 121 /// Private request details.
122 /// </summary> 122 /// </summary>
@@ -126,12 +126,12 @@ namespace OpenSim.Framework.Communications.Limit
126 /// Time of last request 126 /// Time of last request
127 /// </summary> 127 /// </summary>
128 public DateTime Time; 128 public DateTime Time;
129 129
130 /// <summary> 130 /// <summary>
131 /// Number of refusals associated with this request 131 /// Number of refusals associated with this request
132 /// </summary> 132 /// </summary>
133 public int Refusals; 133 public int Refusals;
134 134
135 public Request(DateTime time) 135 public Request(DateTime time)
136 { 136 {
137 Time = time; 137 Time = time;
diff --git a/OpenSim/Framework/Communications/LoginResponse.cs b/OpenSim/Framework/Communications/LoginResponse.cs
index bccac74..6fdd06a 100644
--- a/OpenSim/Framework/Communications/LoginResponse.cs
+++ b/OpenSim/Framework/Communications/LoginResponse.cs
@@ -239,7 +239,7 @@ namespace OpenSim.Framework.Communications
239 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", 239 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.",
240 "false"); 240 "false");
241 } 241 }
242 242
243 /// <summary> 243 /// <summary>
244 /// Response to indicate that login failed because the agent's inventory was not available. 244 /// Response to indicate that login failed because the agent's inventory was not available.
245 /// </summary> 245 /// </summary>
@@ -249,7 +249,7 @@ namespace OpenSim.Framework.Communications
249 return GenerateFailureResponse( 249 return GenerateFailureResponse(
250 "key", 250 "key",
251 "The avatar inventory service is not responding. Please notify your login region operator.", 251 "The avatar inventory service is not responding. Please notify your login region operator.",
252 "false"); 252 "false");
253 } 253 }
254 254
255 public XmlRpcResponse CreateAlreadyLoggedInResponse() 255 public XmlRpcResponse CreateAlreadyLoggedInResponse()
diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs
index fa78a30..bd0fa53 100644
--- a/OpenSim/Framework/Communications/LoginService.cs
+++ b/OpenSim/Framework/Communications/LoginService.cs
@@ -48,8 +48,8 @@ namespace OpenSim.Framework.Communications
48 48
49 protected string m_welcomeMessage = "Welcome to OpenSim"; 49 protected string m_welcomeMessage = "Welcome to OpenSim";
50 protected UserManagerBase m_userManager = null; 50 protected UserManagerBase m_userManager = null;
51 protected Mutex m_loginMutex = new Mutex(false); 51 protected Mutex m_loginMutex = new Mutex(false);
52 52
53 /// <summary> 53 /// <summary>
54 /// Used during login to send the skeleton of the OpenSim Library to the client. 54 /// Used during login to send the skeleton of the OpenSim Library to the client.
55 /// </summary> 55 /// </summary>
@@ -61,12 +61,12 @@ namespace OpenSim.Framework.Communications
61 /// <param name="userManager"></param> 61 /// <param name="userManager"></param>
62 /// <param name="libraryRootFolder"></param> 62 /// <param name="libraryRootFolder"></param>
63 /// <param name="welcomeMess"></param> 63 /// <param name="welcomeMess"></param>
64 public LoginService(UserManagerBase userManager, LibraryRootFolder libraryRootFolder, 64 public LoginService(UserManagerBase userManager, LibraryRootFolder libraryRootFolder,
65 string welcomeMess) 65 string welcomeMess)
66 { 66 {
67 m_userManager = userManager; 67 m_userManager = userManager;
68 m_libraryRootFolder = libraryRootFolder; 68 m_libraryRootFolder = libraryRootFolder;
69 69
70 if (welcomeMess != String.Empty) 70 if (welcomeMess != String.Empty)
71 { 71 {
72 m_welcomeMessage = welcomeMess; 72 m_welcomeMessage = welcomeMess;
@@ -79,15 +79,15 @@ namespace OpenSim.Framework.Communications
79 /// <param name="response">The existing response</param> 79 /// <param name="response">The existing response</param>
80 /// <param name="theUser">The user profile</param> 80 /// <param name="theUser">The user profile</param>
81 public abstract void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest); 81 public abstract void CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest);
82 82
83 /// <summary> 83 /// <summary>
84 /// Get the initial login inventory skeleton (in other words, the folder structure) for the given user. 84 /// Get the initial login inventory skeleton (in other words, the folder structure) for the given user.
85 /// </summary> 85 /// </summary>
86 /// <param name="userID"></param> 86 /// <param name="userID"></param>
87 /// <returns></returns> 87 /// <returns></returns>
88 /// <exception cref='System.Exception'>This will be thrown if there is a problem with the inventory service</exception> 88 /// <exception cref='System.Exception'>This will be thrown if there is a problem with the inventory service</exception>
89 protected abstract InventoryData GetInventorySkeleton(LLUUID userID); 89 protected abstract InventoryData GetInventorySkeleton(LLUUID userID);
90 90
91 /// <summary> 91 /// <summary>
92 /// Called when we receive the client's initial XMLRPC login_to_simulator request message 92 /// Called when we receive the client's initial XMLRPC login_to_simulator request message
93 /// </summary> 93 /// </summary>
@@ -112,7 +112,7 @@ namespace OpenSim.Framework.Communications
112 112
113 UserProfileData userProfile; 113 UserProfileData userProfile;
114 LoginResponse logResponse = new LoginResponse(); 114 LoginResponse logResponse = new LoginResponse();
115 115
116 string firstname = String.Empty; 116 string firstname = String.Empty;
117 string lastname = String.Empty; 117 string lastname = String.Empty;
118 118
@@ -120,23 +120,23 @@ namespace OpenSim.Framework.Communications
120 { 120 {
121 firstname = (string) requestData["first"]; 121 firstname = (string) requestData["first"];
122 lastname = (string) requestData["last"]; 122 lastname = (string) requestData["last"];
123 123
124 m_log.InfoFormat( 124 m_log.InfoFormat(
125 "[LOGIN BEGIN]: Received login request message from user {0} {1}", 125 "[LOGIN BEGIN]: Received login request message from user {0} {1}",
126 firstname, lastname); 126 firstname, lastname);
127 127
128 string clientVersion = "Unknown"; 128 string clientVersion = "Unknown";
129 129
130 if (requestData.Contains("version")) 130 if (requestData.Contains("version"))
131 { 131 {
132 clientVersion = (string)requestData["version"]; 132 clientVersion = (string)requestData["version"];
133 } 133 }
134 134
135 if (requestData.Contains("start")) 135 if (requestData.Contains("start"))
136 { 136 {
137 startLocationRequest = (string)requestData["start"]; 137 startLocationRequest = (string)requestData["start"];
138 } 138 }
139 139
140 m_log.DebugFormat( 140 m_log.DebugFormat(
141 "[LOGIN]: Client is {0}, start location is {1}", clientVersion, startLocationRequest); 141 "[LOGIN]: Client is {0}, start location is {1}", clientVersion, startLocationRequest);
142 142
@@ -163,9 +163,9 @@ namespace OpenSim.Framework.Communications
163 catch (Exception e) 163 catch (Exception e)
164 { 164 {
165 m_log.InfoFormat( 165 m_log.InfoFormat(
166 "[LOGIN END]: Bad web_login_key: {0} for user {1} {2}, exception {3}", 166 "[LOGIN END]: Bad web_login_key: {0} for user {1} {2}, exception {3}",
167 requestData["web_login_key"], firstname, lastname, e); 167 requestData["web_login_key"], firstname, lastname, e);
168 168
169 return logResponse.CreateFailedResponse(); 169 return logResponse.CreateFailedResponse();
170 } 170 }
171 GoodLogin = AuthenticateUser(userProfile, webloginkey); 171 GoodLogin = AuthenticateUser(userProfile, webloginkey);
@@ -176,14 +176,14 @@ namespace OpenSim.Framework.Communications
176 { 176 {
177 m_log.Info( 177 m_log.Info(
178 "[LOGIN END]: login_to_simulator login message did not contain all the required data"); 178 "[LOGIN END]: login_to_simulator login message did not contain all the required data");
179 179
180 return logResponse.CreateGridErrorResponse(); 180 return logResponse.CreateGridErrorResponse();
181 } 181 }
182 182
183 if (!GoodLogin) 183 if (!GoodLogin)
184 { 184 {
185 m_log.InfoFormat("[LOGIN END]: User {0} {1} failed authentication", firstname, lastname); 185 m_log.InfoFormat("[LOGIN END]: User {0} {1} failed authentication", firstname, lastname);
186 186
187 return logResponse.CreateLoginFailedResponse(); 187 return logResponse.CreateLoginFailedResponse();
188 } 188 }
189 else 189 else
@@ -199,11 +199,11 @@ namespace OpenSim.Framework.Communications
199 m_userManager.CommitAgent(ref userProfile); 199 m_userManager.CommitAgent(ref userProfile);
200 200
201 // Reject the login 201 // Reject the login
202 202
203 m_log.InfoFormat( 203 m_log.InfoFormat(
204 "[LOGIN END]: Notifying user {0} {1} that they are already logged in", 204 "[LOGIN END]: Notifying user {0} {1} that they are already logged in",
205 firstname, lastname); 205 firstname, lastname);
206 206
207 return logResponse.CreateAlreadyLoggedInResponse(); 207 return logResponse.CreateAlreadyLoggedInResponse();
208 } 208 }
209 // Otherwise... 209 // Otherwise...
@@ -214,9 +214,9 @@ namespace OpenSim.Framework.Communications
214 { 214 {
215 LLUUID agentID = userProfile.ID; 215 LLUUID agentID = userProfile.ID;
216 InventoryData inventData = null; 216 InventoryData inventData = null;
217 217
218 try 218 try
219 { 219 {
220 inventData = GetInventorySkeleton(agentID); 220 inventData = GetInventorySkeleton(agentID);
221 } 221 }
222 catch (Exception e) 222 catch (Exception e)
@@ -224,10 +224,10 @@ namespace OpenSim.Framework.Communications
224 m_log.ErrorFormat( 224 m_log.ErrorFormat(
225 "[LOGIN END]: Error retrieving inventory skeleton of agent {0}, {1} - {2}", 225 "[LOGIN END]: Error retrieving inventory skeleton of agent {0}, {1} - {2}",
226 agentID, e.GetType(), e.Message); 226 agentID, e.GetType(), e.Message);
227 227
228 return logResponse.CreateLoginInventoryFailedResponse(); 228 return logResponse.CreateLoginInventoryFailedResponse();
229 } 229 }
230 230
231 ArrayList AgentInventoryArray = inventData.InventoryArray; 231 ArrayList AgentInventoryArray = inventData.InventoryArray;
232 232
233 Hashtable InventoryRootHash = new Hashtable(); 233 Hashtable InventoryRootHash = new Hashtable();
@@ -235,7 +235,7 @@ namespace OpenSim.Framework.Communications
235 ArrayList InventoryRoot = new ArrayList(); 235 ArrayList InventoryRoot = new ArrayList();
236 InventoryRoot.Add(InventoryRootHash); 236 InventoryRoot.Add(InventoryRootHash);
237 userProfile.RootInventoryFolderID = inventData.RootFolderID; 237 userProfile.RootInventoryFolderID = inventData.RootFolderID;
238 238
239 // Inventory Library Section 239 // Inventory Library Section
240 Hashtable InventoryLibRootHash = new Hashtable(); 240 Hashtable InventoryLibRootHash = new Hashtable();
241 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000"; 241 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
@@ -244,10 +244,10 @@ namespace OpenSim.Framework.Communications
244 logResponse.InventoryLibRoot = InventoryLibRoot; 244 logResponse.InventoryLibRoot = InventoryLibRoot;
245 245
246 logResponse.InventoryLibraryOwner = GetLibraryOwner(); 246 logResponse.InventoryLibraryOwner = GetLibraryOwner();
247 247
248 logResponse.InventoryRoot = InventoryRoot; 248 logResponse.InventoryRoot = InventoryRoot;
249 logResponse.InventorySkeleton = AgentInventoryArray; 249 logResponse.InventorySkeleton = AgentInventoryArray;
250 logResponse.InventoryLibrary = GetInventoryLibrary(); 250 logResponse.InventoryLibrary = GetInventoryLibrary();
251 251
252 // Circuit Code 252 // Circuit Code
253 uint circode = (uint) (Util.RandomClass.Next()); 253 uint circode = (uint) (Util.RandomClass.Next());
@@ -280,15 +280,15 @@ namespace OpenSim.Framework.Communications
280 //return logResponse.ToXmlRpcResponse(); 280 //return logResponse.ToXmlRpcResponse();
281 } 281 }
282 CommitAgent(ref userProfile); 282 CommitAgent(ref userProfile);
283 283
284 // If we reach this point, then the login has successfully logged onto the grid 284 // If we reach this point, then the login has successfully logged onto the grid
285 if (StatsManager.UserStats != null) 285 if (StatsManager.UserStats != null)
286 StatsManager.UserStats.AddSuccessfulLogin(); 286 StatsManager.UserStats.AddSuccessfulLogin();
287 287
288 m_log.DebugFormat( 288 m_log.DebugFormat(
289 "[LOGIN END]: Authentication of user {0} {1} successful. Sending response to client.", 289 "[LOGIN END]: Authentication of user {0} {1} successful. Sending response to client.",
290 firstname, lastname); 290 firstname, lastname);
291 291
292 return logResponse.ToXmlRpcResponse(); 292 return logResponse.ToXmlRpcResponse();
293 } 293 }
294 catch (Exception e) 294 catch (Exception e)
@@ -422,10 +422,10 @@ namespace OpenSim.Framework.Communications
422 } 422 }
423 423
424 CommitAgent(ref userProfile); 424 CommitAgent(ref userProfile);
425 425
426 // If we reach this point, then the login has successfully logged onto the grid 426 // If we reach this point, then the login has successfully logged onto the grid
427 if (StatsManager.UserStats != null) 427 if (StatsManager.UserStats != null)
428 StatsManager.UserStats.AddSuccessfulLogin(); 428 StatsManager.UserStats.AddSuccessfulLogin();
429 429
430 return logResponse.ToLLSDResponse(); 430 return logResponse.ToLLSDResponse();
431 } 431 }
@@ -449,7 +449,7 @@ namespace OpenSim.Framework.Communications
449 // period, space, parens, and dash. 449 // period, space, parens, and dash.
450 450
451 Regex wfcut = new Regex("[^a-zA-Z0-9_\\.\\$ \\(\\)\\-]"); 451 Regex wfcut = new Regex("[^a-zA-Z0-9_\\.\\$ \\(\\)\\-]");
452 452
453 Hashtable returnactions = new Hashtable(); 453 Hashtable returnactions = new Hashtable();
454 int statuscode = 200; 454 int statuscode = 200;
455 455
@@ -467,7 +467,7 @@ namespace OpenSim.Framework.Communications
467 // the client requires the HTML form field be named 'username' 467 // the client requires the HTML form field be named 'username'
468 // however, the data it sends when it loads the first time is 'firstname' 468 // however, the data it sends when it loads the first time is 'firstname'
469 // another one of those little nuances. 469 // another one of those little nuances.
470 470
471 if (keysvals.Contains("firstname")) 471 if (keysvals.Contains("firstname"))
472 firstname = wfcut.Replace((string)keysvals["firstname"], String.Empty, 99999); 472 firstname = wfcut.Replace((string)keysvals["firstname"], String.Empty, 99999);
473 473
@@ -494,7 +494,7 @@ namespace OpenSim.Framework.Communications
494 494
495 if (keysvals.Contains("lang")) 495 if (keysvals.Contains("lang"))
496 lang = wfcut.Replace((string)keysvals["lang"], String.Empty, 99999); 496 lang = wfcut.Replace((string)keysvals["lang"], String.Empty, 99999);
497 497
498 if (keysvals.Contains("password")) 498 if (keysvals.Contains("password"))
499 password = wfcut.Replace((string)keysvals["password"], String.Empty, 99999); 499 password = wfcut.Replace((string)keysvals["password"], String.Empty, 99999);
500 500
@@ -541,8 +541,8 @@ namespace OpenSim.Framework.Communications
541 return returnactions; 541 return returnactions;
542 } 542 }
543 543
544 public string GetLoginForm(string firstname, string lastname, string location, string region, 544 public string GetLoginForm(string firstname, string lastname, string location, string region,
545 string grid, string channel, string version, string lang, 545 string grid, string channel, string version, string lang,
546 string password, string errormessages) 546 string password, string errormessages)
547 { 547 {
548 // inject our values in the form at the markers 548 // inject our values in the form at the markers
@@ -559,7 +559,7 @@ namespace OpenSim.Framework.Communications
559 loginform = sr.ReadToEnd(); 559 loginform = sr.ReadToEnd();
560 sr.Close(); 560 sr.Close();
561 } 561 }
562 562
563 loginform = loginform.Replace("[$firstname]", firstname); 563 loginform = loginform.Replace("[$firstname]", firstname);
564 loginform = loginform.Replace("[$lastname]", lastname); 564 loginform = loginform.Replace("[$lastname]", lastname);
565 loginform = loginform.Replace("[$location]", location); 565 loginform = loginform.Replace("[$location]", location);
@@ -586,7 +586,7 @@ namespace OpenSim.Framework.Communications
586 responseString += "<title>OpenSim Login</title>"; 586 responseString += "<title>OpenSim Login</title>";
587 responseString += "<body><br />"; 587 responseString += "<body><br />";
588 responseString += "<div id=\"login_box\">"; 588 responseString += "<div id=\"login_box\">";
589 589
590 responseString += "<form action=\"/go.cgi\" method=\"GET\" id=\"login-form\">"; 590 responseString += "<form action=\"/go.cgi\" method=\"GET\" id=\"login-form\">";
591 591
592 responseString += "<div id=\"message\">[$errors]</div>"; 592 responseString += "<div id=\"message\">[$errors]</div>";
@@ -670,13 +670,13 @@ namespace OpenSim.Framework.Communications
670 password = "$1$" + Util.Md5Hash(password); 670 password = "$1$" + Util.Md5Hash(password);
671 671
672 password = password.Remove(0, 3); //remove $1$ 672 password = password.Remove(0, 3); //remove $1$
673 673
674 string s = Util.Md5Hash(password + ":" + profile.PasswordSalt); 674 string s = Util.Md5Hash(password + ":" + profile.PasswordSalt);
675 // Testing... 675 // Testing...
676 //m_log.Info("[LOGIN]: SubHash:" + s + " userprofile:" + profile.passwordHash); 676 //m_log.Info("[LOGIN]: SubHash:" + s + " userprofile:" + profile.passwordHash);
677 //m_log.Info("[LOGIN]: userprofile:" + profile.passwordHash + " SubCT:" + password); 677 //m_log.Info("[LOGIN]: userprofile:" + profile.passwordHash + " SubCT:" + password);
678 678
679 passwordSuccess = (profile.PasswordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase) 679 passwordSuccess = (profile.PasswordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase)
680 || profile.PasswordHash.Equals(password, StringComparison.InvariantCultureIgnoreCase)); 680 || profile.PasswordHash.Equals(password, StringComparison.InvariantCultureIgnoreCase));
681 681
682 return passwordSuccess; 682 return passwordSuccess;
@@ -694,7 +694,7 @@ namespace OpenSim.Framework.Communications
694 } 694 }
695 695
696 /// <summary> 696 /// <summary>
697 /// 697 ///
698 /// </summary> 698 /// </summary>
699 /// <param name="profile"></param> 699 /// <param name="profile"></param>
700 /// <param name="request"></param> 700 /// <param name="request"></param>
@@ -709,7 +709,7 @@ namespace OpenSim.Framework.Communications
709 } 709 }
710 710
711 /// <summary> 711 /// <summary>
712 /// 712 ///
713 /// </summary> 713 /// </summary>
714 /// <param name="firstname"></param> 714 /// <param name="firstname"></param>
715 /// <param name="lastname"></param> 715 /// <param name="lastname"></param>
@@ -720,7 +720,7 @@ namespace OpenSim.Framework.Communications
720 } 720 }
721 721
722 /// <summary> 722 /// <summary>
723 /// 723 ///
724 /// </summary> 724 /// </summary>
725 /// <returns></returns> 725 /// <returns></returns>
726 public virtual string GetMessage() 726 public virtual string GetMessage()
@@ -741,17 +741,17 @@ namespace OpenSim.Framework.Communications
741 } 741 }
742 return buddylistreturn; 742 return buddylistreturn;
743 } 743 }
744 744
745 /// <summary> 745 /// <summary>
746 /// Converts the inventory library skeleton into the form required by the rpc request. 746 /// Converts the inventory library skeleton into the form required by the rpc request.
747 /// </summary> 747 /// </summary>
748 /// <returns></returns> 748 /// <returns></returns>
749 protected virtual ArrayList GetInventoryLibrary() 749 protected virtual ArrayList GetInventoryLibrary()
750 { 750 {
751 Dictionary<LLUUID, InventoryFolderImpl> rootFolders 751 Dictionary<LLUUID, InventoryFolderImpl> rootFolders
752 = m_libraryRootFolder.RequestSelfAndDescendentFolders(); 752 = m_libraryRootFolder.RequestSelfAndDescendentFolders();
753 ArrayList folderHashes = new ArrayList(); 753 ArrayList folderHashes = new ArrayList();
754 754
755 foreach (InventoryFolderBase folder in rootFolders.Values) 755 foreach (InventoryFolderBase folder in rootFolders.Values)
756 { 756 {
757 Hashtable TempHash = new Hashtable(); 757 Hashtable TempHash = new Hashtable();
@@ -762,12 +762,12 @@ namespace OpenSim.Framework.Communications
762 TempHash["folder_id"] = folder.ID.ToString(); 762 TempHash["folder_id"] = folder.ID.ToString();
763 folderHashes.Add(TempHash); 763 folderHashes.Add(TempHash);
764 } 764 }
765 765
766 return folderHashes; 766 return folderHashes;
767 } 767 }
768 768
769 /// <summary> 769 /// <summary>
770 /// 770 ///
771 /// </summary> 771 /// </summary>
772 /// <returns></returns> 772 /// <returns></returns>
773 protected virtual ArrayList GetLibraryOwner() 773 protected virtual ArrayList GetLibraryOwner()
diff --git a/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
index 9a53499..2df5fbc 100644
--- a/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
+++ b/OpenSim/Framework/Communications/Properties/AssemblyInfo.cs
@@ -28,7 +28,7 @@
28using System.Reflection; 28using System.Reflection;
29using System.Runtime.InteropServices; 29using System.Runtime.InteropServices;
30 30
31// General Information about an assembly is controlled through the following 31// General information about an assembly is controlled through the following
32// set of attributes. Change these attribute values to modify the information 32// set of attributes. Change these attribute values to modify the information
33// associated with an assembly. 33// associated with an assembly.
34 34
@@ -41,8 +41,8 @@ using System.Runtime.InteropServices;
41[assembly : AssemblyTrademark("")] 41[assembly : AssemblyTrademark("")]
42[assembly : AssemblyCulture("")] 42[assembly : AssemblyCulture("")]
43 43
44// Setting ComVisible to false makes the types in this assembly not visible 44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from 45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type. 46// COM, set the ComVisible attribute to true on that type.
47 47
48[assembly : ComVisible(false)] 48[assembly : ComVisible(false)]
@@ -54,11 +54,11 @@ using System.Runtime.InteropServices;
54// Version information for an assembly consists of the following four values: 54// Version information for an assembly consists of the following four values:
55// 55//
56// Major Version 56// Major Version
57// Minor Version 57// Minor Version
58// Build Number 58// Build Number
59// Revision 59// Revision
60// 60//
61// You can specify all the values or you can default the Revision and Build Numbers 61// You can specify all the values or you can default the Revision and Build Numbers
62// by using the '*' as shown below: 62// by using the '*' as shown below:
63 63
64[assembly : AssemblyVersion("1.0.0.0")] 64[assembly : AssemblyVersion("1.0.0.0")]
diff --git a/OpenSim/Framework/Communications/RestClient.cs b/OpenSim/Framework/Communications/RestClient.cs
index 4ed62bf..7c8876a 100644
--- a/OpenSim/Framework/Communications/RestClient.cs
+++ b/OpenSim/Framework/Communications/RestClient.cs
@@ -16,14 +16,14 @@ namespace OpenSim.Framework.Communications
16 /// <remarks> 16 /// <remarks>
17 /// This class is a generic implementation of a REST (Representational State Transfer) web service. This 17 /// This class is a generic implementation of a REST (Representational State Transfer) web service. This
18 /// class is designed to execute both synchronously and asynchronously. 18 /// class is designed to execute both synchronously and asynchronously.
19 /// 19 ///
20 /// Internally the implementation works as a two stage asynchronous web-client. 20 /// Internally the implementation works as a two stage asynchronous web-client.
21 /// When the request is initiated, RestClient will query asynchronously for for a web-response, 21 /// When the request is initiated, RestClient will query asynchronously for for a web-response,
22 /// sleeping until the initial response is returned by the server. Once the initial response is retrieved 22 /// sleeping until the initial response is returned by the server. Once the initial response is retrieved
23 /// the second stage of asynchronous requests will be triggered, in an attempt to read of the response 23 /// the second stage of asynchronous requests will be triggered, in an attempt to read of the response
24 /// object into a memorystream as a sequence of asynchronous reads. 24 /// object into a memorystream as a sequence of asynchronous reads.
25 /// 25 ///
26 /// The asynchronisity of RestClient is designed to move as much processing into the back-ground, allowing 26 /// The asynchronisity of RestClient is designed to move as much processing into the back-ground, allowing
27 /// other threads to execute, while it waits for a response from the web-service. RestClient itself can be 27 /// other threads to execute, while it waits for a response from the web-service. RestClient itself can be
28 /// invoked by the caller in either synchronous mode or asynchronous modes. 28 /// invoked by the caller in either synchronous mode or asynchronous modes.
29 /// </remarks> 29 /// </remarks>
@@ -36,7 +36,7 @@ namespace OpenSim.Framework.Communications
36 #region member variables 36 #region member variables
37 37
38 /// <summary> 38 /// <summary>
39 /// The base Uri of the web-service e.g. http://www.google.com 39 /// The base Uri of the web-service e.g. http://www.google.com
40 /// </summary> 40 /// </summary>
41 private string _url; 41 private string _url;
42 42
@@ -92,7 +92,7 @@ namespace OpenSim.Framework.Communications
92 92
93 93
94 /// <summary> 94 /// <summary>
95 /// if an exception occours during async processing, we need to save it, so it can be 95 /// if an exception occours during async processing, we need to save it, so it can be
96 /// rethrown on the primary thread; 96 /// rethrown on the primary thread;
97 /// </summary> 97 /// </summary>
98 private Exception _asyncException; 98 private Exception _asyncException;
@@ -341,7 +341,7 @@ namespace OpenSim.Framework.Communications
341 { 341 {
342 AsyncResult<Stream> ar = (AsyncResult<Stream>) asyncResult; 342 AsyncResult<Stream> ar = (AsyncResult<Stream>) asyncResult;
343 343
344 // Wait for operation to complete, then return result or 344 // Wait for operation to complete, then return result or
345 // throw exception 345 // throw exception
346 return ar.EndInvoke(); 346 return ar.EndInvoke();
347 } 347 }
diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs
index 8e0b75c..5a62682 100644
--- a/OpenSim/Framework/Communications/UserManagerBase.cs
+++ b/OpenSim/Framework/Communications/UserManagerBase.cs
@@ -43,12 +43,12 @@ namespace OpenSim.Framework.Communications
43 /// </summary> 43 /// </summary>
44 public abstract class UserManagerBase : IUserService 44 public abstract class UserManagerBase : IUserService
45 { 45 {
46 private static readonly ILog m_log 46 private static readonly ILog m_log
47 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48 48
49 public UserConfig _config; 49 public UserConfig _config;
50 private Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>(); 50 private Dictionary<string, IUserData> _plugins = new Dictionary<string, IUserData>();
51 51
52 /// <summary> 52 /// <summary>
53 /// Adds a new user server plugin - user servers will be requested in the order they were loaded. 53 /// Adds a new user server plugin - user servers will be requested in the order they were loaded.
54 /// </summary> 54 /// </summary>
@@ -85,7 +85,7 @@ namespace OpenSim.Framework.Communications
85 m_log.Info("[USERSTORAGE]: Added IUserData Interface"); 85 m_log.Info("[USERSTORAGE]: Added IUserData Interface");
86 } 86 }
87 87
88 #region Get UserProfile 88 #region Get UserProfile
89 89
90 // see IUserService 90 // see IUserService
91 public UserProfileData GetUserProfile(string fname, string lname) 91 public UserProfileData GetUserProfile(string fname, string lname)
@@ -103,8 +103,8 @@ namespace OpenSim.Framework.Communications
103 103
104 return null; 104 return null;
105 } 105 }
106 106
107 // see IUserService 107 // see IUserService
108 public UserProfileData GetUserProfile(LLUUID uuid) 108 public UserProfileData GetUserProfile(LLUUID uuid)
109 { 109 {
110 foreach (KeyValuePair<string, IUserData> plugin in _plugins) 110 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
@@ -408,7 +408,7 @@ namespace OpenSim.Framework.Communications
408 408
409 profile.CurrentAgent = agent; 409 profile.CurrentAgent = agent;
410 } 410 }
411 411
412 /// <summary> 412 /// <summary>
413 /// Process a user logoff from OpenSim. 413 /// Process a user logoff from OpenSim.
414 /// </summary> 414 /// </summary>
@@ -422,7 +422,7 @@ namespace OpenSim.Framework.Communications
422 { 422 {
423 if (StatsManager.UserStats != null) 423 if (StatsManager.UserStats != null)
424 StatsManager.UserStats.AddLogout(); 424 StatsManager.UserStats.AddLogout();
425 425
426 UserProfileData userProfile; 426 UserProfileData userProfile;
427 UserAgentData userAgent; 427 UserAgentData userAgent;
428 LLVector3 currentPos = new LLVector3(posx, posy, posz); 428 LLVector3 currentPos = new LLVector3(posx, posy, posz);
@@ -433,7 +433,7 @@ namespace OpenSim.Framework.Communications
433 { 433 {
434 // This line needs to be in side the above if statement or the UserServer will crash on some logouts. 434 // This line needs to be in side the above if statement or the UserServer will crash on some logouts.
435 m_log.Info("[LOGOUT]: " + userProfile.FirstName + " " + userProfile.SurName + " from " + regionhandle + "(" + posx + "," + posy + "," + posz + ")"); 435 m_log.Info("[LOGOUT]: " + userProfile.FirstName + " " + userProfile.SurName + " from " + regionhandle + "(" + posx + "," + posy + "," + posz + ")");
436 436
437 userAgent = userProfile.CurrentAgent; 437 userAgent = userProfile.CurrentAgent;
438 if (userAgent != null) 438 if (userAgent != null)
439 { 439 {
@@ -462,7 +462,7 @@ namespace OpenSim.Framework.Communications
462 m_log.Warn("[LOGOUT]: Unknown User logged out"); 462 m_log.Warn("[LOGOUT]: Unknown User logged out");
463 } 463 }
464 } 464 }
465 465
466 public void CreateAgent(UserProfileData profile, LLSD request) 466 public void CreateAgent(UserProfileData profile, LLSD request)
467 { 467 {
468 UserAgentData agent = new UserAgentData(); 468 UserAgentData agent = new UserAgentData();
@@ -516,7 +516,7 @@ namespace OpenSim.Framework.Communications
516 #endregion 516 #endregion
517 517
518 /// <summary> 518 /// <summary>
519 /// 519 ///
520 /// </summary> 520 /// </summary>
521 /// <param name="user"></param> 521 /// <param name="user"></param>
522 public LLUUID AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY) 522 public LLUUID AddUserProfile(string firstName, string lastName, string pass, uint regX, uint regY)
@@ -598,7 +598,7 @@ namespace OpenSim.Framework.Communications
598 598
599 /// Appearance 599 /// Appearance
600 /// TODO: stubs for now to get us to a compiling state gently 600 /// TODO: stubs for now to get us to a compiling state gently
601 public AvatarAppearance GetUserAppearance(LLUUID user) 601 public AvatarAppearance GetUserAppearance(LLUUID user)
602 { 602 {
603 foreach (KeyValuePair<string, IUserData> plugin in _plugins) 603 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
604 { 604 {
@@ -643,7 +643,7 @@ namespace OpenSim.Framework.Communications
643 } 643 }
644 } 644 }
645 } 645 }
646 646
647 public void RemoveAttachment(LLUUID user, LLUUID item) 647 public void RemoveAttachment(LLUUID user, LLUUID item)
648 { 648 {
649 foreach (KeyValuePair<string, IUserData> plugin in _plugins) 649 foreach (KeyValuePair<string, IUserData> plugin in _plugins)
@@ -658,7 +658,7 @@ namespace OpenSim.Framework.Communications
658 } 658 }
659 } 659 }
660 } 660 }
661 661
662 public List<LLUUID> GetAttachments(LLUUID user) 662 public List<LLUUID> GetAttachments(LLUUID user)
663 { 663 {
664 foreach (KeyValuePair<string, IUserData> plugin in _plugins) 664 foreach (KeyValuePair<string, IUserData> plugin in _plugins)