Yengine: simplify ossl severe error message, and make it on debug channel like Xengine
parent
911ef0ce52
commit
27da6f1301
|
@ -444,8 +444,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
*/
|
||||
private void HandleScriptException(Exception e)
|
||||
{
|
||||
// The script threw some kind of exception that was not caught at
|
||||
// script level, so the script is no longer running an event handler.
|
||||
// The script threw some kind of exception that was not caught at
|
||||
// script level, so the script is no longer running an event handler.
|
||||
|
||||
ScriptEventCode curevent = eventCode;
|
||||
eventCode = ScriptEventCode.None;
|
||||
stackFrames = null;
|
||||
|
||||
|
@ -464,19 +466,60 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
m_SleepUntil = DateTime.MaxValue;
|
||||
m_Engine.World.DeleteSceneObject(m_Part.ParentGroup, false);
|
||||
}
|
||||
else if(e is ScriptResetException)
|
||||
else if (e is ScriptResetException)
|
||||
{
|
||||
// Script did an llResetScript().
|
||||
m_RunOnePhase = "resetting...";
|
||||
ResetLocked("HandleScriptResetException");
|
||||
}
|
||||
else if (e is ScriptException)
|
||||
{
|
||||
// Some general script error.
|
||||
SendScriptErrorMessage(e, curevent);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Some general script error.
|
||||
// Some general script error.
|
||||
SendErrorMessage(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void SendScriptErrorMessage(Exception e, ScriptEventCode ev)
|
||||
{
|
||||
StringBuilder msg = new StringBuilder();
|
||||
|
||||
msg.Append("YEngine: ");
|
||||
if (e.Message != null)
|
||||
msg.Append(e.Message);
|
||||
|
||||
msg.Append(" (prim: ");
|
||||
msg.Append(m_Part.Name);
|
||||
|
||||
msg.Append(" script: ");
|
||||
msg.Append(m_Item.Name);
|
||||
msg.Append(" event: ");
|
||||
msg.Append(ev.ToString());
|
||||
msg.Append(" at: <");
|
||||
Vector3 pos = m_Part.AbsolutePosition;
|
||||
msg.Append((int)Math.Floor(pos.X));
|
||||
msg.Append(',');
|
||||
msg.Append((int)Math.Floor(pos.Y));
|
||||
msg.Append(',');
|
||||
msg.Append((int)Math.Floor(pos.Z));
|
||||
msg.Append(">) Script must be Reset to re-enable.\n");
|
||||
|
||||
string msgst = msg.ToString();
|
||||
if (msgst.Length > 1000)
|
||||
msgst = msgst.Substring(0, 1000);
|
||||
|
||||
m_log.Info(msgst);
|
||||
m_Engine.World.SimChat(Utils.StringToBytes(msgst),
|
||||
ChatTypeEnum.DebugChannel, 2147483647,
|
||||
m_Part.AbsolutePosition,
|
||||
m_Part.Name, m_Part.UUID, false);
|
||||
m_SleepUntil = DateTime.MaxValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief There was an exception running script event handler.
|
||||
* Display error message and disable script (in a way
|
||||
|
@ -536,41 +579,10 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
|||
continue;
|
||||
}
|
||||
this.llOwnerSay(line);
|
||||
imstr.Append(line);
|
||||
imstr.Append('\n');
|
||||
}
|
||||
|
||||
// Send as instant message in case user not online.
|
||||
// Code modelled from llInstantMessage().
|
||||
IMessageTransferModule transferModule = m_Engine.World.RequestModuleInterface<IMessageTransferModule>();
|
||||
if(transferModule != null)
|
||||
{
|
||||
UUID friendTransactionID = UUID.Random();
|
||||
GridInstantMessage gim = new GridInstantMessage();
|
||||
gim.fromAgentID = new Guid(m_Part.UUID.ToString());
|
||||
gim.toAgentID = new Guid(m_Part.OwnerID.ToString());
|
||||
gim.imSessionID = new Guid(friendTransactionID.ToString());
|
||||
gim.timestamp = (uint)Util.UnixTimeSinceEpoch();
|
||||
gim.message = imstr.ToString();
|
||||
gim.dialog = (byte)19; // messgage from script
|
||||
gim.fromGroup = false;
|
||||
gim.offline = (byte)0;
|
||||
gim.ParentEstateID = 0;
|
||||
gim.Position = pos;
|
||||
gim.RegionID = m_Engine.World.RegionInfo.RegionID.Guid;
|
||||
gim.binaryBucket = Util.StringToBytes256(
|
||||
"{0}/{1}/{2}/{3}",
|
||||
m_Engine.World.RegionInfo.RegionName,
|
||||
(int)Math.Floor(pos.X),
|
||||
(int)Math.Floor(pos.Y),
|
||||
(int)Math.Floor(pos.Z));
|
||||
transferModule.SendInstantMessage(gim, delegate (bool success)
|
||||
{
|
||||
});
|
||||
}
|
||||
|
||||
// Say script is sleeping for a very long time.
|
||||
// Reset() is able to cancel this sleeping.
|
||||
// Say script is sleeping for a very long time.
|
||||
// Reset() is able to cancel this sleeping.
|
||||
m_SleepUntil = DateTime.MaxValue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue