Merge branch 'master' into httptests

httptests
UbitUmarov 2017-06-16 02:43:36 +01:00
commit 10d526f961
10 changed files with 53 additions and 208 deletions

View File

@ -157,6 +157,11 @@ namespace OpenSim.Framework.Capabilities
// the LLSD map/array types in the array need to be deserialised // the LLSD map/array types in the array need to be deserialised
// but first we need to know the right class to deserialise them into. // but first we need to know the right class to deserialise them into.
} }
else if(enumerator.Value is Boolean && field.FieldType == typeof(int) )
{
int i = (bool)enumerator.Value ? 1 : 0;
field.SetValue(obj, (object)i);
}
else else
{ {
field.SetValue(obj, enumerator.Value); field.SetValue(obj, enumerator.Value);

View File

@ -36,14 +36,8 @@ namespace OpenSim.Framework
public readonly DateTime StartedTime = DateTime.Now; public readonly DateTime StartedTime = DateTime.Now;
public AgentCircuitData agentcircuit = null; public AgentCircuitData agentcircuit = null;
public Dictionary<uint, byte[]> needAck;
public List<byte[]> out_packets = new List<byte[]>();
public Dictionary<uint, uint> pendingAcks = new Dictionary<uint,uint>();
public EndPoint proxyEP; public EndPoint proxyEP;
public uint sequence;
public byte[] usecircuit;
public EndPoint userEP; public EndPoint userEP;
public int resendThrottle; public int resendThrottle;
@ -59,9 +53,5 @@ namespace OpenSim.Framework
public int targetThrottle; public int targetThrottle;
public int maxThrottle; public int maxThrottle;
public Dictionary<string, int> SyncRequests = new Dictionary<string,int>();
public Dictionary<string, int> AsyncRequests = new Dictionary<string,int>();
public Dictionary<string, int> GenericRequests = new Dictionary<string,int>();
} }
} }

View File

@ -2617,7 +2617,7 @@ namespace OpenSim.Framework
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context, bool dotimeout = true) public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context, bool dotimeout = true)
{ {
Interlocked.Increment(ref numTotalThreadFuncsCalled); Interlocked.Increment(ref numTotalThreadFuncsCalled);
/*
if (context != null) if (context != null)
{ {
if (!m_fireAndForgetCallsMade.ContainsKey(context)) if (!m_fireAndForgetCallsMade.ContainsKey(context))
@ -2630,7 +2630,7 @@ namespace OpenSim.Framework
else else
m_fireAndForgetCallsInProgress[context]++; m_fireAndForgetCallsInProgress[context]++;
} }
*/
WaitCallback realCallback; WaitCallback realCallback;
bool loggingEnabled = LogThreadPool > 0; bool loggingEnabled = LogThreadPool > 0;
@ -2647,8 +2647,8 @@ namespace OpenSim.Framework
Culture.SetCurrentCulture(); Culture.SetCurrentCulture();
callback(o); callback(o);
if (context != null) // if (context != null)
m_fireAndForgetCallsInProgress[context]--; // m_fireAndForgetCallsInProgress[context]--;
}; };
} }
else else
@ -2688,8 +2688,8 @@ namespace OpenSim.Framework
if ((loggingEnabled || (threadFuncOverloadMode == 1)) && threadInfo.LogThread) if ((loggingEnabled || (threadFuncOverloadMode == 1)) && threadInfo.LogThread)
m_log.DebugFormat("Exit threadfunc {0} ({1})", threadFuncNum, FormatDuration(threadInfo.Elapsed())); m_log.DebugFormat("Exit threadfunc {0} ({1})", threadFuncNum, FormatDuration(threadInfo.Elapsed()));
if (context != null) // if (context != null)
m_fireAndForgetCallsInProgress[context]--; // m_fireAndForgetCallsInProgress[context]--;
} }
}; };
} }
@ -2967,7 +2967,8 @@ namespace OpenSim.Framework
/// <returns></returns> /// <returns></returns>
public static Int32 EnvironmentTickCount() public static Int32 EnvironmentTickCount()
{ {
return Environment.TickCount & EnvironmentTickCountMask; double now = GetTimeStampMS();
return (int)now;
} }
const Int32 EnvironmentTickCountMask = 0x3fffffff; const Int32 EnvironmentTickCountMask = 0x3fffffff;
@ -2993,7 +2994,8 @@ namespace OpenSim.Framework
/// <returns>subtraction of passed prevValue from current Environment.TickCount</returns> /// <returns>subtraction of passed prevValue from current Environment.TickCount</returns>
public static Int32 EnvironmentTickCountSubtract(Int32 prevValue) public static Int32 EnvironmentTickCountSubtract(Int32 prevValue)
{ {
return EnvironmentTickCountSubtract(EnvironmentTickCount(), prevValue); double now = GetTimeStampMS();
return EnvironmentTickCountSubtract((int)now, prevValue);
} }
// Returns value of Tick Count A - TickCount B accounting for wrapping of TickCount // Returns value of Tick Count A - TickCount B accounting for wrapping of TickCount

