diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
index 0b3d18d2df..58ae2c3076 100644
--- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
@@ -210,11 +210,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
///
/// msg to filter on
/// number of the scripts handle
- public int Listen(uint localID, UUID itemID, UUID hostID, int channel,
- string name, UUID id, string msg)
+ public int Listen(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg)
{
- return m_listenerManager.AddListener(localID, itemID, hostID,
- channel, name, id, msg);
+ return m_listenerManager.AddListener(itemID, hostID, channel, name, id, msg);
}
///
@@ -223,7 +221,6 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
/// the script during 'peek' time. Parameter hostID is needed to
/// determine the position of the script.
///
- /// localID of the script engine
/// UUID of the script engine
/// UUID of the SceneObjectPart
/// channel to listen on
@@ -236,11 +233,10 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
/// Bitfield indicating which strings should be processed as regex.
///
/// number of the scripts handle
- public int Listen(uint localID, UUID itemID, UUID hostID, int channel,
+ public int Listen(UUID itemID, UUID hostID, int channel,
string name, UUID id, string msg, int regexBitfield)
{
- return m_listenerManager.AddListener(localID, itemID, hostID,
- channel, name, id, msg, regexBitfield);
+ return m_listenerManager.AddListener(itemID, hostID, channel, name, id, msg, regexBitfield);
}
///
@@ -340,12 +336,10 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
// in a limited set of listeners, each belonging a host. If the host is in range, add them
// to the pending queue.
- UUID hostID;
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
{
- hostID = li.GetHostID();
// Dont process if this message is from yourself!
- if (id == hostID)
+ if (id.Equals(li.HostID))
continue;
if(maxDistanceSQ < 0)
@@ -354,7 +348,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
continue;
}
- SceneObjectPart sPart = m_scene.GetSceneObjectPart(hostID);
+ SceneObjectPart sPart = m_scene.GetSceneObjectPart(li.HostID);
if (sPart == null)
continue;
@@ -424,8 +418,8 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
{
- UUID liHostID = li.GetHostID();
- if (liHostID.Equals(id))
+ UUID liHostID = li.HostID;
+ if (li.HostID.Equals(id))
continue;
if (m_scene.GetSceneObjectPart(liHostID) == null)
continue;
@@ -443,7 +437,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
{
- UUID liHostID = li.GetHostID();
+ UUID liHostID = li.HostID;
// Dont process if this message is from yourself!
if (liHostID.Equals(id))
continue;
@@ -507,10 +501,10 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
return m_listenerManager.GetSerializationData(itemID);
}
- public void CreateFromData(uint localID, UUID itemID, UUID hostID,
+ public void CreateFromData(UUID itemID, UUID hostID,
Object[] data)
{
- m_listenerManager.AddFromData(localID, itemID, hostID, data);
+ m_listenerManager.AddFromData(itemID, hostID, data);
}
}
@@ -541,15 +535,12 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
m_curlisteners = 0;
}
- public int AddListener(uint localID, UUID itemID, UUID hostID,
- int channel, string name, UUID id, string msg)
+ public int AddListener(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg)
{
- return AddListener(localID, itemID, hostID, channel, name, id,
- msg, 0);
+ return AddListener(itemID, hostID, channel, name, id, msg, 0);
}
- public int AddListener(uint localID, UUID itemID, UUID hostID,
- int channel, string name, UUID id, string msg,
+ public int AddListener(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg,
int regexBitfield)
{
// do we already have a match on this particular filter event?
@@ -559,7 +550,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
// special case, called with same filter settings, return same
// handle (2008-05-02, tested on 1.21.1 server, still holds)
- return coll[0].GetHandle();
+ return coll[0].Handle;
}
lock (mainLock)
@@ -570,7 +561,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
if (newHandle > 0)
{
- ListenerInfo li = new ListenerInfo(newHandle, localID,
+ ListenerInfo li = new ListenerInfo(newHandle,
itemID, hostID, channel, name, id, msg,
regexBitfield);
@@ -597,7 +588,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo li in lis.Value)
{
- if (handle == li.GetHandle() && itemID == li.GetItemID())
+ if (handle == li.Handle && itemID.Equals(li.ItemID))
{
lis.Value.Remove(li);
m_curlisteners--;
@@ -622,7 +613,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo li in lis.Value)
{
- if (itemID == li.GetItemID())
+ if (itemID.Equals(li.ItemID))
removedListeners.Add(li);
}
@@ -651,7 +642,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo li in lis.Value)
{
- if (handle == li.GetHandle() && itemID == li.GetItemID())
+ if (handle == li.Handle && itemID.Equals(li.ItemID))
{
li.Activate();
return;
@@ -669,7 +660,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo li in lis.Value)
{
- if (handle == li.GetHandle() && itemID == li.GetItemID())
+ if (handle == li.Handle && itemID.Equals(li.ItemID))
{
li.Deactivate();
return;
@@ -694,8 +685,8 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo li in lis.Value)
{
- if (itemID == li.GetItemID())
- handles.Add(li.GetHandle());
+ if (itemID == li.ItemID)
+ handles.Add(li.Handle);
}
}
@@ -748,48 +739,103 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
lock (mainLock)
{
- List listeners;
- if (!m_listenersByChannel.TryGetValue(channel, out listeners))
+ if (!m_listenersByChannel.TryGetValue(channel, out List listeners))
{
return collection;
}
- bool itemIDNotZero = !itemID.IsZero();
+ bool itemIDNotZero = itemID.IsNotZero();
+ bool nameNotEmpty = !string.IsNullOrEmpty(name);
+ bool msgNotEmpty = !string.IsNullOrEmpty(msg);
foreach (ListenerInfo li in listeners)
{
- if (!li.IsActive())
+ if (!li.IsActive)
continue;
- if (itemIDNotZero && itemID != li.GetItemID())
+ if (itemIDNotZero && itemID.NotEqual(li.ItemID))
continue;
- if (!li.GetID().IsZero() && id.NotEqual(li.GetID()))
+ if (li.ID.IsNotZero() && id.NotEqual(li.ID))
continue;
- if (li.GetName().Length > 0)
+ if (nameNotEmpty && li.Name.Length > 0)
{
- if((li.RegexBitfield & OS_LISTEN_REGEX_NAME) == OS_LISTEN_REGEX_NAME)
+ if ((li.RegexBitfield & OS_LISTEN_REGEX_NAME) == OS_LISTEN_REGEX_NAME)
{
- if (!Regex.IsMatch(name, li.GetName()))
+ if (!Regex.IsMatch(name, li.Name))
continue;
}
else
{
- if (!li.GetName().Equals(name))
+ if (!li.Name.Equals(name))
continue;
}
}
- if (li.GetMessage().Length > 0)
+ if (msgNotEmpty && li.Message.Length > 0)
{
- if((li.RegexBitfield & OS_LISTEN_REGEX_MESSAGE) == OS_LISTEN_REGEX_MESSAGE)
+ if ((li.RegexBitfield & OS_LISTEN_REGEX_MESSAGE) == OS_LISTEN_REGEX_MESSAGE)
{
- if(!Regex.IsMatch(msg, li.GetMessage()))
+ if (!Regex.IsMatch(msg, li.Message))
continue;
}
else
{
- if(!li.GetMessage().Equals(msg))
+ if (!li.Message.Equals(msg))
+ continue;
+ }
+ }
+ collection.Add(li);
+ }
+ }
+ return collection;
+ }
+
+ public List GetListeners(int channel, string name, UUID id, string msg)
+ {
+ List collection = new List();
+
+ lock (mainLock)
+ {
+ if (!m_listenersByChannel.TryGetValue(channel, out List listeners))
+ {
+ return collection;
+ }
+
+ bool nameNotEmpty = !string.IsNullOrEmpty(name);
+ bool msgNotEmpty = !string.IsNullOrEmpty(msg);
+ foreach (ListenerInfo li in listeners)
+ {
+ if (!li.IsActive)
+ continue;
+
+ if (li.ID.IsNotZero() && id.NotEqual(li.ID))
+ continue;
+
+ if (nameNotEmpty && li.Name.Length > 0)
+ {
+ if ((li.RegexBitfield & OS_LISTEN_REGEX_NAME) == OS_LISTEN_REGEX_NAME)
+ {
+ if (!Regex.IsMatch(name, li.Name))
+ continue;
+ }
+ else
+ {
+ if (!li.Name.Equals(name))
+ continue;
+ }
+ }
+
+ if (msgNotEmpty && li.Message.Length > 0)
+ {
+ if ((li.RegexBitfield & OS_LISTEN_REGEX_MESSAGE) == OS_LISTEN_REGEX_MESSAGE)
+ {
+ if (!Regex.IsMatch(msg, li.Message))
+ continue;
+ }
+ else
+ {
+ if (!li.Message.Equals(msg))
continue;
}
}
@@ -809,16 +855,15 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
foreach (ListenerInfo l in list)
{
- if (l.GetItemID() == itemID)
+ if (itemID.Equals(l.ItemID))
data.AddRange(l.GetSerializationData());
}
}
}
- return (Object[])data.ToArray();
+ return data.ToArray();
}
- public void AddFromData(uint localID, UUID itemID, UUID hostID,
- Object[] data)
+ public void AddFromData(UUID itemID, UUID hostID, Object[] data)
{
int idx = 0;
Object[] item = new Object[6];
@@ -830,8 +875,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
item = new Object[dataItemLength];
Array.Copy(data, idx, item, 0, dataItemLength);
- ListenerInfo info =
- ListenerInfo.FromData(localID, itemID, hostID, item);
+ ListenerInfo info = ListenerInfo.FromData(itemID, hostID, item);
lock (mainLock)
{
@@ -852,91 +896,99 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
///
/// Listener is active or not
///
- private bool m_active;
+ public bool IsActive { get; private set; }
///
/// Assigned handle of this listener
///
- private int m_handle;
-
- ///
- /// Local ID from script engine
- ///
- private uint m_localID;
+ public int Handle { get; private set; }
///
/// ID of the host script engine
///
- private UUID m_itemID;
+ public UUID ItemID { get; private set; }
///
/// ID of the host/scene part
///
- private UUID m_hostID;
+ public UUID HostID { get; private set; }
///
/// Channel
///
- private int m_channel;
+ public int Channel { get; private set; }
///
/// ID to filter messages from
///
- private UUID m_id;
+ public UUID ID { get; private set; }
///
/// Object name to filter messages from
///
- private string m_name;
+ public string Name { get; private set; }
///
/// The message
///
- private string m_message;
+ public string Message { get; private set; }
+ public int RegexBitfield { get; private set; }
- public ListenerInfo(int handle, uint localID, UUID ItemID,
+ public ListenerInfo()
+ {
+ }
+
+ public ListenerInfo(int handle, UUID _ItemID,
UUID hostID, int channel, string name, UUID id,
string message)
{
- Initialise(handle, localID, ItemID, hostID, channel, name, id,
- message, 0);
+ IsActive = true;
+ Handle = handle;
+ ItemID = _ItemID;
+ HostID = hostID;
+ Channel = channel;
+ Name = name;
+ ID = id;
+ Message = message;
+ RegexBitfield = 0;
}
- public ListenerInfo(int handle, uint localID, UUID ItemID,
+ public ListenerInfo(int handle, UUID _ItemID,
UUID hostID, int channel, string name, UUID id,
string message, int regexBitfield)
{
- Initialise(handle, localID, ItemID, hostID, channel, name, id,
- message, regexBitfield);
+ Handle = handle;
+ ItemID = _ItemID;
+ HostID = hostID;
+ Channel = channel;
+ Name = name;
+ ID = id;
+ Message = message;
+ RegexBitfield = regexBitfield;
}
- public ListenerInfo(ListenerInfo li, string name, UUID id,
- string message)
+ public ListenerInfo(ListenerInfo li, string name, UUID id, string message)
{
- Initialise(li.m_handle, li.m_localID, li.m_itemID, li.m_hostID,
- li.m_channel, name, id, message, 0);
+ IsActive = true;
+ Handle = li.Handle;
+ ItemID = li.ItemID;
+ HostID = li.HostID;
+ Channel = li.Channel;
+ Name = name;
+ ID = id;
+ Message = message;
}
- public ListenerInfo(ListenerInfo li, string name, UUID id,
- string message, int regexBitfield)
+ public ListenerInfo(ListenerInfo li, string name, UUID id, string message, int regexBitfield)
{
- Initialise(li.m_handle, li.m_localID, li.m_itemID, li.m_hostID,
- li.m_channel, name, id, message, regexBitfield);
- }
-
- private void Initialise(int handle, uint localID, UUID ItemID,
- UUID hostID, int channel, string name, UUID id,
- string message, int regexBitfield)
- {
- m_active = true;
- m_handle = handle;
- m_localID = localID;
- m_itemID = ItemID;
- m_hostID = hostID;
- m_channel = channel;
- m_name = name;
- m_id = id;
- m_message = message;
+ IsActive = true;
+ Handle = li.Handle;
+ ItemID = li.ItemID;
+ HostID = li.HostID;
+ Channel = li.Channel;
+ Name = name;
+ ID = id;
+ Message = message;
RegexBitfield = regexBitfield;
}
@@ -944,87 +996,41 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{
Object[] data = new Object[7];
- data[0] = m_active;
- data[1] = m_handle;
- data[2] = m_channel;
- data[3] = m_name;
- data[4] = m_id;
- data[5] = m_message;
+ data[0] = IsActive;
+ data[1] = Handle;
+ data[2] = Channel;
+ data[3] = Name;
+ data[4] = ID;
+ data[5] = Message;
data[6] = RegexBitfield;
return data;
}
- public static ListenerInfo FromData(uint localID, UUID ItemID,
- UUID hostID, Object[] data)
+ public static ListenerInfo FromData(UUID _ItemID, UUID hostID, Object[] data)
{
- ListenerInfo linfo = new ListenerInfo((int)data[1], localID,
- ItemID, hostID, (int)data[2], (string)data[3],
- (UUID)data[4], (string)data[5]);
- linfo.m_active = (bool)data[0];
- if (data.Length >= 7)
+ return new ListenerInfo()
{
- linfo.RegexBitfield = (int)data[6];
- }
-
- return linfo;
- }
-
- public UUID GetItemID()
- {
- return m_itemID;
- }
-
- public UUID GetHostID()
- {
- return m_hostID;
- }
-
- public int GetChannel()
- {
- return m_channel;
- }
-
- public uint GetLocalID()
- {
- return m_localID;
- }
-
- public int GetHandle()
- {
- return m_handle;
- }
-
- public string GetMessage()
- {
- return m_message;
- }
-
- public string GetName()
- {
- return m_name;
- }
-
- public bool IsActive()
- {
- return m_active;
- }
-
- public void Deactivate()
- {
- m_active = false;
+ IsActive = (bool)data[0],
+ Handle = (int)data[1],
+ ItemID = _ItemID,
+ HostID = hostID,
+ Channel = (int)data[2],
+ Name = (string)data[3],
+ ID = (UUID)data[4],
+ Message = (string)data[5],
+ RegexBitfield = (data.Length > 6) ? (int)data[6] : 0
+ };
}
public void Activate()
{
- m_active = true;
+ IsActive = true;
}
- public UUID GetID()
+ public void Deactivate()
{
- return m_id;
+ IsActive = false;
}
-
- public int RegexBitfield { get; private set; }
}
}
diff --git a/OpenSim/Region/Framework/Interfaces/IWorldComm.cs b/OpenSim/Region/Framework/Interfaces/IWorldComm.cs
index 00344ecc5a..e677b6664d 100644
--- a/OpenSim/Region/Framework/Interfaces/IWorldComm.cs
+++ b/OpenSim/Region/Framework/Interfaces/IWorldComm.cs
@@ -33,18 +33,14 @@ namespace OpenSim.Region.Framework.Interfaces
{
public interface IWorldCommListenerInfo
{
- Object[] GetSerializationData();
- UUID GetItemID();
- UUID GetHostID();
- int GetChannel();
- uint GetLocalID();
- int GetHandle();
- string GetMessage();
- string GetName();
- bool IsActive();
- void Deactivate();
- void Activate();
- UUID GetID();
+ bool IsActive { get; }
+ int Handle { get; }
+ UUID ItemID { get; }
+ UUID HostID { get; }
+ int Channel { get; }
+ string Message { get; }
+ string Name { get; }
+ UUID ID { get; }
///
/// Bitfield indicating which strings should be processed as regex.
@@ -52,6 +48,10 @@ namespace OpenSim.Region.Framework.Interfaces
/// 2 corresponds to IWorldCommListenerInfo::GetMessage()
///
int RegexBitfield { get; }
+ Object[] GetSerializationData();
+
+ void Deactivate();
+ void Activate();
}
public interface IWorldComm
@@ -67,7 +67,6 @@ namespace OpenSim.Region.Framework.Interfaces
/// the script during 'peek' time. Parameter hostID is needed to
/// determine the position of the script.
///
- /// localID of the script engine
/// UUID of the script engine
/// UUID of the SceneObjectPart
/// channel to listen on
@@ -75,7 +74,7 @@ namespace OpenSim.Region.Framework.Interfaces
/// key to filter on (user given, could be totally faked)
/// msg to filter on
/// number of the scripts handle
- int Listen(uint LocalID, UUID itemID, UUID hostID, int channel, string name, UUID id, string msg);
+ int Listen(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg);
///
/// Create a listen event callback with the specified filters.
@@ -83,7 +82,6 @@ namespace OpenSim.Region.Framework.Interfaces
/// the script during 'peek' time. Parameter hostID is needed to
/// determine the position of the script.
///
- /// localID of the script engine
/// UUID of the script engine
/// UUID of the SceneObjectPart
/// channel to listen on
@@ -92,7 +90,7 @@ namespace OpenSim.Region.Framework.Interfaces
/// msg to filter on
/// Bitfield indicating which strings should be processed as regex.
/// number of the scripts handle
- int Listen(uint LocalID, UUID itemID, UUID hostID, int channel, string name, UUID id, string msg, int regexBitfield);
+ int Listen(UUID itemID, UUID hostID, int channel, string name, UUID id, string msg, int regexBitfield);
///
/// This method scans over the objects which registered an interest in listen callbacks.
@@ -146,7 +144,6 @@ namespace OpenSim.Region.Framework.Interfaces
void ListenRemove(UUID itemID, int handle);
void DeleteListener(UUID itemID);
Object[] GetSerializationData(UUID itemID);
- void CreateFromData(uint localID, UUID itemID, UUID hostID,
- Object[] data);
+ void CreateFromData(UUID itemID, UUID hostID, Object[] data);
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
index 719bb7ee5d..2cc502c0df 100755
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
@@ -454,16 +454,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
switch (type)
{
case "listener":
- m_Listener[engine].CreateFromData(localID, itemID,
- hostID, item);
+ m_Listener[engine].CreateFromData(itemID, hostID, item);
break;
case "timer":
- m_ScriptTimer[engine].CreateFromData(localID, itemID,
- hostID, item);
+ m_ScriptTimer[engine].CreateFromData(localID, itemID, hostID, item);
break;
case "sensor":
- m_SensorRepeat[engine].CreateFromData(localID,
- itemID, hostID, item);
+ m_SensorRepeat[engine].CreateFromData(localID, itemID, hostID, item);
break;
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 49d8aec436..c49848d24a 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -1340,7 +1340,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return -1;
UUID.TryParse(ID, out UUID keyID);
- return wComm.Listen(m_host.LocalId, m_item.ItemID, m_host.UUID, channelID, name, keyID, msg);
+ return wComm.Listen(m_item.ItemID, m_host.UUID, channelID, name, keyID, msg);
}
public void llListenControl(int number, int active)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index b22279e577..fc755705ca 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -3998,7 +3998,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if(UUID.TryParse(prim, out UUID pID) && pID.IsNotZero())
{
SceneObjectPart obj = World.GetSceneObjectPart(pID);
- SetProjectionParams(obj, llprojection, texture, fov, focus, amb);
+ if(obj != null)
+ {
+ if(obj.OwnerID.Equals(m_host.OwnerID))
+ SetProjectionParams(obj, llprojection, texture, fov, focus, amb);
+ }
}
else
SetProjectionParams(m_host, llprojection, texture, fov, focus, amb);
@@ -4598,9 +4602,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public LSL_Integer osListenRegex(int channelID, string name, string ID, string msg, int regexBitfield)
{
CheckThreatLevel(ThreatLevel.Low, "osListenRegex");
+ IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface();
+ if(wComm == null)
+ return -1;
UUID.TryParse(ID, out UUID keyID);
-
// if we want the name to be used as a regular expression, ensure it is valid first.
if ((regexBitfield & ScriptBaseClass.OS_LISTEN_REGEX_NAME) == ScriptBaseClass.OS_LISTEN_REGEX_NAME)
{
@@ -4608,7 +4614,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
Regex.IsMatch("", name);
}
- catch (Exception)
+ catch
{
OSSLShoutError("Name regex is invalid.");
return -1;
@@ -4622,24 +4628,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
Regex.IsMatch("", msg);
}
- catch (Exception)
+ catch
{
OSSLShoutError("Message regex is invalid.");
return -1;
}
}
- IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface();
- return (wComm == null) ? -1 : wComm.Listen(
- m_host.LocalId,
- m_item.ItemID,
- m_host.UUID,
- channelID,
- name,
- keyID,
- msg,
- regexBitfield
- );
+ return wComm.Listen(m_item.ItemID, m_host.UUID,
+ channelID, name, keyID, msg, regexBitfield);
}
public LSL_Integer osRegexIsMatch(string input, string pattern)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Dataserver.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Dataserver.cs
index 008b25c144..6315a832f9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Dataserver.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Dataserver.cs
@@ -189,10 +189,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
catch { }
ds.action = null;
+
lock (DataserverRequests)
{
- if (DataserverRequests.TryGetValue(id, out ds))
- DataserverRequests.Remove(id);
+ DataserverRequests.Remove(id);
}
}
@@ -200,20 +200,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
public void DataserverReply(string identifier, string reply)
{
DataserverRequest ds;
-
lock (DataserverRequests)
{
- if (!DataserverRequests.ContainsKey(identifier))
+ if (!DataserverRequests.TryGetValue(identifier, out ds))
return;
-
- ds = DataserverRequests[identifier];
DataserverRequests.Remove(identifier);
}
m_CmdManager.m_ScriptEngine.PostObjectEvent(ds.localID,
new EventParams("dataserver", new Object[]
- { new LSL_Types.LSLString(ds.ID.ToString()),
- new LSL_Types.LSLString(reply)},
+ {
+ new LSL_Types.LSLString(ds.ID.ToString()),
+ new LSL_Types.LSLString(reply)
+ },
new DetectParams[0]));
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Listener.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Listener.cs
index efa86fc0e0..5115205dba 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Listener.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Listener.cs
@@ -62,25 +62,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
if (m_commsPlugin != null)
{
- while (m_commsPlugin.HasMessages())
+ ListenerInfo lInfo;
+ while ((lInfo = (ListenerInfo)m_commsPlugin.GetNextMessage()) != null)
{
- ListenerInfo lInfo = (ListenerInfo)m_commsPlugin.GetNextMessage();
-
//Deliver data to prim's listen handler
object[] resobj = new object[]
{
- new LSL_Types.LSLInteger(lInfo.GetChannel()),
- new LSL_Types.LSLString(lInfo.GetName()),
- new LSL_Types.LSLString(lInfo.GetID().ToString()),
- new LSL_Types.LSLString(lInfo.GetMessage())
+ new LSL_Types.LSLInteger(lInfo.Channel),
+ new LSL_Types.LSLString(lInfo.Name),
+ new LSL_Types.LSLString(lInfo.ID.ToString()),
+ new LSL_Types.LSLString(lInfo.Message)
};
foreach (IScriptEngine e in m_CmdManager.ScriptEngines)
{
- e.PostScriptEvent(
- lInfo.GetItemID(), new EventParams(
- "listen", resobj,
- new DetectParams[0]));
+ e.PostScriptEvent(lInfo.ItemID, new EventParams("listen", resobj, new DetectParams[0]));
}
}
}
@@ -94,11 +90,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
return new Object[]{};
}
- public void CreateFromData(uint localID, UUID itemID, UUID hostID,
- Object[] data)
+ public void CreateFromData( UUID itemID, UUID hostID, Object[] data)
{
if (m_commsPlugin != null)
- m_commsPlugin.CreateFromData(localID, itemID, hostID, data);
+ m_commsPlugin.CreateFromData(itemID, hostID, data);
}
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index b8938ff05b..58b1f87252 100755
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -253,10 +253,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine
public void Initialise(IConfigSource configSource)
{
- if (configSource.Configs["XEngine"] == null)
+ m_ScriptConfig = configSource.Configs["XEngine"];
+ if (m_ScriptConfig == null)
return;
- m_ScriptConfig = configSource.Configs["XEngine"];
+ if (!m_ScriptConfig.GetBoolean("Enabled", true))
+ return;
+
+ m_Enabled = true;
+
m_ConfigSource = configSource;
string rawScriptStopStrategy = m_ScriptConfig.GetString("ScriptStopStrategy", "co-op");
@@ -282,19 +287,13 @@ namespace OpenSim.Region.ScriptEngine.XEngine
public void AddRegion(Scene scene)
{
- if (m_ScriptConfig == null)
+ if (!m_Enabled)
return;
-
+
m_ScriptFailCount = 0;
m_ScriptErrorMessage = String.Empty;
- m_Enabled = m_ScriptConfig.GetBoolean("Enabled", true);
-
- if (!m_Enabled)
- return;
-
- AppDomain.CurrentDomain.AssemblyResolve +=
- OnAssemblyResolve;
+ AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
m_Scene = scene;
m_log.InfoFormat("[XEngine]: Initializing scripts in region {0}", m_Scene.RegionInfo.RegionName);