aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/AssetBase.cs8
-rw-r--r--OpenSim/Framework/AvatarAppearance.cs73
-rw-r--r--OpenSim/Framework/AvatarWearable.cs18
-rw-r--r--OpenSim/Framework/ChildAgentDataUpdate.cs36
-rw-r--r--OpenSim/Framework/Communications/RestClient.cs2
-rw-r--r--OpenSim/Framework/EstateSettings.cs56
-rw-r--r--OpenSim/Framework/ExtraPhysicsData.cs50
-rw-r--r--OpenSim/Framework/IClientAPI.cs24
-rw-r--r--OpenSim/Framework/IMoneyModule.cs1
-rw-r--r--OpenSim/Framework/LandData.cs2
-rw-r--r--OpenSim/Framework/ObjectChangeData.cs80
-rw-r--r--OpenSim/Framework/ParcelMediaCommandEnum.cs2
-rw-r--r--OpenSim/Framework/PluginLoader.cs17
-rw-r--r--OpenSim/Framework/PrimitiveBaseShape.cs38
-rw-r--r--OpenSim/Framework/RegionInfo.cs15
-rw-r--r--OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs118
-rw-r--r--OpenSim/Framework/RegionSettings.cs22
-rw-r--r--OpenSim/Framework/Servers/BaseOpenSimServer.cs2
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs31
-rw-r--r--OpenSim/Framework/Servers/VersionInfo.cs6
-rw-r--r--OpenSim/Framework/TaskInventoryDictionary.cs164
-rw-r--r--OpenSim/Framework/TaskInventoryItem.cs12
-rw-r--r--OpenSim/Framework/Tests/MundaneFrameworkTests.cs6
-rw-r--r--OpenSim/Framework/Util.cs46
-rw-r--r--OpenSim/Framework/Watchdog.cs4
-rw-r--r--OpenSim/Framework/WebUtil.cs12
26 files changed, 707 insertions, 138 deletions
diff --git a/OpenSim/Framework/AssetBase.cs b/OpenSim/Framework/AssetBase.cs
index d2c6c57..ff240be 100644
--- a/OpenSim/Framework/AssetBase.cs
+++ b/OpenSim/Framework/AssetBase.cs
@@ -60,6 +60,8 @@ namespace OpenSim.Framework
60 /// </summary> 60 /// </summary>
61 private AssetMetadata m_metadata; 61 private AssetMetadata m_metadata;
62 62
63 private int m_uploadAttempts;
64
63 // This is needed for .NET serialization!!! 65 // This is needed for .NET serialization!!!
64 // Do NOT "Optimize" away! 66 // Do NOT "Optimize" away!
65 public AssetBase() 67 public AssetBase()
@@ -198,6 +200,12 @@ namespace OpenSim.Framework
198 set { m_metadata.Type = value; } 200 set { m_metadata.Type = value; }
199 } 201 }
200 202
203 public int UploadAttempts
204 {
205 get { return m_uploadAttempts; }
206 set { m_uploadAttempts = value; }
207 }
208
201 /// <summary> 209 /// <summary>
202 /// Is this a region only asset, or does this exist on the asset server also 210 /// Is this a region only asset, or does this exist on the asset server also
203 /// </summary> 211 /// </summary>
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs
index 4f598b0..c5d9641 100644
--- a/OpenSim/Framework/AvatarAppearance.cs
+++ b/OpenSim/Framework/AvatarAppearance.cs
@@ -42,6 +42,8 @@ namespace OpenSim.Framework
42 { 42 {
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44 44
45 // this is viewer capabilities and weared things dependent
46 // should be only used as initial default value ( V1 viewers )
45 public readonly static int VISUALPARAM_COUNT = 218; 47 public readonly static int VISUALPARAM_COUNT = 218;
46 48
47 public readonly static int TEXTURE_COUNT = 21; 49 public readonly static int TEXTURE_COUNT = 21;
@@ -240,6 +242,21 @@ namespace OpenSim.Framework
240// } 242// }
241 } 243 }
242 244
245 /// <summary>
246 /// Invalidate all of the baked textures in the appearance, useful
247 /// if you know that none are valid
248 /// </summary>
249 public virtual void ResetBakedTextures()
250 {
251 SetDefaultTexture();
252
253 //for (int i = 0; i < BAKE_INDICES.Length; i++)
254 // {
255 // int idx = BAKE_INDICES[i];
256 // m_texture.FaceTextures[idx].TextureID = UUID.Zero;
257 // }
258 }
259
243 protected virtual void SetDefaultTexture() 260 protected virtual void SetDefaultTexture()
244 { 261 {
245 m_texture = new Primitive.TextureEntry(new UUID(AppearanceManager.DEFAULT_AVATAR_TEXTURE)); 262 m_texture = new Primitive.TextureEntry(new UUID(AppearanceManager.DEFAULT_AVATAR_TEXTURE));
@@ -304,19 +321,30 @@ namespace OpenSim.Framework
304 // made. We determine if any of the visual parameters actually 321 // made. We determine if any of the visual parameters actually
305 // changed to know if the appearance should be saved later 322 // changed to know if the appearance should be saved later
306 bool changed = false; 323 bool changed = false;
307 for (int i = 0; i < AvatarAppearance.VISUALPARAM_COUNT; i++) 324
325 int newsize = visualParams.Length;
326
327 if (newsize != m_visualparams.Length)
308 { 328 {
309 if (visualParams[i] != m_visualparams[i]) 329 changed = true;
330 m_visualparams = (byte[])visualParams.Clone();
331 }
332 else
333 {
334
335 for (int i = 0; i < newsize; i++)
310 { 336 {
311// DEBUG ON 337 if (visualParams[i] != m_visualparams[i])
312// m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}", 338 {
313// i,m_visualparams[i],visualParams[i]); 339 // DEBUG ON
314// DEBUG OFF 340 // m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}",
315 m_visualparams[i] = visualParams[i]; 341 // i,m_visualparams[i],visualParams[i]);
316 changed = true; 342 // DEBUG OFF
343 m_visualparams[i] = visualParams[i];
344 changed = true;
345 }
317 } 346 }
318 } 347 }
319
320 // Reset the height if the visual parameters actually changed 348 // Reset the height if the visual parameters actually changed
321 if (changed) 349 if (changed)
322 SetHeight(); 350 SetHeight();
@@ -374,7 +402,8 @@ namespace OpenSim.Framework
374 } 402 }
375 403
376 s += "Visual Params: "; 404 s += "Visual Params: ";
377 for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) 405 // for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++)
406 for (uint j = 0; j < m_visualparams.Length; j++)
378 s += String.Format("{0},",m_visualparams[j]); 407 s += String.Format("{0},",m_visualparams[j]);
379 s += "\n"; 408 s += "\n";
380 409
@@ -390,19 +419,18 @@ namespace OpenSim.Framework
390 /// </remarks> 419 /// </remarks>
391 public List<AvatarAttachment> GetAttachments() 420 public List<AvatarAttachment> GetAttachments()
392 { 421 {
393 List<AvatarAttachment> alist = new List<AvatarAttachment>(); 422
394 423
395 lock (m_attachments) 424 lock (m_attachments)
396 { 425 {
426 List<AvatarAttachment> alist = new List<AvatarAttachment>();
397 foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments) 427 foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments)
398 { 428 {
399 foreach (AvatarAttachment attach in kvp.Value) 429 foreach (AvatarAttachment attach in kvp.Value)
400 alist.Add(new AvatarAttachment(attach)); 430 alist.Add(new AvatarAttachment(attach));
401 } 431 }
402 } 432 return alist;
403 433 } }
404 return alist;
405 }
406 434
407 internal void AppendAttachment(AvatarAttachment attach) 435 internal void AppendAttachment(AvatarAttachment attach)
408 { 436 {
@@ -531,7 +559,6 @@ namespace OpenSim.Framework
531 return kvp.Key; 559 return kvp.Key;
532 } 560 }
533 } 561 }
534
535 return 0; 562 return 0;
536 } 563 }
537 564
@@ -598,12 +625,14 @@ namespace OpenSim.Framework
598 OSDBinary visualparams = new OSDBinary(m_visualparams); 625 OSDBinary visualparams = new OSDBinary(m_visualparams);
599 data["visualparams"] = visualparams; 626 data["visualparams"] = visualparams;
600 627
601 // Attachments 628 lock (m_attachments)
602 List<AvatarAttachment> attachments = GetAttachments(); 629 {
603 OSDArray attachs = new OSDArray(attachments.Count); 630 // Attachments
604 foreach (AvatarAttachment attach in GetAttachments()) 631 OSDArray attachs = new OSDArray(m_attachments.Count);
605 attachs.Add(attach.Pack()); 632 foreach (AvatarAttachment attach in GetAttachments())
606 data["attachments"] = attachs; 633 attachs.Add(attach.Pack());
634 data["attachments"] = attachs;
635 }
607 636
608 return data; 637 return data;
609 } 638 }
diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs
index 8e27596..aee295a 100644
--- a/OpenSim/Framework/AvatarWearable.cs
+++ b/OpenSim/Framework/AvatarWearable.cs
@@ -62,9 +62,14 @@ namespace OpenSim.Framework
62 public static readonly int UNDERSHIRT = 10; 62 public static readonly int UNDERSHIRT = 10;
63 public static readonly int UNDERPANTS = 11; 63 public static readonly int UNDERPANTS = 11;
64 public static readonly int SKIRT = 12; 64 public static readonly int SKIRT = 12;
65
66 public static readonly int MAX_BASICWEARABLES = 13;
67
65 public static readonly int ALPHA = 13; 68 public static readonly int ALPHA = 13;
66 public static readonly int TATTOO = 14; 69 public static readonly int TATTOO = 14;
70// public static readonly int PHYSICS = 15;
67 71
72 // public static readonly int MAX_WEARABLES = 16;
68 public static readonly int MAX_WEARABLES = 15; 73 public static readonly int MAX_WEARABLES = 15;
69 74
70 public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); 75 public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9");
@@ -219,7 +224,7 @@ namespace OpenSim.Framework
219 { 224 {
220 get 225 get
221 { 226 {
222 AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these 227 AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES];
223 for (int i = 0; i < MAX_WEARABLES; i++) 228 for (int i = 0; i < MAX_WEARABLES; i++)
224 { 229 {
225 defaultWearables[i] = new AvatarWearable(); 230 defaultWearables[i] = new AvatarWearable();
@@ -242,10 +247,13 @@ namespace OpenSim.Framework
242 247
243// // Alpha 248// // Alpha
244// defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET); 249// defaultWearables[ALPHA].Add(DEFAULT_ALPHA_ITEM, DEFAULT_ALPHA_ASSET);
245 250
246// // Tattoo 251 // // Tattoo
247// defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET); 252 // defaultWearables[TATTOO].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET);
248 253
254 // // Physics
255 // defaultWearables[PHYSICS].Add(DEFAULT_TATTOO_ITEM, DEFAULT_TATTOO_ASSET);
256
249 return defaultWearables; 257 return defaultWearables;
250 } 258 }
251 } 259 }
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs
index 6d048f4..e718aa6 100644
--- a/OpenSim/Framework/ChildAgentDataUpdate.cs
+++ b/OpenSim/Framework/ChildAgentDataUpdate.cs
@@ -229,12 +229,14 @@ namespace OpenSim.Framework
229 229
230 public class ControllerData 230 public class ControllerData
231 { 231 {
232 public UUID ObjectID;
232 public UUID ItemID; 233 public UUID ItemID;
233 public uint IgnoreControls; 234 public uint IgnoreControls;
234 public uint EventControls; 235 public uint EventControls;
235 236
236 public ControllerData(UUID item, uint ignore, uint ev) 237 public ControllerData(UUID obj, UUID item, uint ignore, uint ev)
237 { 238 {
239 ObjectID = obj;
238 ItemID = item; 240 ItemID = item;
239 IgnoreControls = ignore; 241 IgnoreControls = ignore;
240 EventControls = ev; 242 EventControls = ev;
@@ -248,6 +250,7 @@ namespace OpenSim.Framework
248 public OSDMap PackUpdateMessage() 250 public OSDMap PackUpdateMessage()
249 { 251 {
250 OSDMap controldata = new OSDMap(); 252 OSDMap controldata = new OSDMap();
253 controldata["object"] = OSD.FromUUID(ObjectID);
251 controldata["item"] = OSD.FromUUID(ItemID); 254 controldata["item"] = OSD.FromUUID(ItemID);
252 controldata["ignore"] = OSD.FromInteger(IgnoreControls); 255 controldata["ignore"] = OSD.FromInteger(IgnoreControls);
253 controldata["event"] = OSD.FromInteger(EventControls); 256 controldata["event"] = OSD.FromInteger(EventControls);
@@ -258,6 +261,8 @@ namespace OpenSim.Framework
258 261
259 public void UnpackUpdateMessage(OSDMap args) 262 public void UnpackUpdateMessage(OSDMap args)
260 { 263 {
264 if (args["object"] != null)
265 ObjectID = args["object"].AsUUID();
261 if (args["item"] != null) 266 if (args["item"] != null)
262 ItemID = args["item"].AsUUID(); 267 ItemID = args["item"].AsUUID();
263 if (args["ignore"] != null) 268 if (args["ignore"] != null)
@@ -306,8 +311,11 @@ namespace OpenSim.Framework
306 311
307 public AgentGroupData[] Groups; 312 public AgentGroupData[] Groups;
308 public Animation[] Anims; 313 public Animation[] Anims;
314 public Animation DefaultAnim = null;
309 315
310 public UUID GranterID; 316 public UUID GranterID;
317 public UUID ParentPart;
318 public Vector3 SitOffset;
311 319
312 // Appearance 320 // Appearance
313 public AvatarAppearance Appearance; 321 public AvatarAppearance Appearance;
@@ -390,6 +398,11 @@ namespace OpenSim.Framework
390 args["animations"] = anims; 398 args["animations"] = anims;
391 } 399 }
392 400
401 if (DefaultAnim != null)
402 {
403 args["default_animation"] = DefaultAnim.PackUpdateMessage();
404 }
405
393 if (Appearance != null) 406 if (Appearance != null)
394 args["packed_appearance"] = Appearance.Pack(); 407 args["packed_appearance"] = Appearance.Pack();
395 408
@@ -468,6 +481,10 @@ namespace OpenSim.Framework
468 } 481 }
469 args["attach_objects"] = attObjs; 482 args["attach_objects"] = attObjs;
470 } 483 }
484
485 args["parent_part"] = OSD.FromUUID(ParentPart);
486 args["sit_offset"] = OSD.FromString(SitOffset.ToString());
487
471 return args; 488 return args;
472 } 489 }
473 490
@@ -583,6 +600,18 @@ namespace OpenSim.Framework
583 } 600 }
584 } 601 }
585 602
603 if (args["default_animation"] != null)
604 {
605 try
606 {
607 DefaultAnim = new Animation((OSDMap)args["default_animation"]);
608 }
609 catch
610 {
611 DefaultAnim = null;
612 }
613 }
614
586 //if ((args["agent_textures"] != null) && (args["agent_textures"]).Type == OSDType.Array) 615 //if ((args["agent_textures"] != null) && (args["agent_textures"]).Type == OSDType.Array)
587 //{ 616 //{
588 // OSDArray textures = (OSDArray)(args["agent_textures"]); 617 // OSDArray textures = (OSDArray)(args["agent_textures"]);
@@ -675,6 +704,11 @@ namespace OpenSim.Framework
675 } 704 }
676 } 705 }
677 } 706 }
707
708 if (args["parent_part"] != null)
709 ParentPart = args["parent_part"].AsUUID();
710 if (args["sit_offset"] != null)
711 Vector3.TryParse(args["sit_offset"].AsString(), out SitOffset);
678 } 712 }
679 713
680 public AgentData() 714 public AgentData()
diff --git a/OpenSim/Framework/Communications/RestClient.cs b/OpenSim/Framework/Communications/RestClient.cs
index 97b3b60..42c0b18 100644
--- a/OpenSim/Framework/Communications/RestClient.cs
+++ b/OpenSim/Framework/Communications/RestClient.cs
@@ -363,7 +363,7 @@ namespace OpenSim.Framework.Communications
363 _request = (HttpWebRequest) WebRequest.Create(buildUri()); 363 _request = (HttpWebRequest) WebRequest.Create(buildUri());
364 _request.KeepAlive = false; 364 _request.KeepAlive = false;
365 _request.ContentType = "application/xml"; 365 _request.ContentType = "application/xml";
366 _request.Timeout = 900000; 366 _request.Timeout = 30000;
367 _request.Method = RequestMethod; 367 _request.Method = RequestMethod;
368 _asyncException = null; 368 _asyncException = null;
369 _request.ContentLength = src.Length; 369 _request.ContentLength = src.Length;
diff --git a/OpenSim/Framework/EstateSettings.cs b/OpenSim/Framework/EstateSettings.cs
index a92abbf..9020761 100644
--- a/OpenSim/Framework/EstateSettings.cs
+++ b/OpenSim/Framework/EstateSettings.cs
@@ -58,6 +58,30 @@ namespace OpenSim.Framework
58 set { m_EstateName = value; } 58 set { m_EstateName = value; }
59 } 59 }
60 60
61 private bool m_AllowLandmark = true;
62
63 public bool AllowLandmark
64 {
65 get { return m_AllowLandmark; }
66 set { m_AllowLandmark = value; }
67 }
68
69 private bool m_AllowParcelChanges = true;
70
71 public bool AllowParcelChanges
72 {
73 get { return m_AllowParcelChanges; }
74 set { m_AllowParcelChanges = value; }
75 }
76
77 private bool m_AllowSetHome = true;
78
79 public bool AllowSetHome
80 {
81 get { return m_AllowSetHome; }
82 set { m_AllowSetHome = value; }
83 }
84
61 private uint m_ParentEstateID = 1; 85 private uint m_ParentEstateID = 1;
62 86
63 public uint ParentEstateID 87 public uint ParentEstateID
@@ -338,11 +362,30 @@ namespace OpenSim.Framework
338 return false; 362 return false;
339 } 363 }
340 364
341 public bool IsBanned(UUID avatarID) 365 public bool IsBanned(UUID avatarID, int userFlags)
342 { 366 {
343 foreach (EstateBan ban in l_EstateBans) 367 foreach (EstateBan ban in l_EstateBans)
344 if (ban.BannedUserID == avatarID) 368 if (ban.BannedUserID == avatarID)
345 return true; 369 return true;
370
371 if (!IsEstateManagerOrOwner(avatarID) && !HasAccess(avatarID))
372 {
373 if (DenyMinors)
374 {
375 if ((userFlags & 32) == 0)
376 {
377 return true;
378 }
379 }
380 if (DenyAnonymous)
381 {
382 if ((userFlags & 4) == 0)
383 {
384 return true;
385 }
386 }
387 }
388
346 return false; 389 return false;
347 } 390 }
348 391
@@ -350,7 +393,7 @@ namespace OpenSim.Framework
350 { 393 {
351 if (ban == null) 394 if (ban == null)
352 return; 395 return;
353 if (!IsBanned(ban.BannedUserID)) 396 if (!IsBanned(ban.BannedUserID, 32)) //Ignore age-based bans
354 l_EstateBans.Add(ban); 397 l_EstateBans.Add(ban);
355 } 398 }
356 399
@@ -374,6 +417,15 @@ namespace OpenSim.Framework
374 return l_EstateAccess.Contains(user); 417 return l_EstateAccess.Contains(user);
375 } 418 }
376 419
420 public void SetFromFlags(ulong regionFlags)
421 {
422 ResetHomeOnTeleport = ((regionFlags & (ulong)RegionFlags.ResetHomeOnTeleport) == (ulong)RegionFlags.ResetHomeOnTeleport);
423 BlockDwell = ((regionFlags & (ulong)RegionFlags.BlockDwell) == (ulong)RegionFlags.BlockDwell);
424 AllowLandmark = ((regionFlags & (ulong)RegionFlags.AllowLandmark) == (ulong)RegionFlags.AllowLandmark);
425 AllowParcelChanges = ((regionFlags & (ulong)RegionFlags.AllowParcelChanges) == (ulong)RegionFlags.AllowParcelChanges);
426 AllowSetHome = ((regionFlags & (ulong)RegionFlags.AllowSetHome) == (ulong)RegionFlags.AllowSetHome);
427 }
428
377 public bool GroupAccess(UUID groupID) 429 public bool GroupAccess(UUID groupID)
378 { 430 {
379 return l_EstateGroups.Contains(groupID); 431 return l_EstateGroups.Contains(groupID);
diff --git a/OpenSim/Framework/ExtraPhysicsData.cs b/OpenSim/Framework/ExtraPhysicsData.cs
new file mode 100644
index 0000000..9e7334f
--- /dev/null
+++ b/OpenSim/Framework/ExtraPhysicsData.cs
@@ -0,0 +1,50 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
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
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using OpenMetaverse;
29
30namespace OpenSim.Framework
31{
32 public enum PhysShapeType : byte
33 {
34 prim = 0,
35 none = 1,
36 convex = 2,
37
38 invalid = 255 // use to mark invalid data in ExtraPhysicsData
39 }
40
41 public struct ExtraPhysicsData
42 {
43 public float Density;
44 public float GravitationModifier;
45 public float Friction;
46 public float Bounce;
47 public PhysShapeType PhysShapeType;
48
49 }
50}
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 869b069..c1bd078 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -70,6 +70,8 @@ namespace OpenSim.Framework
70 70
71 public delegate void StopAnim(IClientAPI remoteClient, UUID animID); 71 public delegate void StopAnim(IClientAPI remoteClient, UUID animID);
72 72
73 public delegate void ChangeAnim(UUID animID, bool addOrRemove, bool sendPack);
74
73 public delegate void LinkObjects(IClientAPI remoteClient, uint parent, List<uint> children); 75 public delegate void LinkObjects(IClientAPI remoteClient, uint parent, List<uint> children);
74 76
75 public delegate void DelinkObjects(List<uint> primIds, IClientAPI client); 77 public delegate void DelinkObjects(List<uint> primIds, IClientAPI client);
@@ -124,12 +126,14 @@ namespace OpenSim.Framework
124 public delegate void ObjectDrop(uint localID, IClientAPI remoteClient); 126 public delegate void ObjectDrop(uint localID, IClientAPI remoteClient);
125 127
126 public delegate void UpdatePrimFlags( 128 public delegate void UpdatePrimFlags(
127 uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom, IClientAPI remoteClient); 129 uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom,ExtraPhysicsData PhysData, IClientAPI remoteClient);
128 130
129 public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient); 131 public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
130 132
131 public delegate void UpdateVector(uint localID, Vector3 pos, IClientAPI remoteClient); 133 public delegate void UpdateVector(uint localID, Vector3 pos, IClientAPI remoteClient);
132 134
135 public delegate void ClientChangeObject(uint localID, object data ,IClientAPI remoteClient);
136
133 public delegate void UpdatePrimRotation(uint localID, Quaternion rot, IClientAPI remoteClient); 137 public delegate void UpdatePrimRotation(uint localID, Quaternion rot, IClientAPI remoteClient);
134 138
135 public delegate void UpdatePrimSingleRotation(uint localID, Quaternion rot, IClientAPI remoteClient); 139 public delegate void UpdatePrimSingleRotation(uint localID, Quaternion rot, IClientAPI remoteClient);
@@ -266,6 +270,9 @@ namespace OpenSim.Framework
266 public delegate void MoveInventoryItem( 270 public delegate void MoveInventoryItem(
267 IClientAPI remoteClient, List<InventoryItemBase> items); 271 IClientAPI remoteClient, List<InventoryItemBase> items);
268 272
273 public delegate void MoveItemsAndLeaveCopy(
274 IClientAPI remoteClient, List<InventoryItemBase> items, UUID destFolder);
275
269 public delegate void RemoveInventoryItem( 276 public delegate void RemoveInventoryItem(
270 IClientAPI remoteClient, List<UUID> itemIDs); 277 IClientAPI remoteClient, List<UUID> itemIDs);
271 278
@@ -441,6 +448,7 @@ namespace OpenSim.Framework
441 public delegate void ClassifiedInfoRequest(UUID classifiedID, IClientAPI client); 448 public delegate void ClassifiedInfoRequest(UUID classifiedID, IClientAPI client);
442 public delegate void ClassifiedInfoUpdate(UUID classifiedID, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, Vector3 globalPos, byte classifiedFlags, int price, IClientAPI client); 449 public delegate void ClassifiedInfoUpdate(UUID classifiedID, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, Vector3 globalPos, byte classifiedFlags, int price, IClientAPI client);
443 public delegate void ClassifiedDelete(UUID classifiedID, IClientAPI client); 450 public delegate void ClassifiedDelete(UUID classifiedID, IClientAPI client);
451 public delegate void ClassifiedGodDelete(UUID classifiedID, UUID queryID, IClientAPI client);
444 452
445 public delegate void EventNotificationAddRequest(uint EventID, IClientAPI client); 453 public delegate void EventNotificationAddRequest(uint EventID, IClientAPI client);
446 public delegate void EventNotificationRemoveRequest(uint EventID, IClientAPI client); 454 public delegate void EventNotificationRemoveRequest(uint EventID, IClientAPI client);
@@ -463,9 +471,9 @@ namespace OpenSim.Framework
463 471
464 public delegate void AgentFOV(IClientAPI client, float verticalAngle); 472 public delegate void AgentFOV(IClientAPI client, float verticalAngle);
465 473
466 public delegate void MuteListEntryUpdate(IClientAPI client, UUID MuteID, string Name, int Flags,UUID AgentID); 474 public delegate void MuteListEntryUpdate(IClientAPI client, UUID MuteID, string Name, int type, uint flags);
467 475
468 public delegate void MuteListEntryRemove(IClientAPI client, UUID MuteID, string Name, UUID AgentID); 476 public delegate void MuteListEntryRemove(IClientAPI client, UUID MuteID, string Name);
469 477
470 public delegate void AvatarInterestReply(IClientAPI client,UUID target, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages); 478 public delegate void AvatarInterestReply(IClientAPI client,UUID target, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages);
471 479
@@ -503,6 +511,7 @@ namespace OpenSim.Framework
503 public delegate void SimWideDeletesDelegate(IClientAPI client,UUID agentID, int flags, UUID targetID); 511 public delegate void SimWideDeletesDelegate(IClientAPI client,UUID agentID, int flags, UUID targetID);
504 512
505 public delegate void SendPostcard(IClientAPI client); 513 public delegate void SendPostcard(IClientAPI client);
514 public delegate void ChangeInventoryItemFlags(IClientAPI client, UUID itemID, uint flags);
506 515
507 #endregion 516 #endregion
508 517
@@ -784,6 +793,7 @@ namespace OpenSim.Framework
784 event ObjectDrop OnObjectDrop; 793 event ObjectDrop OnObjectDrop;
785 event StartAnim OnStartAnim; 794 event StartAnim OnStartAnim;
786 event StopAnim OnStopAnim; 795 event StopAnim OnStopAnim;
796 event ChangeAnim OnChangeAnim;
787 event LinkObjects OnLinkObjects; 797 event LinkObjects OnLinkObjects;
788 event DelinkObjects OnDelinkObjects; 798 event DelinkObjects OnDelinkObjects;
789 event RequestMapBlocks OnRequestMapBlocks; 799 event RequestMapBlocks OnRequestMapBlocks;
@@ -833,6 +843,7 @@ namespace OpenSim.Framework
833 event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 843 event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
834 event UpdatePrimFlags OnUpdatePrimFlags; 844 event UpdatePrimFlags OnUpdatePrimFlags;
835 event UpdatePrimTexture OnUpdatePrimTexture; 845 event UpdatePrimTexture OnUpdatePrimTexture;
846 event ClientChangeObject onClientChangeObject;
836 event UpdateVector OnUpdatePrimGroupPosition; 847 event UpdateVector OnUpdatePrimGroupPosition;
837 event UpdateVector OnUpdatePrimSinglePosition; 848 event UpdateVector OnUpdatePrimSinglePosition;
838 event UpdatePrimRotation OnUpdatePrimGroupRotation; 849 event UpdatePrimRotation OnUpdatePrimGroupRotation;
@@ -857,6 +868,7 @@ namespace OpenSim.Framework
857 event RequestTaskInventory OnRequestTaskInventory; 868 event RequestTaskInventory OnRequestTaskInventory;
858 event UpdateInventoryItem OnUpdateInventoryItem; 869 event UpdateInventoryItem OnUpdateInventoryItem;
859 event CopyInventoryItem OnCopyInventoryItem; 870 event CopyInventoryItem OnCopyInventoryItem;
871 event MoveItemsAndLeaveCopy OnMoveItemsAndLeaveCopy;
860 event MoveInventoryItem OnMoveInventoryItem; 872 event MoveInventoryItem OnMoveInventoryItem;
861 event RemoveInventoryFolder OnRemoveInventoryFolder; 873 event RemoveInventoryFolder OnRemoveInventoryFolder;
862 event RemoveInventoryItem OnRemoveInventoryItem; 874 event RemoveInventoryItem OnRemoveInventoryItem;
@@ -975,7 +987,7 @@ namespace OpenSim.Framework
975 event ClassifiedInfoRequest OnClassifiedInfoRequest; 987 event ClassifiedInfoRequest OnClassifiedInfoRequest;
976 event ClassifiedInfoUpdate OnClassifiedInfoUpdate; 988 event ClassifiedInfoUpdate OnClassifiedInfoUpdate;
977 event ClassifiedDelete OnClassifiedDelete; 989 event ClassifiedDelete OnClassifiedDelete;
978 event ClassifiedDelete OnClassifiedGodDelete; 990 event ClassifiedGodDelete OnClassifiedGodDelete;
979 991
980 event EventNotificationAddRequest OnEventNotificationAddRequest; 992 event EventNotificationAddRequest OnEventNotificationAddRequest;
981 event EventNotificationRemoveRequest OnEventNotificationRemoveRequest; 993 event EventNotificationRemoveRequest OnEventNotificationRemoveRequest;
@@ -1014,6 +1026,7 @@ namespace OpenSim.Framework
1014 event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; 1026 event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
1015 event SimWideDeletesDelegate OnSimWideDeletes; 1027 event SimWideDeletesDelegate OnSimWideDeletes;
1016 event SendPostcard OnSendPostcard; 1028 event SendPostcard OnSendPostcard;
1029 event ChangeInventoryItemFlags OnChangeInventoryItemFlags;
1017 event MuteListEntryUpdate OnUpdateMuteListEntry; 1030 event MuteListEntryUpdate OnUpdateMuteListEntry;
1018 event MuteListEntryRemove OnRemoveMuteListEntry; 1031 event MuteListEntryRemove OnRemoveMuteListEntry;
1019 event GodlikeMessage onGodlikeMessage; 1032 event GodlikeMessage onGodlikeMessage;
@@ -1027,6 +1040,7 @@ namespace OpenSim.Framework
1027 void InPacket(object NewPack); 1040 void InPacket(object NewPack);
1028 void ProcessInPacket(Packet NewPack); 1041 void ProcessInPacket(Packet NewPack);
1029 void Close(); 1042 void Close();
1043 void Close(bool sendStop);
1030 void Kick(string message); 1044 void Kick(string message);
1031 1045
1032 /// <summary> 1046 /// <summary>
@@ -1308,6 +1322,8 @@ namespace OpenSim.Framework
1308 1322
1309 void SendObjectPropertiesReply(ISceneEntity Entity); 1323 void SendObjectPropertiesReply(ISceneEntity Entity);
1310 1324
1325 void SendPartPhysicsProprieties(ISceneEntity Entity);
1326
1311 void SendAgentOffline(UUID[] agentIDs); 1327 void SendAgentOffline(UUID[] agentIDs);
1312 1328
1313 void SendAgentOnline(UUID[] agentIDs); 1329 void SendAgentOnline(UUID[] agentIDs);
diff --git a/OpenSim/Framework/IMoneyModule.cs b/OpenSim/Framework/IMoneyModule.cs
index 1e09728..71de93a 100644
--- a/OpenSim/Framework/IMoneyModule.cs
+++ b/OpenSim/Framework/IMoneyModule.cs
@@ -40,6 +40,7 @@ namespace OpenSim.Framework
40 bool AmountCovered(UUID agentID, int amount); 40 bool AmountCovered(UUID agentID, int amount);
41 void ApplyCharge(UUID agentID, int amount, string text); 41 void ApplyCharge(UUID agentID, int amount, string text);
42 void ApplyUploadCharge(UUID agentID, int amount, string text); 42 void ApplyUploadCharge(UUID agentID, int amount, string text);
43 void MoveMoney(UUID fromUser, UUID toUser, int amount, string text);
43 44
44 int UploadCharge { get; } 45 int UploadCharge { get; }
45 int GroupCreationCharge { get; } 46 int GroupCreationCharge { get; }
diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs
index bf2ecf2..dcaa46d 100644
--- a/OpenSim/Framework/LandData.cs
+++ b/OpenSim/Framework/LandData.cs
@@ -67,7 +67,7 @@ namespace OpenSim.Framework
67 67
68 private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark | 68 private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark |
69 (uint) ParcelFlags.AllowAPrimitiveEntry | 69 (uint) ParcelFlags.AllowAPrimitiveEntry |
70 (uint) ParcelFlags.AllowDeedToGroup | (uint) ParcelFlags.AllowTerraform | 70 (uint) ParcelFlags.AllowDeedToGroup |
71 (uint) ParcelFlags.CreateObjects | (uint) ParcelFlags.AllowOtherScripts | 71 (uint) ParcelFlags.CreateObjects | (uint) ParcelFlags.AllowOtherScripts |
72 (uint) ParcelFlags.SoundLocal | (uint) ParcelFlags.AllowVoiceChat; 72 (uint) ParcelFlags.SoundLocal | (uint) ParcelFlags.AllowVoiceChat;
73 73
diff --git a/OpenSim/Framework/ObjectChangeData.cs b/OpenSim/Framework/ObjectChangeData.cs
new file mode 100644
index 0000000..8d56291
--- /dev/null
+++ b/OpenSim/Framework/ObjectChangeData.cs
@@ -0,0 +1,80 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
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
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using OpenMetaverse;
29
30namespace OpenSim.Framework
31{
32 public enum ObjectChangeType : uint
33 {
34 // bits definitions
35 Position = 0x01,
36 Rotation = 0x02,
37 Scale = 0x04,
38 Group = 0x08,
39 UniformScale = 0x10,
40
41 // macros from above
42 // single prim
43 primP = 0x01,
44 primR = 0x02,
45 primPR = 0x03,
46 primS = 0x04,
47 primPS = 0x05,
48 primRS = 0x06,
49 primPSR = 0x07,
50
51 primUS = 0x14,
52 primPUS = 0x15,
53 primRUS = 0x16,
54 primPUSR = 0x17,
55
56 // group
57 groupP = 0x09,
58 groupR = 0x0A,
59 groupPR = 0x0B,
60 groupS = 0x0C,
61 groupPS = 0x0D,
62 groupRS = 0x0E,
63 groupPSR = 0x0F,
64
65 groupUS = 0x1C,
66 groupPUS = 0x1D,
67 groupRUS = 0x1E,
68 groupPUSR = 0x1F,
69
70 PRSmask = 0x07
71 }
72
73 public struct ObjectChangeData
74 {
75 public Quaternion rotation;
76 public Vector3 position;
77 public Vector3 scale;
78 public ObjectChangeType change;
79 }
80}
diff --git a/OpenSim/Framework/ParcelMediaCommandEnum.cs b/OpenSim/Framework/ParcelMediaCommandEnum.cs
index 93c41ec..e714382 100644
--- a/OpenSim/Framework/ParcelMediaCommandEnum.cs
+++ b/OpenSim/Framework/ParcelMediaCommandEnum.cs
@@ -27,7 +27,7 @@
27 27
28namespace OpenSim.Framework 28namespace OpenSim.Framework
29{ 29{
30 public enum ParcelMediaCommandEnum 30 public enum ParcelMediaCommandEnum : int
31 { 31 {
32 Stop = 0, 32 Stop = 0,
33 Pause = 1, 33 Pause = 1,
diff --git a/OpenSim/Framework/PluginLoader.cs b/OpenSim/Framework/PluginLoader.cs
index 819cb7b..cc80943 100644
--- a/OpenSim/Framework/PluginLoader.cs
+++ b/OpenSim/Framework/PluginLoader.cs
@@ -244,13 +244,22 @@ namespace OpenSim.Framework
244 // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0) 244 // The Mono addin manager (in Mono.Addins.dll version 0.2.0.0)
245 // occasionally seems to corrupt its addin cache 245 // occasionally seems to corrupt its addin cache
246 // Hence, as a temporary solution we'll remove it before each startup 246 // Hence, as a temporary solution we'll remove it before each startup
247
248 string customDir = Environment.GetEnvironmentVariable ("MONO_ADDINS_REGISTRY");
249 string v0 = "addin-db-000";
250 string v1 = "addin-db-001";
251 if (customDir != null && customDir != String.Empty)
252 {
253 v0 = Path.Combine(customDir, v0);
254 v1 = Path.Combine(customDir, v1);
255 }
247 try 256 try
248 { 257 {
249 if (Directory.Exists("addin-db-000")) 258 if (Directory.Exists(v0))
250 Directory.Delete("addin-db-000", true); 259 Directory.Delete(v0, true);
251 260
252 if (Directory.Exists("addin-db-001")) 261 if (Directory.Exists(v1))
253 Directory.Delete("addin-db-001", true); 262 Directory.Delete(v1, true);
254 } 263 }
255 catch (IOException) 264 catch (IOException)
256 { 265 {
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs
index 76dcfca..fcc9873 100644
--- a/OpenSim/Framework/PrimitiveBaseShape.cs
+++ b/OpenSim/Framework/PrimitiveBaseShape.cs
@@ -724,7 +724,12 @@ namespace OpenSim.Framework
724 return _lightColorR; 724 return _lightColorR;
725 } 725 }
726 set { 726 set {
727 _lightColorR = value; 727 if (value < 0)
728 _lightColorR = 0;
729 else if (value > 1.0f)
730 _lightColorR = 1.0f;
731 else
732 _lightColorR = value;
728 } 733 }
729 } 734 }
730 735
@@ -733,7 +738,12 @@ namespace OpenSim.Framework
733 return _lightColorG; 738 return _lightColorG;
734 } 739 }
735 set { 740 set {
736 _lightColorG = value; 741 if (value < 0)
742 _lightColorG = 0;
743 else if (value > 1.0f)
744 _lightColorG = 1.0f;
745 else
746 _lightColorG = value;
737 } 747 }
738 } 748 }
739 749
@@ -742,7 +752,12 @@ namespace OpenSim.Framework
742 return _lightColorB; 752 return _lightColorB;
743 } 753 }
744 set { 754 set {
745 _lightColorB = value; 755 if (value < 0)
756 _lightColorB = 0;
757 else if (value > 1.0f)
758 _lightColorB = 1.0f;
759 else
760 _lightColorB = value;
746 } 761 }
747 } 762 }
748 763
@@ -751,7 +766,12 @@ namespace OpenSim.Framework
751 return _lightColorA; 766 return _lightColorA;
752 } 767 }
753 set { 768 set {
754 _lightColorA = value; 769 if (value < 0)
770 _lightColorA = 0;
771 else if (value > 1.0f)
772 _lightColorA = 1.0f;
773 else
774 _lightColorA = value;
755 } 775 }
756 } 776 }
757 777
@@ -865,6 +885,11 @@ namespace OpenSim.Framework
865 885
866 public ulong GetMeshKey(Vector3 size, float lod) 886 public ulong GetMeshKey(Vector3 size, float lod)
867 { 887 {
888 return GetMeshKey(size, lod, false);
889 }
890
891 public ulong GetMeshKey(Vector3 size, float lod, bool convex)
892 {
868 ulong hash = 5381; 893 ulong hash = 5381;
869 894
870 hash = djb2(hash, this.PathCurve); 895 hash = djb2(hash, this.PathCurve);
@@ -910,6 +935,9 @@ namespace OpenSim.Framework
910 hash = djb2(hash, scaleBytes[i]); 935 hash = djb2(hash, scaleBytes[i]);
911 } 936 }
912 937
938 if(convex)
939 hash = djb2(hash, 0xa5);
940
913 return hash; 941 return hash;
914 } 942 }
915 943
@@ -1414,7 +1442,7 @@ namespace OpenSim.Framework
1414 prim.Textures = this.Textures; 1442 prim.Textures = this.Textures;
1415 1443
1416 prim.Properties = new Primitive.ObjectProperties(); 1444 prim.Properties = new Primitive.ObjectProperties();
1417 prim.Properties.Name = "Primitive"; 1445 prim.Properties.Name = "Object";
1418 prim.Properties.Description = ""; 1446 prim.Properties.Description = "";
1419 prim.Properties.CreatorID = UUID.Zero; 1447 prim.Properties.CreatorID = UUID.Zero;
1420 prim.Properties.GroupID = UUID.Zero; 1448 prim.Properties.GroupID = UUID.Zero;
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index a505524..1b2f681 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -40,6 +40,7 @@ using OpenMetaverse.StructuredData;
40 40
41namespace OpenSim.Framework 41namespace OpenSim.Framework
42{ 42{
43 [Serializable]
43 public class RegionLightShareData : ICloneable 44 public class RegionLightShareData : ICloneable
44 { 45 {
45 public bool valid = false; 46 public bool valid = false;
@@ -102,6 +103,7 @@ namespace OpenSim.Framework
102 103
103 public bool commFailTF = false; 104 public bool commFailTF = false;
104 public ConfigurationMember configMember; 105 public ConfigurationMember configMember;
106 public string DataStore = String.Empty;
105 public string RegionFile = String.Empty; 107 public string RegionFile = String.Empty;
106 public bool isSandbox = false; 108 public bool isSandbox = false;
107 public bool Persistent = true; 109 public bool Persistent = true;
@@ -649,6 +651,9 @@ namespace OpenSim.Framework
649 string location = String.Format("{0},{1}", m_regionLocX, m_regionLocY); 651 string location = String.Format("{0},{1}", m_regionLocX, m_regionLocY);
650 config.Set("Location", location); 652 config.Set("Location", location);
651 653
654 if (DataStore != String.Empty)
655 config.Set("Datastore", DataStore);
656
652 config.Set("InternalAddress", m_internalEndPoint.Address.ToString()); 657 config.Set("InternalAddress", m_internalEndPoint.Address.ToString());
653 config.Set("InternalPort", m_internalEndPoint.Port); 658 config.Set("InternalPort", m_internalEndPoint.Port);
654 659
@@ -834,6 +839,9 @@ namespace OpenSim.Framework
834 case "sim_location_y": 839 case "sim_location_y":
835 m_regionLocY = (uint) configuration_result; 840 m_regionLocY = (uint) configuration_result;
836 break; 841 break;
842 case "datastore":
843 DataStore = (string) configuration_result;
844 break;
837 case "internal_ip_address": 845 case "internal_ip_address":
838 IPAddress address = (IPAddress) configuration_result; 846 IPAddress address = (IPAddress) configuration_result;
839 m_internalEndPoint = new IPEndPoint(address, 0); 847 m_internalEndPoint = new IPEndPoint(address, 0);
@@ -984,6 +992,11 @@ namespace OpenSim.Framework
984 return regionInfo; 992 return regionInfo;
985 } 993 }
986 994
995 public int getInternalEndPointPort()
996 {
997 return m_internalEndPoint.Port;
998 }
999
987 public Dictionary<string, object> ToKeyValuePairs() 1000 public Dictionary<string, object> ToKeyValuePairs()
988 { 1001 {
989 Dictionary<string, object> kvp = new Dictionary<string, object>(); 1002 Dictionary<string, object> kvp = new Dictionary<string, object>();
@@ -1002,4 +1015,4 @@ namespace OpenSim.Framework
1002 return kvp; 1015 return kvp;
1003 } 1016 }
1004 } 1017 }
1005} \ No newline at end of file 1018}
diff --git a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs
index a2f5d9c..c7caf6f 100644
--- a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs
+++ b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs
@@ -48,6 +48,9 @@ namespace OpenSim.Framework.RegionLoader.Web
48 48
49 public RegionInfo[] LoadRegions() 49 public RegionInfo[] LoadRegions()
50 { 50 {
51 int tries = 3;
52 int wait = 2000;
53
51 if (m_configSource == null) 54 if (m_configSource == null)
52 { 55 {
53 m_log.Error("[WEBLOADER]: Unable to load configuration source!"); 56 m_log.Error("[WEBLOADER]: Unable to load configuration source!");
@@ -66,63 +69,72 @@ namespace OpenSim.Framework.RegionLoader.Web
66 } 69 }
67 else 70 else
68 { 71 {
69 RegionInfo[] regionInfos = new RegionInfo[] {}; 72 while(tries > 0)
70 int regionCount = 0; 73 {
71 HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(url); 74 RegionInfo[] regionInfos = new RegionInfo[] {};
72 webRequest.Timeout = 30000; //30 Second Timeout 75 int regionCount = 0;
73 m_log.DebugFormat("[WEBLOADER]: Sending download request to {0}", url); 76 HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(url);
77 webRequest.Timeout = 30000; //30 Second Timeout
78 m_log.DebugFormat("[WEBLOADER]: Sending download request to {0}", url);
74 79
75 try 80 try
76 { 81 {
77 HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse(); 82 HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();
78 m_log.Debug("[WEBLOADER]: Downloading region information..."); 83 m_log.Debug("[WEBLOADER]: Downloading region information...");
79 StreamReader reader = new StreamReader(webResponse.GetResponseStream()); 84 StreamReader reader = new StreamReader(webResponse.GetResponseStream());
80 string xmlSource = String.Empty; 85 string xmlSource = String.Empty;
81 string tempStr = reader.ReadLine(); 86 string tempStr = reader.ReadLine();
82 while (tempStr != null) 87 while (tempStr != null)
83 { 88 {
84 xmlSource = xmlSource + tempStr; 89 xmlSource = xmlSource + tempStr;
85 tempStr = reader.ReadLine(); 90 tempStr = reader.ReadLine();
86 } 91 }
87 m_log.Debug("[WEBLOADER]: Done downloading region information from server. Total Bytes: " + 92 m_log.Debug("[WEBLOADER]: Done downloading region information from server. Total Bytes: " +
88 xmlSource.Length); 93 xmlSource.Length);
89 XmlDocument xmlDoc = new XmlDocument(); 94 XmlDocument xmlDoc = new XmlDocument();
90 xmlDoc.LoadXml(xmlSource); 95 xmlDoc.LoadXml(xmlSource);
91 if (xmlDoc.FirstChild.Name == "Regions") 96 if (xmlDoc.FirstChild.Name == "Regions")
92 { 97 {
93 regionCount = xmlDoc.FirstChild.ChildNodes.Count; 98 regionCount = xmlDoc.FirstChild.ChildNodes.Count;
94 99
95 if (regionCount > 0) 100 if (regionCount > 0)
96 { 101 {
97 regionInfos = new RegionInfo[regionCount]; 102 regionInfos = new RegionInfo[regionCount];
98 int i; 103 int i;
99 for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++) 104 for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++)
100 { 105 {
101 m_log.Debug(xmlDoc.FirstChild.ChildNodes[i].OuterXml); 106 m_log.Debug(xmlDoc.FirstChild.ChildNodes[i].OuterXml);
102 regionInfos[i] = 107 regionInfos[i] =
103 new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i],false,m_configSource); 108 new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i],false,m_configSource);
104 } 109 }
105 } 110 }
106 } 111 }
107 } 112 }
108 catch (WebException ex) 113 catch (WebException ex)
109 { 114 {
110 if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound) 115 if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
116 {
117 if (!allowRegionless)
118 throw ex;
119 }
120 else
121 throw ex;
122 }
123
124 if (regionCount > 0 | allowRegionless)
125 return regionInfos;
126
127 m_log.Debug("[WEBLOADER]: Request yielded no regions.");
128 tries--;
129 if (tries > 0)
111 { 130 {
112 if (!allowRegionless) 131 m_log.Debug("[WEBLOADER]: Retrying");
113 throw ex; 132 System.Threading.Thread.Sleep(wait);
114 } 133 }
115 else 134 }
116 throw ex;
117 }
118 135
119 if (regionCount > 0 | allowRegionless) 136 m_log.Error("[WEBLOADER]: No region configs were available.");
120 return regionInfos; 137 return null;
121 else
122 {
123 m_log.Error("[WEBLOADER]: No region configs were available.");
124 return null;
125 }
126 } 138 }
127 } 139 }
128 } 140 }
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs
index 47dbcec..47a2780 100644
--- a/OpenSim/Framework/RegionSettings.cs
+++ b/OpenSim/Framework/RegionSettings.cs
@@ -482,6 +482,28 @@ namespace OpenSim.Framework
482 set { m_LoadedCreationID = value; } 482 set { m_LoadedCreationID = value; }
483 } 483 }
484 484
485 private bool m_GodBlockSearch = false;
486 public bool GodBlockSearch
487 {
488 get { return m_GodBlockSearch; }
489 set { m_GodBlockSearch = value; }
490 }
491
492 private bool m_Casino = false;
493 public bool Casino
494 {
495 get { return m_Casino; }
496 set { m_Casino = value; }
497 }
498
499 // Telehub support
500 private bool m_TelehubEnabled = false;
501 public bool HasTelehub
502 {
503 get { return m_TelehubEnabled; }
504 set { m_TelehubEnabled = value; }
505 }
506
485 // Connected Telehub object 507 // Connected Telehub object
486 private UUID m_TelehubObject = UUID.Zero; 508 private UUID m_TelehubObject = UUID.Zero;
487 public UUID TelehubObject 509 public UUID TelehubObject
diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
index 06a8021..87d04f8 100644
--- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs
+++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
@@ -308,7 +308,7 @@ namespace OpenSim.Framework.Servers
308 308
309 EnhanceVersionInformation(); 309 EnhanceVersionInformation();
310 310
311 m_log.Info("[STARTUP]: OpenSimulator version: " + m_version + Environment.NewLine); 311 m_log.Info("[STARTUP]: Careminster version: " + m_version + Environment.NewLine);
312 // clr version potentially is more confusing than helpful, since it doesn't tell us if we're running under Mono/MS .NET and 312 // clr version potentially is more confusing than helpful, since it doesn't tell us if we're running under Mono/MS .NET and
313 // the clr version number doesn't match the project version number under Mono. 313 // the clr version number doesn't match the project version number under Mono.
314 //m_log.Info("[STARTUP]: Virtual machine runtime version: " + Environment.Version + Environment.NewLine); 314 //m_log.Info("[STARTUP]: Virtual machine runtime version: " + Environment.Version + Environment.NewLine);
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 401dfd3..f5addc8 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -1547,11 +1547,34 @@ namespace OpenSim.Framework.Servers.HttpServer
1547 1547
1548 internal void DoHTTPGruntWork(Hashtable responsedata, OSHttpResponse response) 1548 internal void DoHTTPGruntWork(Hashtable responsedata, OSHttpResponse response)
1549 { 1549 {
1550 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response"); 1550 int responsecode;
1551 int responsecode = (int)responsedata["int_response_code"]; 1551 string responseString;
1552 string responseString = (string)responsedata["str_response_string"]; 1552 string contentType;
1553 string contentType = (string)responsedata["content_type"];
1554 1553
1554 if (responsedata == null)
1555 {
1556 responsecode = 500;
1557 responseString = "No response could be obtained";
1558 contentType = "text/plain";
1559 responsedata = new Hashtable();
1560 }
1561 else
1562 {
1563 try
1564 {
1565 //m_log.Info("[BASE HTTP SERVER]: Doing HTTP Grunt work with response");
1566 responsecode = (int)responsedata["int_response_code"];
1567 responseString = (string)responsedata["str_response_string"];
1568 contentType = (string)responsedata["content_type"];
1569 }
1570 catch
1571 {
1572 responsecode = 500;
1573 responseString = "No response could be obtained";
1574 contentType = "text/plain";
1575 responsedata = new Hashtable();
1576 }
1577 }
1555 1578
1556 if (responsedata.ContainsKey("error_status_text")) 1579 if (responsedata.ContainsKey("error_status_text"))
1557 { 1580 {
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index 5f01788..016a174 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -29,11 +29,11 @@ namespace OpenSim
29{ 29{
30 public class VersionInfo 30 public class VersionInfo
31 { 31 {
32 private const string VERSION_NUMBER = "0.7.4"; 32 private const string VERSION_NUMBER = "0.7.4CM";
33 private const Flavour VERSION_FLAVOUR = Flavour.Dev; 33 private const Flavour VERSION_FLAVOUR = Flavour.Dev;
34 34
35 public enum Flavour 35 public enum Flavour
36 { 36 {
37 Unknown, 37 Unknown,
38 Dev, 38 Dev,
39 RC1, 39 RC1,
@@ -50,7 +50,7 @@ namespace OpenSim
50 50
51 public static string GetVersionString(string versionNumber, Flavour flavour) 51 public static string GetVersionString(string versionNumber, Flavour flavour)
52 { 52 {
53 string versionString = "OpenSim " + versionNumber + " " + flavour; 53 string versionString = "Careminster " + versionNumber + " " + flavour;
54 return versionString.PadRight(VERSIONINFO_VERSION_LENGTH); 54 return versionString.PadRight(VERSIONINFO_VERSION_LENGTH);
55 } 55 }
56 56
diff --git a/OpenSim/Framework/TaskInventoryDictionary.cs b/OpenSim/Framework/TaskInventoryDictionary.cs
index 421bd5d..814758a 100644
--- a/OpenSim/Framework/TaskInventoryDictionary.cs
+++ b/OpenSim/Framework/TaskInventoryDictionary.cs
@@ -27,9 +27,13 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Threading;
31using System.Reflection;
30using System.Xml; 32using System.Xml;
33using System.Diagnostics;
31using System.Xml.Schema; 34using System.Xml.Schema;
32using System.Xml.Serialization; 35using System.Xml.Serialization;
36using log4net;
33using OpenMetaverse; 37using OpenMetaverse;
34 38
35namespace OpenSim.Framework 39namespace OpenSim.Framework
@@ -45,6 +49,155 @@ namespace OpenSim.Framework
45 // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 49 // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46 50
47 private static XmlSerializer tiiSerializer = new XmlSerializer(typeof (TaskInventoryItem)); 51 private static XmlSerializer tiiSerializer = new XmlSerializer(typeof (TaskInventoryItem));
52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53
54 private Thread LockedByThread;
55 private string WriterStack;
56
57 private Dictionary<Thread, string> ReadLockers =
58 new Dictionary<Thread, string>();
59
60 /// <value>
61 /// An advanced lock for inventory data
62 /// </value>
63 private System.Threading.ReaderWriterLockSlim m_itemLock = new System.Threading.ReaderWriterLockSlim();
64
65 /// <summary>
66 /// Are we readlocked by the calling thread?
67 /// </summary>
68 public bool IsReadLockedByMe()
69 {
70 if (m_itemLock.RecursiveReadCount > 0)
71 {
72 return true;
73 }
74 else
75 {
76 return false;
77 }
78 }
79
80 /// <summary>
81 /// Lock our inventory list for reading (many can read, one can write)
82 /// </summary>
83 public void LockItemsForRead(bool locked)
84 {
85 if (locked)
86 {
87 if (m_itemLock.IsWriteLockHeld && LockedByThread != null)
88 {
89 if (!LockedByThread.IsAlive)
90 {
91 //Locked by dead thread, reset.
92 m_itemLock = new System.Threading.ReaderWriterLockSlim();
93 }
94 }
95
96 if (m_itemLock.RecursiveReadCount > 0)
97 {
98 m_log.Error("[TaskInventoryDictionary] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue.");
99 try
100 {
101 StackTrace stackTrace = new StackTrace(); // get call stack
102 StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames)
103
104 // write call stack method names
105 foreach (StackFrame stackFrame in stackFrames)
106 {
107 m_log.Error("[SceneObjectGroup.m_parts] "+(stackFrame.GetMethod().Name)); // write method name
108 }
109 }
110 catch
111 {}
112 m_itemLock.ExitReadLock();
113 }
114 if (m_itemLock.RecursiveWriteCount > 0)
115 {
116 m_log.Error("[TaskInventoryDictionary] Recursive write lock requested. This should not happen and means something needs to be fixed.");
117 m_itemLock.ExitWriteLock();
118 }
119
120 while (!m_itemLock.TryEnterReadLock(60000))
121 {
122 m_log.Error("Thread lock detected while trying to aquire READ lock in TaskInventoryDictionary. Locked by thread " + LockedByThread.Name + ". I'm going to try to solve the thread lock automatically to preserve region stability, but this needs to be fixed.");
123 if (m_itemLock.IsWriteLockHeld)
124 {
125 m_itemLock = new System.Threading.ReaderWriterLockSlim();
126 System.Console.WriteLine("------------------------------------------");
127 System.Console.WriteLine("My call stack:\n" + Environment.StackTrace);
128 System.Console.WriteLine("------------------------------------------");
129 System.Console.WriteLine("Locker's call stack:\n" + WriterStack);
130 System.Console.WriteLine("------------------------------------------");
131 LockedByThread = null;
132 ReadLockers.Clear();
133 }
134 }
135 }
136 else
137 {
138 if (m_itemLock.RecursiveReadCount>0)
139 {
140 m_itemLock.ExitReadLock();
141 }
142 }
143 }
144
145 /// <summary>
146 /// Lock our inventory list for writing (many can read, one can write)
147 /// </summary>
148 public void LockItemsForWrite(bool locked)
149 {
150 if (locked)
151 {
152 //Enter a write lock, wait indefinately for one to open.
153 if (m_itemLock.RecursiveReadCount > 0)
154 {
155 m_log.Error("[TaskInventoryDictionary] Recursive read lock requested. This should not happen and means something needs to be fixed. For now though, it's safe to continue.");
156 m_itemLock.ExitReadLock();
157 }
158 if (m_itemLock.RecursiveWriteCount > 0)
159 {
160 m_log.Error("[TaskInventoryDictionary] Recursive write lock requested. This should not happen and means something needs to be fixed.");
161 m_itemLock.ExitWriteLock();
162 }
163 while (!m_itemLock.TryEnterWriteLock(60000))
164 {
165 if (m_itemLock.IsWriteLockHeld)
166 {
167 m_log.Error("Thread lock detected while trying to aquire WRITE lock in TaskInventoryDictionary. Locked by thread " + LockedByThread.Name + ". I'm going to try to solve the thread lock automatically to preserve region stability, but this needs to be fixed.");
168 System.Console.WriteLine("------------------------------------------");
169 System.Console.WriteLine("My call stack:\n" + Environment.StackTrace);
170 System.Console.WriteLine("------------------------------------------");
171 System.Console.WriteLine("Locker's call stack:\n" + WriterStack);
172 System.Console.WriteLine("------------------------------------------");
173 }
174 else
175 {
176 m_log.Error("Thread lock detected while trying to aquire WRITE lock in TaskInventoryDictionary. Locked by a reader. I'm going to try to solve the thread lock automatically to preserve region stability, but this needs to be fixed.");
177 System.Console.WriteLine("------------------------------------------");
178 System.Console.WriteLine("My call stack:\n" + Environment.StackTrace);
179 System.Console.WriteLine("------------------------------------------");
180 foreach (KeyValuePair<Thread, string> kvp in ReadLockers)
181 {
182 System.Console.WriteLine("Locker name {0} call stack:\n" + kvp.Value, kvp.Key.Name);
183 System.Console.WriteLine("------------------------------------------");
184 }
185 }
186 m_itemLock = new System.Threading.ReaderWriterLockSlim();
187 ReadLockers.Clear();
188 }
189
190 LockedByThread = Thread.CurrentThread;
191 WriterStack = Environment.StackTrace;
192 }
193 else
194 {
195 if (m_itemLock.RecursiveWriteCount > 0)
196 {
197 m_itemLock.ExitWriteLock();
198 }
199 }
200 }
48 201
49 #region ICloneable Members 202 #region ICloneable Members
50 203
@@ -52,14 +205,13 @@ namespace OpenSim.Framework
52 { 205 {
53 TaskInventoryDictionary clone = new TaskInventoryDictionary(); 206 TaskInventoryDictionary clone = new TaskInventoryDictionary();
54 207
55 lock (this) 208 m_itemLock.EnterReadLock();
209 foreach (UUID uuid in Keys)
56 { 210 {
57 foreach (UUID uuid in Keys) 211 clone.Add(uuid, (TaskInventoryItem) this[uuid].Clone());
58 {
59 clone.Add(uuid, (TaskInventoryItem) this[uuid].Clone());
60 }
61 } 212 }
62 213 m_itemLock.ExitReadLock();
214
63 return clone; 215 return clone;
64 } 216 }
65 217
diff --git a/OpenSim/Framework/TaskInventoryItem.cs b/OpenSim/Framework/TaskInventoryItem.cs
index 362d365..fb818ee 100644
--- a/OpenSim/Framework/TaskInventoryItem.cs
+++ b/OpenSim/Framework/TaskInventoryItem.cs
@@ -72,6 +72,9 @@ namespace OpenSim.Framework
72 private UUID _loadedID = UUID.Zero; 72 private UUID _loadedID = UUID.Zero;
73 73
74 private bool _ownerChanged = false; 74 private bool _ownerChanged = false;
75
76 // This used ONLY during copy. It can't be relied on at other times!
77 private bool _scriptRunning = true;
75 78
76 public UUID AssetID { 79 public UUID AssetID {
77 get { 80 get {
@@ -350,6 +353,15 @@ namespace OpenSim.Framework
350 } 353 }
351 } 354 }
352 355
356 public bool ScriptRunning {
357 get {
358 return _scriptRunning;
359 }
360 set {
361 _scriptRunning = value;
362 }
363 }
364
353 // See ICloneable 365 // See ICloneable
354 366
355 #region ICloneable Members 367 #region ICloneable Members
diff --git a/OpenSim/Framework/Tests/MundaneFrameworkTests.cs b/OpenSim/Framework/Tests/MundaneFrameworkTests.cs
index 672847d..6fde488 100644
--- a/OpenSim/Framework/Tests/MundaneFrameworkTests.cs
+++ b/OpenSim/Framework/Tests/MundaneFrameworkTests.cs
@@ -217,12 +217,12 @@ namespace OpenSim.Framework.Tests
217 BannedHostNameMask = string.Empty, 217 BannedHostNameMask = string.Empty,
218 BannedUserID = bannedUserId} 218 BannedUserID = bannedUserId}
219 ); 219 );
220 Assert.IsTrue(es.IsBanned(bannedUserId), "User Should be banned but is not."); 220 Assert.IsTrue(es.IsBanned(bannedUserId, 32), "User Should be banned but is not.");
221 Assert.IsFalse(es.IsBanned(UUID.Zero), "User Should not be banned but is."); 221 Assert.IsFalse(es.IsBanned(UUID.Zero, 32), "User Should not be banned but is.");
222 222
223 es.RemoveBan(bannedUserId); 223 es.RemoveBan(bannedUserId);
224 224
225 Assert.IsFalse(es.IsBanned(bannedUserId), "User Should not be banned but is."); 225 Assert.IsFalse(es.IsBanned(bannedUserId, 32), "User Should not be banned but is.");
226 226
227 es.AddEstateManager(UUID.Zero); 227 es.AddEstateManager(UUID.Zero);
228 228
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index e03bb74..728cda0 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -480,19 +480,25 @@ namespace OpenSim.Framework
480 /// </summary> 480 /// </summary>
481 /// <param name="data"></param> 481 /// <param name="data"></param>
482 /// <returns></returns> 482 /// <returns></returns>
483
483 public static string Md5Hash(string data) 484 public static string Md5Hash(string data)
484 { 485 {
485 byte[] dataMd5 = ComputeMD5Hash(data); 486 return Md5Hash(data, Encoding.Default);
487 }
488
489 public static string Md5Hash(string data, Encoding encoding)
490 {
491 byte[] dataMd5 = ComputeMD5Hash(data, encoding);
486 StringBuilder sb = new StringBuilder(); 492 StringBuilder sb = new StringBuilder();
487 for (int i = 0; i < dataMd5.Length; i++) 493 for (int i = 0; i < dataMd5.Length; i++)
488 sb.AppendFormat("{0:x2}", dataMd5[i]); 494 sb.AppendFormat("{0:x2}", dataMd5[i]);
489 return sb.ToString(); 495 return sb.ToString();
490 } 496 }
491 497
492 private static byte[] ComputeMD5Hash(string data) 498 private static byte[] ComputeMD5Hash(string data, Encoding encoding)
493 { 499 {
494 MD5 md5 = MD5.Create(); 500 MD5 md5 = MD5.Create();
495 return md5.ComputeHash(Encoding.Default.GetBytes(data)); 501 return md5.ComputeHash(encoding.GetBytes(data));
496 } 502 }
497 503
498 /// <summary> 504 /// <summary>
@@ -500,6 +506,12 @@ namespace OpenSim.Framework
500 /// </summary> 506 /// </summary>
501 /// <param name="data"></param> 507 /// <param name="data"></param>
502 /// <returns></returns> 508 /// <returns></returns>
509
510 public static string SHA1Hash(string data, Encoding enc)
511 {
512 return SHA1Hash(enc.GetBytes(data));
513 }
514
503 public static string SHA1Hash(string data) 515 public static string SHA1Hash(string data)
504 { 516 {
505 return SHA1Hash(Encoding.Default.GetBytes(data)); 517 return SHA1Hash(Encoding.Default.GetBytes(data));
@@ -1104,19 +1116,19 @@ namespace OpenSim.Framework
1104 { 1116 {
1105 string os = String.Empty; 1117 string os = String.Empty;
1106 1118
1107 if (Environment.OSVersion.Platform != PlatformID.Unix) 1119// if (Environment.OSVersion.Platform != PlatformID.Unix)
1108 { 1120// {
1109 os = Environment.OSVersion.ToString(); 1121// os = Environment.OSVersion.ToString();
1110 } 1122// }
1111 else 1123// else
1112 { 1124// {
1113 os = ReadEtcIssue(); 1125// os = ReadEtcIssue();
1114 } 1126// }
1115 1127//
1116 if (os.Length > 45) 1128// if (os.Length > 45)
1117 { 1129// {
1118 os = os.Substring(0, 45); 1130// os = os.Substring(0, 45);
1119 } 1131// }
1120 1132
1121 return os; 1133 return os;
1122 } 1134 }
@@ -1249,7 +1261,7 @@ namespace OpenSim.Framework
1249 1261
1250 public static Guid GetHashGuid(string data, string salt) 1262 public static Guid GetHashGuid(string data, string salt)
1251 { 1263 {
1252 byte[] hash = ComputeMD5Hash(data + salt); 1264 byte[] hash = ComputeMD5Hash(data + salt, Encoding.Default);
1253 1265
1254 //string s = BitConverter.ToString(hash); 1266 //string s = BitConverter.ToString(hash);
1255 1267
diff --git a/OpenSim/Framework/Watchdog.cs b/OpenSim/Framework/Watchdog.cs
index e93e50e..881b6aa 100644
--- a/OpenSim/Framework/Watchdog.cs
+++ b/OpenSim/Framework/Watchdog.cs
@@ -266,7 +266,7 @@ namespace OpenSim.Framework
266 266
267 lock (m_threads) 267 lock (m_threads)
268 { 268 {
269 int now = Environment.TickCount & Int32.MaxValue; 269 int now = Environment.TickCount;
270 270
271 foreach (ThreadWatchdogInfo threadInfo in m_threads.Values) 271 foreach (ThreadWatchdogInfo threadInfo in m_threads.Values)
272 { 272 {
@@ -302,4 +302,4 @@ namespace OpenSim.Framework
302 m_watchdogTimer.Start(); 302 m_watchdogTimer.Start();
303 } 303 }
304 } 304 }
305} \ No newline at end of file 305}
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index 2aa4af5..6a40cd5 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -223,6 +223,7 @@ namespace OpenSim.Framework
223 catch (Exception ex) 223 catch (Exception ex)
224 { 224 {
225 errorMessage = ex.Message; 225 errorMessage = ex.Message;
226 m_log.Debug("[WEB UTIL]: Exception making request: " + ex.ToString());
226 } 227 }
227 finally 228 finally
228 { 229 {
@@ -302,7 +303,7 @@ namespace OpenSim.Framework
302 /// </summary> 303 /// </summary>
303 public static OSDMap PostToService(string url, NameValueCollection data) 304 public static OSDMap PostToService(string url, NameValueCollection data)
304 { 305 {
305 return ServiceFormRequest(url,data,10000); 306 return ServiceFormRequest(url,data, 20000);
306 } 307 }
307 308
308 public static OSDMap ServiceFormRequest(string url, NameValueCollection data, int timeout) 309 public static OSDMap ServiceFormRequest(string url, NameValueCollection data, int timeout)
@@ -997,6 +998,11 @@ namespace OpenSim.Framework
997 /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> 998 /// the request. You'll want to make sure you deal with this as they're not uncommon</exception>
998 public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) 999 public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj)
999 { 1000 {
1001 return MakeRequest<TRequest, TResponse>(verb, requestUrl, obj, 0);
1002 }
1003
1004 public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj, int pTimeout)
1005 {
1000 int reqnum = WebUtil.RequestNumber++; 1006 int reqnum = WebUtil.RequestNumber++;
1001 // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); 1007 // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method);
1002 1008
@@ -1008,6 +1014,8 @@ namespace OpenSim.Framework
1008 1014
1009 WebRequest request = WebRequest.Create(requestUrl); 1015 WebRequest request = WebRequest.Create(requestUrl);
1010 request.Method = verb; 1016 request.Method = verb;
1017 if (pTimeout != 0)
1018 request.Timeout = pTimeout * 1000;
1011 MemoryStream buffer = null; 1019 MemoryStream buffer = null;
1012 1020
1013 if ((verb == "POST") || (verb == "PUT")) 1021 if ((verb == "POST") || (verb == "PUT"))
@@ -1123,4 +1131,4 @@ namespace OpenSim.Framework
1123 return deserial; 1131 return deserial;
1124 } 1132 }
1125 } 1133 }
1126} \ No newline at end of file 1134}