View File

@ -705,29 +705,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// </param> /// </param>
/// <returns>true if the handler was added. This is currently always the case.</returns> /// <returns>true if the handler was added. This is currently always the case.</returns>
public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool doAsync) public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool doAsync)
{
return AddLocalPacketHandler(packetType, handler, doAsync, false);
}
/// <summary>
/// Add a handler for the given packet type.
/// </summary>
/// <param name="packetType"></param>
/// <param name="handler"></param>
/// <param name="doAsync">
/// If true, when the packet is received handle it on a different thread. Whether this is given direct to
/// a threadpool thread or placed in a queue depends on the inEngine parameter.
/// </param>
/// <param name="inEngine">
/// If async is false then this parameter is ignored.
/// If async is true and inEngine is false, then the packet is sent directly to a
/// threadpool thread.
/// If async is true and inEngine is true, then the packet is sent to the IncomingPacketAsyncHandlingEngine.
/// This may result in slower handling but reduces the risk of overloading the simulator when there are many
/// simultaneous async requests.
/// </param>
/// <returns>true if the handler was added. This is currently always the case.</returns>
public bool AddLocalPacketHandler(PacketType packetType, PacketMethod handler, bool doAsync, bool inEngine)
{ {
bool result = false; bool result = false;
lock (m_packetHandlers) lock (m_packetHandlers)
@ -735,7 +712,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (!m_packetHandlers.ContainsKey(packetType)) if (!m_packetHandlers.ContainsKey(packetType))
{ {
m_packetHandlers.Add( m_packetHandlers.Add(
packetType, new PacketProcessor() { method = handler, Async = doAsync, InEngine = inEngine }); packetType, new PacketProcessor() { method = handler, Async = doAsync});
result = true; result = true;
} }
} }
@ -770,31 +747,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
PacketProcessor pprocessor; PacketProcessor pprocessor;
if (m_packetHandlers.TryGetValue(packet.Type, out pprocessor)) if (m_packetHandlers.TryGetValue(packet.Type, out pprocessor))
{ {
ClientInfo cinfo = UDPClient.GetClientInfo();
//there is a local handler for this packet type //there is a local handler for this packet type
if (pprocessor.Async) if (pprocessor.Async)
{ {
if (!cinfo.AsyncRequests.ContainsKey(packet.Type.ToString()))
cinfo.AsyncRequests[packet.Type.ToString()] = 0;
cinfo.AsyncRequests[packet.Type.ToString()]++;
object obj = new AsyncPacketProcess(this, pprocessor.method, packet); object obj = new AsyncPacketProcess(this, pprocessor.method, packet);
/*
if (pprocessor.InEngine)
m_udpServer.IpahEngine.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
else
Util.FireAndForget(ProcessSpecificPacketAsync, obj, packet.Type.ToString());
*/
m_asyncPacketProcess.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj)); m_asyncPacketProcess.QueueJob(packet.Type.ToString(), () => ProcessSpecificPacketAsync(obj));
result = true; result = true;
} }
else else
{ {
if (!cinfo.SyncRequests.ContainsKey(packet.Type.ToString()))
cinfo.SyncRequests[packet.Type.ToString()] = 0;
cinfo.SyncRequests[packet.Type.ToString()]++;
result = pprocessor.method(this, packet); result = pprocessor.method(this, packet);
} }
} }
@ -809,11 +771,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
if (found) if (found)
{ {
ClientInfo cinfo = UDPClient.GetClientInfo();
if (!cinfo.GenericRequests.ContainsKey(packet.Type.ToString()))
cinfo.GenericRequests[packet.Type.ToString()] = 0;
cinfo.GenericRequests[packet.Type.ToString()]++;
result = method(this, packet); result = method(this, packet);
} }
} }
@ -5995,10 +5952,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest, false); AddLocalPacketHandler(PacketType.ParcelBuy, HandleParcelBuyRequest, false);
AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest);
AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest);
AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage, true, true); AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage);
AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest, true, true); AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest);
AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer);
AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate, true, true); AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate);
AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply); AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply);
AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage); AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage);
AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship); AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship);
@ -6040,8 +5997,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams); AddLocalPacketHandler(PacketType.ObjectExtraParams, HandleObjectExtraParams);
AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate); AddLocalPacketHandler(PacketType.ObjectDuplicate, HandleObjectDuplicate);
AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects); AddLocalPacketHandler(PacketType.RequestMultipleObjects, HandleRequestMultipleObjects);
AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect, true, true); AddLocalPacketHandler(PacketType.ObjectSelect, HandleObjectSelect);
AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect, true, true); AddLocalPacketHandler(PacketType.ObjectDeselect, HandleObjectDeselect);
AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition); AddLocalPacketHandler(PacketType.ObjectPosition, HandleObjectPosition);
AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale); AddLocalPacketHandler(PacketType.ObjectScale, HandleObjectScale);
AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation); AddLocalPacketHandler(PacketType.ObjectRotation, HandleObjectRotation);
@ -6185,8 +6142,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AddLocalPacketHandler(PacketType.PickDelete, HandlePickDelete); AddLocalPacketHandler(PacketType.PickDelete, HandlePickDelete);
AddLocalPacketHandler(PacketType.PickGodDelete, HandlePickGodDelete); AddLocalPacketHandler(PacketType.PickGodDelete, HandlePickGodDelete);
AddLocalPacketHandler(PacketType.PickInfoUpdate, HandlePickInfoUpdate); AddLocalPacketHandler(PacketType.PickInfoUpdate, HandlePickInfoUpdate);
AddLocalPacketHandler(PacketType.AvatarNotesUpdate, HandleAvatarNotesUpdate, true, true); AddLocalPacketHandler(PacketType.AvatarNotesUpdate, HandleAvatarNotesUpdate);
AddLocalPacketHandler(PacketType.AvatarInterestsUpdate, HandleAvatarInterestsUpdate, true, true); AddLocalPacketHandler(PacketType.AvatarInterestsUpdate, HandleAvatarInterestsUpdate);
AddLocalPacketHandler(PacketType.GrantUserRights, HandleGrantUserRights); AddLocalPacketHandler(PacketType.GrantUserRights, HandleGrantUserRights);
AddLocalPacketHandler(PacketType.PlacesQuery, HandlePlacesQuery); AddLocalPacketHandler(PacketType.PlacesQuery, HandlePlacesQuery);
AddLocalPacketHandler(PacketType.UpdateMuteListEntry, HandleUpdateMuteListEntry); AddLocalPacketHandler(PacketType.UpdateMuteListEntry, HandleUpdateMuteListEntry);
@ -13436,7 +13393,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
SendAssetNotFound(req); SendAssetNotFound(req);
return; return;
} }
} }
if (transferRequest.TransferInfo.SourceType == (int)SourceType.Asset) if (transferRequest.TransferInfo.SourceType == (int)SourceType.Asset)
@ -13513,11 +13469,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// </summary> /// </summary>
public bool Async { get; set; } public bool Async { get; set; }
/// <summary>
/// If async is true, should this packet be handled in the async engine or given directly to a threadpool
/// thread?
/// </summary>
public bool InEngine { get; set; }
} }
public class AsyncPacketProcess public class AsyncPacketProcess

View File

@ -42,6 +42,7 @@ using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Serialization; using OpenSim.Region.Framework.Scenes.Serialization;
using OpenSim.Services.Interfaces; using OpenSim.Services.Interfaces;
using PermissionMask = OpenSim.Framework.PermissionMask;
namespace OpenSim.Region.CoreModules.Avatar.Attachments namespace OpenSim.Region.CoreModules.Avatar.Attachments
{ {
@ -896,6 +897,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
if (item != null) if (item != null)
{ {
// attach is rez, need to update permissions
item.Flags &= ~(uint)(InventoryItemFlags.ObjectSlamPerm | InventoryItemFlags.ObjectOverwriteBase |
InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup |
InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner);
uint permsBase = (uint)(PermissionMask.Copy | PermissionMask.Transfer |
PermissionMask.Modify | PermissionMask.Move |
PermissionMask.Export | PermissionMask.FoldedMask);
permsBase &= grp.CurrentAndFoldedNextPermissions();
permsBase |= (uint)PermissionMask.Move;
item.BasePermissions = permsBase;
item.CurrentPermissions = permsBase;
item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask | (uint)PermissionMask.Move;
item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask;
item.GroupPermissions = permsBase & grp.RootPart.GroupMask;
item.CurrentPermissions &=
((uint)PermissionMask.Copy |
(uint)PermissionMask.Transfer |
(uint)PermissionMask.Modify |
(uint)PermissionMask.Move |
(uint)PermissionMask.Export |
(uint)PermissionMask.FoldedMask); // Preserve folded permissions ??
AssetBase asset = m_scene.CreateAsset( AssetBase asset = m_scene.CreateAsset(
grp.GetPartName(grp.LocalId), grp.GetPartName(grp.LocalId),
grp.GetPartDescription(grp.LocalId), grp.GetPartDescription(grp.LocalId),

View File

@ -247,11 +247,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
{ {
FriendInfo[] friends = GetFriendsFromCache(principalID); FriendInfo[] friends = GetFriendsFromCache(principalID);
FriendInfo finfo = GetFriend(friends, friendID); FriendInfo finfo = GetFriend(friends, friendID);
if (finfo != null) if (finfo != null && finfo.TheirFlags != -1)
{ {
return finfo.TheirFlags; return finfo.TheirFlags;
} }
return 0; return 0;
} }
@ -756,7 +755,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
if (friend == null) if (friend == null)
return; return;
if((friend.TheirFlags & (int)FriendRights.CanSeeOnMap) == 0) if(friend.TheirFlags == -1 || (friend.TheirFlags & (int)FriendRights.CanSeeOnMap) == 0)
return; return;
Scene hunterScene = (Scene)remoteClient.Scene; Scene hunterScene = (Scene)remoteClient.Scene;

View File

@ -214,7 +214,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
FriendInfo[] friends = GetFriendsFromCache(client.AgentId); FriendInfo[] friends = GetFriendsFromCache(client.AgentId);
foreach (FriendInfo f in friends) foreach (FriendInfo f in friends)
{ {
client.SendChangeUserRights(new UUID(f.Friend), client.AgentId, f.TheirFlags); int rights = f.TheirFlags;
if(rights != -1 )
client.SendChangeUserRights(new UUID(f.Friend), client.AgentId, rights);
} }
} }
} }

View File

@ -124,15 +124,6 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
"Without the 'full' option, only root agents are shown." "Without the 'full' option, only root agents are shown."
+ " With the 'full' option child agents are also shown.", + " With the 'full' option child agents are also shown.",
(mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd)));
scene.AddCommand(
"Comms", this, "show client stats",
"show client stats [first_name last_name]",
"Show client request stats",
"Without the 'first_name last_name' option, all clients are shown."
+ " With the 'first_name last_name' option only a specific client is shown.",
(mod, cmd) => MainConsole.Instance.Output(HandleClientStatsReport(cmd)));
} }
public void RemoveRegion(Scene scene) public void RemoveRegion(Scene scene)
@ -540,107 +531,6 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden
return report.ToString(); return report.ToString();
} }
/// <summary>
/// Show client stats data
/// </summary>
/// <param name="showParams"></param>
/// <returns></returns>
protected string HandleClientStatsReport(string[] showParams)
{
// NOTE: This writes to m_log on purpose. We want to store this information
// in case we need to analyze it later.
//
if (showParams.Length <= 4)
{
m_log.InfoFormat("[INFO]: {0,-12} {1,-20} {2,-6} {3,-11} {4,-11} {5,-16}", "Region", "Name", "Root", "Time", "Reqs/min", "AgentUpdates");
foreach (Scene scene in m_scenes.Values)
{
scene.ForEachClient(
delegate(IClientAPI client)
{
if (client is LLClientView)
{
LLClientView llClient = client as LLClientView;
ClientInfo cinfo = llClient.UDPClient.GetClientInfo();
int avg_reqs = cinfo.AsyncRequests.Values.Sum() + cinfo.GenericRequests.Values.Sum() + cinfo.SyncRequests.Values.Sum();
avg_reqs = avg_reqs / ((DateTime.Now - cinfo.StartedTime).Minutes + 1);
string childAgentStatus;
if (llClient.SceneAgent != null)
childAgentStatus = llClient.SceneAgent.IsChildAgent ? "N" : "Y";
else
childAgentStatus = "Off!";
m_log.InfoFormat("[INFO]: {0,-12} {1,-20} {2,-6} {3,-11} {4,-11} {5,-16}",
scene.RegionInfo.RegionName, llClient.Name,
childAgentStatus,
(DateTime.Now - cinfo.StartedTime).Minutes,
avg_reqs,
string.Format(
"{0} ({1:0.00}%)",
llClient.TotalAgentUpdates,
cinfo.SyncRequests.ContainsKey("AgentUpdate")
? (float)cinfo.SyncRequests["AgentUpdate"] / llClient.TotalAgentUpdates * 100
: 0));
}
});
}
return string.Empty;
}
string fname = "", lname = "";
if (showParams.Length > 3)
fname = showParams[3];
if (showParams.Length > 4)
lname = showParams[4];
foreach (Scene scene in m_scenes.Values)
{
scene.ForEachClient(
delegate(IClientAPI client)
{
if (client is LLClientView)
{
LLClientView llClient = client as LLClientView;
if (llClient.Name == fname + " " + lname)
{
ClientInfo cinfo = llClient.GetClientInfo();
AgentCircuitData aCircuit = scene.AuthenticateHandler.GetAgentCircuitData(llClient.CircuitCode);
if (aCircuit == null) // create a dummy one
aCircuit = new AgentCircuitData();
if (!llClient.SceneAgent.IsChildAgent)
m_log.InfoFormat("[INFO]: {0} # {1} # {2}", llClient.Name, Util.GetViewerName(aCircuit), aCircuit.Id0);
int avg_reqs = cinfo.AsyncRequests.Values.Sum() + cinfo.GenericRequests.Values.Sum() + cinfo.SyncRequests.Values.Sum();
avg_reqs = avg_reqs / ((DateTime.Now - cinfo.StartedTime).Minutes + 1);
m_log.InfoFormat("[INFO]:");
m_log.InfoFormat("[INFO]: {0} # {1} # Time: {2}min # Avg Reqs/min: {3}", scene.RegionInfo.RegionName,
(llClient.SceneAgent.IsChildAgent ? "Child" : "Root"), (DateTime.Now - cinfo.StartedTime).Minutes, avg_reqs);
Dictionary<string, int> sortedDict = (from entry in cinfo.AsyncRequests orderby entry.Value descending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
PrintRequests("TOP ASYNC", sortedDict, cinfo.AsyncRequests.Values.Sum());
sortedDict = (from entry in cinfo.SyncRequests orderby entry.Value descending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
PrintRequests("TOP SYNC", sortedDict, cinfo.SyncRequests.Values.Sum());
sortedDict = (from entry in cinfo.GenericRequests orderby entry.Value descending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
PrintRequests("TOP GENERIC", sortedDict, cinfo.GenericRequests.Values.Sum());
}
}
});
}
return string.Empty;
}
private void PrintRequests(string type, Dictionary<string, int> sortedDict, int sum) private void PrintRequests(string type, Dictionary<string, int> sortedDict, int sum)
{ {
m_log.InfoFormat("[INFO]:"); m_log.InfoFormat("[INFO]:");

View File

@ -965,17 +965,6 @@
;; it is more usefull if there are no previously compiled scripts DLLs (as with DeleteScriptsOnStartup = true) ;; it is more usefull if there are no previously compiled scripts DLLs (as with DeleteScriptsOnStartup = true)
;CompactMemOnLoad = false ;CompactMemOnLoad = false
;# {DefaultCompileLanguage} {Enabled:true} {Default script language?} {lsl vb cs} lsl
;; Default language for scripts
; DefaultCompileLanguage = "lsl"
;# {AllowedCompilers} {Enabled:true} {Languages to allow (comma separated)?} {} lsl
;; List of allowed languages (lsl,vb,cs)
;; AllowedCompilers=lsl,cs,vb
;; *warning*, non lsl languages have access to static methods such as
;; System.IO.File. Enable at your own risk.
; AllowedCompilers = "lsl"
;; Compile debug info (line numbers) into the script assemblies ;; Compile debug info (line numbers) into the script assemblies
; CompileWithDebugInformation = true ; CompileWithDebugInformation = true

View File

@ -1792,14 +1792,6 @@
; Save the source of all compiled scripts ; Save the source of all compiled scripts
WriteScriptSourceToDebugFile = false WriteScriptSourceToDebugFile = false
; Default language for scripts
DefaultCompileLanguage = lsl
; List of allowed languages (lsl,vb,cs)
; AllowedCompilers=lsl,cs,vb
; *warning*, non lsl languages have access to static methods such as System.IO.File. Enable at your own risk.
AllowedCompilers=lsl
; Compile debug info (line numbers) into the script assemblies ; Compile debug info (line numbers) into the script assemblies
CompileWithDebugInformation = true CompileWithDebugInformation = true