aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2013-06-18 01:50:08 +0100
committerMelanie2013-06-18 01:50:08 +0100
commit56f4adeb60622aaec687f3a6699a03c964f59d5b (patch)
tree0ba2fe5ffd3984b41fab05b56361fda507b2a34a /OpenSim
parentMerge branch 'master' into careminster (diff)
parentcorrect method doc for llRot2Axis() (diff)
downloadopensim-SC_OLD-56f4adeb60622aaec687f3a6699a03c964f59d5b.zip
opensim-SC_OLD-56f4adeb60622aaec687f3a6699a03c964f59d5b.tar.gz
opensim-SC_OLD-56f4adeb60622aaec687f3a6699a03c964f59d5b.tar.bz2
opensim-SC_OLD-56f4adeb60622aaec687f3a6699a03c964f59d5b.tar.xz
Merge branch 'master' into careminster
Conflicts: OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs OpenSim/Services/LLLoginService/LLLoginResponse.cs OpenSim/Services/LLLoginService/LLLoginService.cs
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs10
-rw-r--r--OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs46
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs66
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs82
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs14
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs10
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginResponse.cs18
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs4
9 files changed, 191 insertions, 61 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
index 6fb6497..bba8ff1 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
@@ -116,6 +116,10 @@ namespace OpenSim.Region.ClientStack.Linden
116 116
117 m_scene.EventManager.OnRegisterCaps -= RegisterCaps; 117 m_scene.EventManager.OnRegisterCaps -= RegisterCaps;
118 m_scene.EventManager.OnDeregisterCaps -= DeregisterCaps; 118 m_scene.EventManager.OnDeregisterCaps -= DeregisterCaps;
119
120 foreach (Thread t in m_workerThreads)
121 Watchdog.AbortThread(t.ManagedThreadId);
122
119 m_scene = null; 123 m_scene = null;
120 } 124 }
121 125
@@ -165,12 +169,6 @@ namespace OpenSim.Region.ClientStack.Linden
165 169
166 #endregion 170 #endregion
167 171
168 ~WebFetchInvDescModule()
169 {
170 foreach (Thread t in m_workerThreads)
171 Watchdog.AbortThread(t.ManagedThreadId);
172 }
173
174 private class PollServiceInventoryEventArgs : PollServiceEventArgs 172 private class PollServiceInventoryEventArgs : PollServiceEventArgs
175 { 173 {
176 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 174 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
index 322addd..161f160 100644
--- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs
@@ -60,8 +60,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
60 // The pair of Dictionaries are used to handle the switching of classified ads 60 // The pair of Dictionaries are used to handle the switching of classified ads
61 // by maintaining a cache of classified id to creator id mappings and an interest 61 // by maintaining a cache of classified id to creator id mappings and an interest
62 // count. The entries are removed when the interest count reaches 0. 62 // count. The entries are removed when the interest count reaches 0.
63 Dictionary<UUID,UUID> classifiedCache = new Dictionary<UUID, UUID>(); 63 Dictionary<UUID, UUID> m_classifiedCache = new Dictionary<UUID, UUID>();
64 Dictionary<UUID,int> classifiedInterest = new Dictionary<UUID, int>(); 64 Dictionary<UUID, int> m_classifiedInterest = new Dictionary<UUID, int>();
65 65
66 public Scene Scene 66 public Scene Scene
67 { 67 {
@@ -102,7 +102,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
102 102
103 /// <summary> 103 /// <summary>
104 /// Gets or sets a value indicating whether this 104 /// Gets or sets a value indicating whether this
105 /// <see cref="BlueWall.SlipStream.ProfileModule.UserProfileModule"/> is enabled. 105 /// <see cref="OpenSim.Region.Coremodules.UserProfiles.UserProfileModule"/> is enabled.
106 /// </summary> 106 /// </summary>
107 /// <value> 107 /// <value>
108 /// <c>true</c> if enabled; otherwise, <c>false</c>. 108 /// <c>true</c> if enabled; otherwise, <c>false</c>.
@@ -331,16 +331,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
331 331
332 classifieds[cid] = name; 332 classifieds[cid] = name;
333 333
334 if(!classifiedCache.ContainsKey(cid)) 334 lock (m_classifiedCache)
335 { 335 {
336 lock(classifiedCache) 336 if (!m_classifiedCache.ContainsKey(cid))
337 classifiedCache.Add(cid,creatorId); 337 {
338 lock(classifiedInterest) 338 m_classifiedCache.Add(cid,creatorId);
339 classifiedInterest.Add(cid, 0); 339 m_classifiedInterest.Add(cid, 0);
340 } 340 }
341 341
342 lock(classifiedInterest) 342 m_classifiedInterest[cid]++;
343 classifiedInterest[cid] ++; 343 }
344 } 344 }
345 345
346 remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds); 346 remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds);
@@ -352,19 +352,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
352 UserClassifiedAdd ad = new UserClassifiedAdd(); 352 UserClassifiedAdd ad = new UserClassifiedAdd();
353 ad.ClassifiedId = queryClassifiedID; 353 ad.ClassifiedId = queryClassifiedID;
354 354
355 if(classifiedCache.ContainsKey(queryClassifiedID)) 355 lock (m_classifiedCache)
356 { 356 {
357 target = classifiedCache[queryClassifiedID]; 357 if (m_classifiedCache.ContainsKey(queryClassifiedID))
358 {
359 target = m_classifiedCache[queryClassifiedID];
358 360
359 lock(classifiedInterest) 361 m_classifiedInterest[queryClassifiedID] --;
360 classifiedInterest[queryClassifiedID] --;
361 362
362 if(classifiedInterest[queryClassifiedID] == 0) 363 if (m_classifiedInterest[queryClassifiedID] == 0)
363 { 364 {
364 lock(classifiedInterest) 365 m_classifiedInterest.Remove(queryClassifiedID);
365 classifiedInterest.Remove(queryClassifiedID); 366 m_classifiedCache.Remove(queryClassifiedID);
366 lock(classifiedCache) 367 }
367 classifiedCache.Remove(queryClassifiedID);
368 } 368 }
369 } 369 }
370 370
@@ -1339,4 +1339,4 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
1339 } 1339 }
1340 #endregion Web Util 1340 #endregion Web Util
1341 } 1341 }
1342} 1342} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
index 1e434b9..2fc8ee3 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/InventoryCache.cs
@@ -1,11 +1,41 @@
1using System; 1/*
2using System.Collections.Generic; 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 */
3 27
28using System;
29using System.Collections.Generic;
30using System.Threading;
4using OpenSim.Framework; 31using OpenSim.Framework;
5using OpenMetaverse; 32using OpenMetaverse;
6 33
7namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory 34namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
8{ 35{
36 /// <summary>
37 /// Cache root and system inventory folders to reduce number of potentially remote inventory calls and associated holdups.
38 /// </summary>
9 public class InventoryCache 39 public class InventoryCache
10 { 40 {
11 private const double CACHE_EXPIRATION_SECONDS = 3600.0; // 1 hour 41 private const double CACHE_EXPIRATION_SECONDS = 3600.0; // 1 hour
@@ -16,8 +46,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
16 46
17 public void Cache(UUID userID, InventoryFolderBase root) 47 public void Cache(UUID userID, InventoryFolderBase root)
18 { 48 {
19 lock (m_RootFolders) 49 m_RootFolders.AddOrUpdate(userID, root, CACHE_EXPIRATION_SECONDS);
20 m_RootFolders.AddOrUpdate(userID, root, CACHE_EXPIRATION_SECONDS);
21 } 50 }
22 51
23 public InventoryFolderBase GetRootFolder(UUID userID) 52 public InventoryFolderBase GetRootFolder(UUID userID)
@@ -31,14 +60,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
31 60
32 public void Cache(UUID userID, AssetType type, InventoryFolderBase folder) 61 public void Cache(UUID userID, AssetType type, InventoryFolderBase folder)
33 { 62 {
34 lock (m_FolderTypes) 63 Dictionary<AssetType, InventoryFolderBase> ff = null;
64 if (!m_FolderTypes.TryGetValue(userID, out ff))
65 {
66 ff = new Dictionary<AssetType, InventoryFolderBase>();
67 m_FolderTypes.Add(userID, ff, CACHE_EXPIRATION_SECONDS);
68 }
69
70 // We need to lock here since two threads could potentially retrieve the same dictionary
71 // and try to add a folder for that type simultaneously. Dictionary<>.Add() is not described as thread-safe in the SDK
72 // even if the folders are identical.
73 lock (ff)
35 { 74 {
36 Dictionary<AssetType, InventoryFolderBase> ff = null;
37 if (!m_FolderTypes.TryGetValue(userID, out ff))
38 {
39 ff = new Dictionary<AssetType, InventoryFolderBase>();
40 m_FolderTypes.Add(userID, ff, CACHE_EXPIRATION_SECONDS);
41 }
42 if (!ff.ContainsKey(type)) 75 if (!ff.ContainsKey(type))
43 ff.Add(type, folder); 76 ff.Add(type, folder);
44 } 77 }
@@ -50,8 +83,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
50 if (m_FolderTypes.TryGetValue(userID, out ff)) 83 if (m_FolderTypes.TryGetValue(userID, out ff))
51 { 84 {
52 InventoryFolderBase f = null; 85 InventoryFolderBase f = null;
53 if (ff.TryGetValue(type, out f)) 86
54 return f; 87 lock (ff)
88 {
89 if (ff.TryGetValue(type, out f))
90 return f;
91 }
55 } 92 }
56 93
57 return null; 94 return null;
@@ -59,8 +96,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
59 96
60 public void Cache(UUID userID, InventoryCollection inv) 97 public void Cache(UUID userID, InventoryCollection inv)
61 { 98 {
62 lock (m_Inventories) 99 m_Inventories.AddOrUpdate(userID, inv, 120);
63 m_Inventories.AddOrUpdate(userID, inv, 120);
64 } 100 }
65 101
66 public InventoryCollection GetUserInventory(UUID userID) 102 public InventoryCollection GetUserInventory(UUID userID)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 9744526..d5f14bf 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -1664,6 +1664,75 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1664 m_host.SetFaceColorAlpha(face, color, null); 1664 m_host.SetFaceColorAlpha(face, color, null);
1665 } 1665 }
1666 1666
1667 /*
1668 public void llSetContentType(LSL_Key id, LSL_Integer type)
1669 {
1670 m_host.AddScriptLPS(1);
1671
1672 if (m_UrlModule == null)
1673 return;
1674
1675 // Make sure the content type is text/plain to start with
1676 m_UrlModule.HttpContentType(new UUID(id), "text/plain");
1677
1678 // Is the object owner online and in the region
1679 ScenePresence agent = World.GetScenePresence(m_host.ParentGroup.OwnerID);
1680 if (agent == null || agent.IsChildAgent)
1681 return; // Fail if the owner is not in the same region
1682
1683 // Is it the embeded browser?
1684 string userAgent = m_UrlModule.GetHttpHeader(new UUID(id), "user-agent");
1685 if (userAgent.IndexOf("SecondLife") < 0)
1686 return; // Not the embedded browser. Is this check good enough?
1687
1688 // Use the IP address of the client and check against the request
1689 // seperate logins from the same IP will allow all of them to get non-text/plain as long
1690 // as the owner is in the region. Same as SL!
1691 string logonFromIPAddress = agent.ControllingClient.RemoteEndPoint.Address.ToString();
1692 string requestFromIPAddress = m_UrlModule.GetHttpHeader(new UUID(id), "remote_addr");
1693 //m_log.Debug("IP from header='" + requestFromIPAddress + "' IP from endpoint='" + logonFromIPAddress + "'");
1694 if (requestFromIPAddress == null || requestFromIPAddress.Trim() == "")
1695 return;
1696 if (logonFromIPAddress == null || logonFromIPAddress.Trim() == "")
1697 return;
1698
1699 // If the request isnt from the same IP address then the request cannot be from the owner
1700 if (!requestFromIPAddress.Trim().Equals(logonFromIPAddress.Trim()))
1701 return;
1702
1703 switch (type)
1704 {
1705 case ScriptBaseClass.CONTENT_TYPE_HTML:
1706 m_UrlModule.HttpContentType(new UUID(id), "text/html");
1707 break;
1708 case ScriptBaseClass.CONTENT_TYPE_XML:
1709 m_UrlModule.HttpContentType(new UUID(id), "application/xml");
1710 break;
1711 case ScriptBaseClass.CONTENT_TYPE_XHTML:
1712 m_UrlModule.HttpContentType(new UUID(id), "application/xhtml+xml");
1713 break;
1714 case ScriptBaseClass.CONTENT_TYPE_ATOM:
1715 m_UrlModule.HttpContentType(new UUID(id), "application/atom+xml");
1716 break;
1717 case ScriptBaseClass.CONTENT_TYPE_JSON:
1718 m_UrlModule.HttpContentType(new UUID(id), "application/json");
1719 break;
1720 case ScriptBaseClass.CONTENT_TYPE_LLSD:
1721 m_UrlModule.HttpContentType(new UUID(id), "application/llsd+xml");
1722 break;
1723 case ScriptBaseClass.CONTENT_TYPE_FORM:
1724 m_UrlModule.HttpContentType(new UUID(id), "application/x-www-form-urlencoded");
1725 break;
1726 case ScriptBaseClass.CONTENT_TYPE_RSS:
1727 m_UrlModule.HttpContentType(new UUID(id), "application/rss+xml");
1728 break;
1729 default:
1730 m_UrlModule.HttpContentType(new UUID(id), "text/plain");
1731 break;
1732 }
1733 }
1734 */
1735
1667 public void SetTexGen(SceneObjectPart part, int face,int style) 1736 public void SetTexGen(SceneObjectPart part, int face,int style)
1668 { 1737 {
1669 if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) 1738 if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted)
@@ -5117,13 +5186,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
5117 return new LSL_Rotation(x,y,z,s); 5186 return new LSL_Rotation(x,y,z,s);
5118 } 5187 }
5119 5188
5120 5189 /// <summary>
5121 // Xantor 29/apr/2008 5190 /// Returns the axis of rotation for a quaternion
5122 // converts a Quaternion to X,Y,Z axis rotations 5191 /// </summary>
5192 /// <returns></returns>
5193 /// <param name='rot'></param>
5123 public LSL_Vector llRot2Axis(LSL_Rotation rot) 5194 public LSL_Vector llRot2Axis(LSL_Rotation rot)
5124 { 5195 {
5125 m_host.AddScriptLPS(1); 5196 m_host.AddScriptLPS(1);
5126 double x, y, z;
5127 5197
5128 if (Math.Abs(rot.s) > 1) // normalization needed 5198 if (Math.Abs(rot.s) > 1) // normalization needed
5129 rot.Normalize(); 5199 rot.Normalize();
@@ -8238,7 +8308,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8238 return null; 8308 return null;
8239 8309
8240 string ph = rules.Data[idx++].ToString(); 8310 string ph = rules.Data[idx++].ToString();
8241 parentgrp.ScriptSetPhantomStatus(ph.Equals("1")); 8311 part.ParentGroup.ScriptSetPhantomStatus(ph.Equals("1"));
8242 8312
8243 break; 8313 break;
8244 8314
@@ -8291,7 +8361,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8291 return null; 8361 return null;
8292 string temp = rules.Data[idx++].ToString(); 8362 string temp = rules.Data[idx++].ToString();
8293 8363
8294 parentgrp.ScriptSetTemporaryStatus(temp.Equals("1")); 8364 part.ParentGroup.ScriptSetTemporaryStatus(temp.Equals("1"));
8295 8365
8296 break; 8366 break;
8297 8367
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
index daf89e5..2260ec8 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs
@@ -340,6 +340,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
340 void llSetCameraParams(LSL_List rules); 340 void llSetCameraParams(LSL_List rules);
341 void llSetClickAction(int action); 341 void llSetClickAction(int action);
342 void llSetColor(LSL_Vector color, int face); 342 void llSetColor(LSL_Vector color, int face);
343 void llSetContentType(LSL_Key id, LSL_Integer type);
343 void llSetDamage(double damage); 344 void llSetDamage(double damage);
344 void llSetForce(LSL_Vector force, int local); 345 void llSetForce(LSL_Vector force, int local);
345 void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local); 346 void llSetForceAndTorque(LSL_Vector force, LSL_Vector torque, int local);
@@ -434,6 +435,5 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
434 void llSetKeyframedMotion(LSL_List frames, LSL_List options); 435 void llSetKeyframedMotion(LSL_List frames, LSL_List options);
435 LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules); 436 LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules);
436 LSL_List llGetPhysicsMaterial(); 437 LSL_List llGetPhysicsMaterial();
437 void llSetContentType(LSL_Key id, LSL_Integer content_type);
438 } 438 }
439} 439}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index 6efa73f..15b21ac 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -361,6 +361,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
361 public const int HTTP_CUSTOM_HEADER = 5; 361 public const int HTTP_CUSTOM_HEADER = 5;
362 public const int HTTP_PRAGMA_NO_CACHE = 6; 362 public const int HTTP_PRAGMA_NO_CACHE = 6;
363 363
364 // llSetContentType
365 public const int CONTENT_TYPE_TEXT = 0; //text/plain
366 public const int CONTENT_TYPE_HTML = 1; //text/html
367 public const int CONTENT_TYPE_XML = 2; //application/xml
368 public const int CONTENT_TYPE_XHTML = 3; //application/xhtml+xml
369 public const int CONTENT_TYPE_ATOM = 4; //application/atom+xml
370 public const int CONTENT_TYPE_JSON = 5; //application/json
371 public const int CONTENT_TYPE_LLSD = 6; //application/llsd+xml
372 public const int CONTENT_TYPE_FORM = 7; //application/x-www-form-urlencoded
373 public const int CONTENT_TYPE_RSS = 8; //application/rss+xml
374
364 public const int PRIM_MATERIAL = 2; 375 public const int PRIM_MATERIAL = 2;
365 public const int PRIM_PHYSICS = 3; 376 public const int PRIM_PHYSICS = 3;
366 public const int PRIM_TEMP_ON_REZ = 4; 377 public const int PRIM_TEMP_ON_REZ = 4;
@@ -772,8 +783,5 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
772 /// process message parameter as regex 783 /// process message parameter as regex
773 /// </summary> 784 /// </summary>
774 public const int OS_LISTEN_REGEX_MESSAGE = 0x2; 785 public const int OS_LISTEN_REGEX_MESSAGE = 0x2;
775
776 public const int CONTENT_TYPE_TEXT = 0;
777 public const int CONTENT_TYPE_HTML = 1;
778 } 786 }
779} 787}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
index 6f3677c..b58686b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
@@ -1535,6 +1535,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
1535 m_LSL_Functions.llSetColor(color, face); 1535 m_LSL_Functions.llSetColor(color, face);
1536 } 1536 }
1537 1537
1538 public void llSetContentType(LSL_Key id, LSL_Integer type)
1539 {
1540 m_LSL_Functions.llSetContentType(id, type);
1541 }
1542
1538 public void llSetDamage(double damage) 1543 public void llSetDamage(double damage)
1539 { 1544 {
1540 m_LSL_Functions.llSetDamage(damage); 1545 m_LSL_Functions.llSetDamage(damage);
@@ -2014,10 +2019,5 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
2014 { 2019 {
2015 return m_LSL_Functions.llGetPhysicsMaterial(); 2020 return m_LSL_Functions.llGetPhysicsMaterial();
2016 } 2021 }
2017
2018 public void llSetContentType(LSL_Key id, LSL_Integer content_type)
2019 {
2020 m_LSL_Functions.llSetContentType(id, content_type);
2021 }
2022 } 2022 }
2023} 2023}
diff --git a/OpenSim/Services/LLLoginService/LLLoginResponse.cs b/OpenSim/Services/LLLoginService/LLLoginResponse.cs
index da6c016..057c492 100644
--- a/OpenSim/Services/LLLoginService/LLLoginResponse.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginResponse.cs
@@ -196,6 +196,7 @@ namespace OpenSim.Services.LLLoginService
196 private BuddyList m_buddyList = null; 196 private BuddyList m_buddyList = null;
197 197
198 private string currency; 198 private string currency;
199 private string classifiedFee;
199 200
200 static LLLoginResponse() 201 static LLLoginResponse()
201 { 202 {
@@ -233,7 +234,7 @@ namespace OpenSim.Services.LLLoginService
233 GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService, 234 GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService,
234 string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message, 235 string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message,
235 GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency, 236 GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency,
236 string DSTZone, string destinationsURL, string avatarsURL, UUID realID) 237 string DSTZone, string destinationsURL, string avatarsURL, UUID realID, string classifiedFee)
237 : this() 238 : this()
238 { 239 {
239 FillOutInventoryData(invSkel, libService); 240 FillOutInventoryData(invSkel, libService);
@@ -258,6 +259,8 @@ namespace OpenSim.Services.LLLoginService
258 259
259 SearchURL = searchURL; 260 SearchURL = searchURL;
260 Currency = currency; 261 Currency = currency;
262 ClassifiedFee = classifiedFee;
263
261 264
262 FillOutHomeData(pinfo, home); 265 FillOutHomeData(pinfo, home);
263 LookAt = String.Format("[r{0},r{1},r{2}]", lookAt.X, lookAt.Y, lookAt.Z); 266 LookAt = String.Format("[r{0},r{1},r{2}]", lookAt.X, lookAt.Y, lookAt.Z);
@@ -472,6 +475,7 @@ namespace OpenSim.Services.LLLoginService
472 searchURL = String.Empty; 475 searchURL = String.Empty;
473 476
474 currency = String.Empty; 477 currency = String.Empty;
478 ClassifiedFee = "0";
475 } 479 }
476 480
477 481
@@ -565,6 +569,9 @@ namespace OpenSim.Services.LLLoginService
565 // responseData["real_currency"] = currency; 569 // responseData["real_currency"] = currency;
566 responseData["currency"] = currency; 570 responseData["currency"] = currency;
567 } 571 }
572
573 if (ClassifiedFee != String.Empty)
574 responseData["classified_fee"] = ClassifiedFee;
568 575
569 responseData["login"] = "true"; 576 responseData["login"] = "true";
570 577
@@ -670,6 +677,9 @@ namespace OpenSim.Services.LLLoginService
670 if (searchURL != String.Empty) 677 if (searchURL != String.Empty)
671 map["search"] = OSD.FromString(searchURL); 678 map["search"] = OSD.FromString(searchURL);
672 679
680 if (ClassifiedFee != String.Empty)
681 map["classified_fee"] = OSD.FromString(ClassifiedFee);
682
673 if (m_buddyList != null) 683 if (m_buddyList != null)
674 { 684 {
675 map["buddy-list"] = ArrayListToOSDArray(m_buddyList.ToArray()); 685 map["buddy-list"] = ArrayListToOSDArray(m_buddyList.ToArray());
@@ -1081,6 +1091,12 @@ namespace OpenSim.Services.LLLoginService
1081 set { currency = value; } 1091 set { currency = value; }
1082 } 1092 }
1083 1093
1094 public string ClassifiedFee
1095 {
1096 get { return classifiedFee; }
1097 set { classifiedFee = value; }
1098 }
1099
1084 public string DestinationsURL 1100 public string DestinationsURL
1085 { 1101 {
1086 get; set; 1102 get; set;
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 351c1ac..81712f6 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -78,6 +78,7 @@ namespace OpenSim.Services.LLLoginService
78 protected string m_OpenIDURL; 78 protected string m_OpenIDURL;
79 protected string m_SearchURL; 79 protected string m_SearchURL;
80 protected string m_Currency; 80 protected string m_Currency;
81 protected string m_ClassifiedFee;
81 protected string m_DestinationGuide; 82 protected string m_DestinationGuide;
82 protected string m_AvatarPicker; 83 protected string m_AvatarPicker;
83 84
@@ -119,6 +120,7 @@ namespace OpenSim.Services.LLLoginService
119 m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty); 120 m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty);
120 m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty); 121 m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty);
121 m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty); 122 m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty);
123 m_ClassifiedFee = m_LoginServerConfig.GetString("ClassifiedFee", string.Empty);
122 m_DestinationGuide = m_LoginServerConfig.GetString ("DestinationGuide", string.Empty); 124 m_DestinationGuide = m_LoginServerConfig.GetString ("DestinationGuide", string.Empty);
123 m_AvatarPicker = m_LoginServerConfig.GetString ("AvatarPicker", string.Empty); 125 m_AvatarPicker = m_LoginServerConfig.GetString ("AvatarPicker", string.Empty);
124 126
@@ -466,7 +468,7 @@ namespace OpenSim.Services.LLLoginService
466 account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService, 468 account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService,
467 where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP, 469 where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP,
468 m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone, 470 m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone,
469 m_DestinationGuide, m_AvatarPicker, realID); 471 m_DestinationGuide, m_AvatarPicker, realID, m_ClassifiedFee);
470 472
471 m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName); 473 m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName);
472 474