* Moved script packet handlers from 'unimplemented' to 'Script Packets'

0.6.0-stable
lbsa71 2008-07-08 11:02:53 +00:00
parent 35f5db2a1c
commit b1b529f94e
1 changed files with 180 additions and 173 deletions

View File

@ -42,12 +42,12 @@ using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Statistics; using OpenSim.Framework.Statistics;
using OpenSim.Region.ClientStack.LindenUDP; using OpenSim.Region.ClientStack.LindenUDP;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
using Timer=System.Timers.Timer; using Timer = System.Timers.Timer;
namespace OpenSim.Region.ClientStack.LindenUDP namespace OpenSim.Region.ClientStack.LindenUDP
{ {
public delegate bool PacketMethod(IClientAPI simClient, Packet packet); public delegate bool PacketMethod(IClientAPI simClient, Packet packet);
/// <summary> /// <summary>
/// Class that keeps track of past packets so that they don't get /// Class that keeps track of past packets so that they don't get
@ -727,7 +727,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_log.WarnFormat( m_log.WarnFormat(
"[CLIENT]: New user request denied to avatar {0} connecting with circuit code {1} from {2}", "[CLIENT]: New user request denied to avatar {0} connecting with circuit code {1} from {2}",
m_agentId, m_circuitCode, m_userEndPoint); m_agentId, m_circuitCode, m_userEndPoint);
m_packetQueue.Close(); m_packetQueue.Close();
m_clientThread.Abort(); m_clientThread.Abort();
} }
@ -742,7 +742,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
m_secureSessionId = sessionInfo.LoginInfo.SecureSession; m_secureSessionId = sessionInfo.LoginInfo.SecureSession;
} }
// This sets up all the timers // This sets up all the timers
InitNewClient(); InitNewClient();
@ -753,24 +753,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
if (e is ThreadAbortException) if (e is ThreadAbortException)
throw e; throw e;
if (StatsManager.SimExtraStats != null) if (StatsManager.SimExtraStats != null)
StatsManager.SimExtraStats.AddAbnormalClientThreadTermination(); StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
// Don't let a failure in an individual client thread crash the whole sim. // Don't let a failure in an individual client thread crash the whole sim.
m_log.ErrorFormat("[CLIENT]: Client thread for {0} {1} crashed. Logging them out. Exception {2}", Name, AgentId, e); m_log.ErrorFormat("[CLIENT]: Client thread for {0} {1} crashed. Logging them out. Exception {2}", Name, AgentId, e);
try try
{ {
// Make an attempt to alert the user that their session has crashed // Make an attempt to alert the user that their session has crashed
AgentAlertMessagePacket packet AgentAlertMessagePacket packet
= BuildAgentAlertPacket( = BuildAgentAlertPacket(
"Unfortunately the session for this client on the server has crashed.\n" "Unfortunately the session for this client on the server has crashed.\n"
+ "Any further actions taken will not be processed.\n" + "Any further actions taken will not be processed.\n"
+ "Please relog", true); + "Please relog", true);
ProcessOutPacket(packet); ProcessOutPacket(packet);
// There may be a better way to do this. Perhaps kick? Not sure this propogates notifications to // There may be a better way to do this. Perhaps kick? Not sure this propogates notifications to
// listeners yet, though. // listeners yet, though.
Logout(this); Logout(this);
@ -779,7 +779,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
if (e2 is ThreadAbortException) if (e2 is ThreadAbortException)
throw e2; throw e2;
m_log.ErrorFormat("[CLIENT]: Further exception thrown on forced session logout. {0}", e2); m_log.ErrorFormat("[CLIENT]: Further exception thrown on forced session logout. {0}", e2);
} }
} }
@ -1108,7 +1108,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void DoSendLayerData(object o) private void DoSendLayerData(object o)
{ {
float[] map = (float[])o; float[] map = (float[])o;
try try
{ {
for (int y = 0; y < 16; y++) for (int y = 0; y < 16; y++)
@ -1120,10 +1120,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// SendLayerPacket(map, y, x); // SendLayerPacket(map, y, x);
// Thread.Sleep(150); // Thread.Sleep(150);
//} //}
for (int x= 0; x < 16; x++) for (int x = 0; x < 16; x++)
{ {
SendLayerData(x, y, map); SendLayerData(x, y, map);
Thread.Sleep(35); Thread.Sleep(35);
} }
} }
} }
@ -1278,15 +1278,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag) public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag)
{ {
MapBlockData[] mapBlocks2 = mapBlocks.ToArray(); MapBlockData[] mapBlocks2 = mapBlocks.ToArray();
int maxsend = 10; int maxsend = 10;
//int packets = Math.Ceiling(mapBlocks2.Length / maxsend); //int packets = Math.Ceiling(mapBlocks2.Length / maxsend);
List<MapBlockData> sendingBlocks = new List<MapBlockData>(); List<MapBlockData> sendingBlocks = new List<MapBlockData>();
for (int i = 0; i < mapBlocks2.Length; i++) for (int i = 0; i < mapBlocks2.Length; i++)
{ {
sendingBlocks.Add(mapBlocks2[i]); sendingBlocks.Add(mapBlocks2[i]);
@ -1389,14 +1389,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
payPriceReply.ObjectData.ObjectID = objectID; payPriceReply.ObjectData.ObjectID = objectID;
payPriceReply.ObjectData.DefaultPayPrice = payPrice[0]; payPriceReply.ObjectData.DefaultPayPrice = payPrice[0];
payPriceReply.ButtonData=new PayPriceReplyPacket.ButtonDataBlock[4]; payPriceReply.ButtonData = new PayPriceReplyPacket.ButtonDataBlock[4];
payPriceReply.ButtonData[0]=new PayPriceReplyPacket.ButtonDataBlock(); payPriceReply.ButtonData[0] = new PayPriceReplyPacket.ButtonDataBlock();
payPriceReply.ButtonData[0].PayButton = payPrice[1]; payPriceReply.ButtonData[0].PayButton = payPrice[1];
payPriceReply.ButtonData[1]=new PayPriceReplyPacket.ButtonDataBlock(); payPriceReply.ButtonData[1] = new PayPriceReplyPacket.ButtonDataBlock();
payPriceReply.ButtonData[1].PayButton = payPrice[2]; payPriceReply.ButtonData[1].PayButton = payPrice[2];
payPriceReply.ButtonData[2]=new PayPriceReplyPacket.ButtonDataBlock(); payPriceReply.ButtonData[2] = new PayPriceReplyPacket.ButtonDataBlock();
payPriceReply.ButtonData[2].PayButton = payPrice[3]; payPriceReply.ButtonData[2].PayButton = payPrice[3];
payPriceReply.ButtonData[3]=new PayPriceReplyPacket.ButtonDataBlock(); payPriceReply.ButtonData[3] = new PayPriceReplyPacket.ButtonDataBlock();
payPriceReply.ButtonData[3].PayButton = payPrice[4]; payPriceReply.ButtonData[3].PayButton = payPrice[4];
OutPacket(payPriceReply, ThrottleOutPacketType.Task); OutPacket(payPriceReply, ThrottleOutPacketType.Task);
@ -1448,8 +1448,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// 6 to 7 items at a time, so let's stick with 6 // 6 to 7 items at a time, so let's stick with 6
int MAX_ITEMS_PER_PACKET = 6; int MAX_ITEMS_PER_PACKET = 6;
//Ckrinke This variable is not used, so comment out to remove the warning from the compiler (3-21-08) //Ckrinke This variable is not used, so comment out to remove the warning from the compiler (3-21-08)
//Ckrinke uint FULL_MASK_PERMISSIONS = 2147483647; //Ckrinke uint FULL_MASK_PERMISSIONS = 2147483647;
if (fetchItems) if (fetchItems)
{ {
@ -1576,7 +1576,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
descend.FolderData[i].FolderID = folder.ID; descend.FolderData[i].FolderID = folder.ID;
descend.FolderData[i].Name = Helpers.StringToField(folder.Name); descend.FolderData[i].Name = Helpers.StringToField(folder.Name);
descend.FolderData[i].ParentID = folder.ParentID; descend.FolderData[i].ParentID = folder.ParentID;
descend.FolderData[i].Type = (sbyte) folder.Type; descend.FolderData[i].Type = (sbyte)folder.Type;
i++; i++;
count++; count++;
@ -1902,7 +1902,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
OutPacket(BuildAgentAlertPacket(message, modal), ThrottleOutPacketType.Task); OutPacket(BuildAgentAlertPacket(message, modal), ThrottleOutPacketType.Task);
} }
/// <summary> /// <summary>
/// Construct an agent alert packet /// Construct an agent alert packet
/// </summary> /// </summary>
@ -1915,7 +1915,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
alertPack.AgentData.AgentID = AgentId; alertPack.AgentData.AgentID = AgentId;
alertPack.AlertData.Message = Helpers.StringToField(message); alertPack.AlertData.Message = Helpers.StringToField(message);
alertPack.AlertData.Modal = modal; alertPack.AlertData.Modal = modal;
return alertPack; return alertPack;
} }
@ -2003,13 +2003,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendSunPos(LLVector3 Position, LLVector3 Velocity, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition) public void SendSunPos(LLVector3 Position, LLVector3 Velocity, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition)
{ {
SimulatorViewerTimeMessagePacket viewertime = (SimulatorViewerTimeMessagePacket)PacketPool.Instance.GetPacket(PacketType.SimulatorViewerTimeMessage); SimulatorViewerTimeMessagePacket viewertime = (SimulatorViewerTimeMessagePacket)PacketPool.Instance.GetPacket(PacketType.SimulatorViewerTimeMessage);
viewertime.TimeInfo.SunDirection = Position; viewertime.TimeInfo.SunDirection = Position;
viewertime.TimeInfo.SunAngVelocity = Velocity; viewertime.TimeInfo.SunAngVelocity = Velocity;
viewertime.TimeInfo.UsecSinceStart = CurrentTime; viewertime.TimeInfo.UsecSinceStart = CurrentTime;
viewertime.TimeInfo.SecPerDay = SecondsPerSunCycle; viewertime.TimeInfo.SecPerDay = SecondsPerSunCycle;
viewertime.TimeInfo.SecPerYear = SecondsPerYear; viewertime.TimeInfo.SecPerYear = SecondsPerYear;
viewertime.TimeInfo.SunPhase = OrbitalPosition; viewertime.TimeInfo.SunPhase = OrbitalPosition;
viewertime.Header.Reliable = false; viewertime.Header.Reliable = false;
viewertime.Header.Zerocoded = true; viewertime.Header.Zerocoded = true;
OutPacket(viewertime, ThrottleOutPacketType.Task); OutPacket(viewertime, ThrottleOutPacketType.Task);
} }
@ -2296,7 +2296,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
SendPrimitiveToClient(regionHandle, timeDilation, localID, primShape, pos, vel, SendPrimitiveToClient(regionHandle, timeDilation, localID, primShape, pos, vel,
acc, rotation, rvel, flags, acc, rotation, rvel, flags,
objectID, ownerID, text, color, parentID, particleSystem, objectID, ownerID, text, color, parentID, particleSystem,
clickAction, textureanim, false,(uint)0, LLUUID.Zero, LLUUID.Zero,0,0,0); clickAction, textureanim, false, (uint)0, LLUUID.Zero, LLUUID.Zero, 0, 0, 0);
} }
public void SendPrimitiveToClient( public void SendPrimitiveToClient(
@ -2485,13 +2485,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendSimStats(Packet pack) public void SendSimStats(Packet pack)
{ {
pack.Header.Reliable = false; pack.Header.Reliable = false;
OutPacket(pack, ThrottleOutPacketType.Task); OutPacket(pack, ThrottleOutPacketType.Task);
} }
public void SendObjectPropertiesFamilyData(uint RequestFlags, LLUUID ObjectUUID, LLUUID OwnerID, LLUUID GroupID, public void SendObjectPropertiesFamilyData(uint RequestFlags, LLUUID ObjectUUID, LLUUID OwnerID, LLUUID GroupID,
uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask,
uint NextOwnerMask, int OwnershipCost, byte SaleType,int SalePrice, uint Category, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category,
LLUUID LastOwnerID, string ObjectName, string Description) LLUUID LastOwnerID, string ObjectName, string Description)
{ {
ObjectPropertiesFamilyPacket objPropFamilyPack = (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily); ObjectPropertiesFamilyPacket objPropFamilyPack = (ObjectPropertiesFamilyPacket)PacketPool.Instance.GetPacket(PacketType.ObjectPropertiesFamily);
@ -2621,7 +2621,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
continue; continue;
BannedUsers[i] = bl[i].bannedUUID; BannedUsers[i] = bl[i].bannedUUID;
} }
EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket();
packet.AgentData.TransactionID = LLUUID.Random(); packet.AgentData.TransactionID = LLUUID.Random();
packet.AgentData.AgentID = this.AgentId; packet.AgentData.AgentID = this.AgentId;
@ -2659,10 +2659,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
RegionInfoPacket.RegionInfoBlock rinfoblk = new RegionInfoPacket.RegionInfoBlock(); RegionInfoPacket.RegionInfoBlock rinfoblk = new RegionInfoPacket.RegionInfoBlock();
rinfopack.AgentData.AgentID = this.AgentId; rinfopack.AgentData.AgentID = this.AgentId;
rinfopack.AgentData.SessionID = this.SessionId; rinfopack.AgentData.SessionID = this.SessionId;
rinfoblk.BillableFactor =args.billableFactor; rinfoblk.BillableFactor = args.billableFactor;
rinfoblk.EstateID = args.estateID; rinfoblk.EstateID = args.estateID;
rinfoblk.MaxAgents = args.maxAgents; rinfoblk.MaxAgents = args.maxAgents;
rinfoblk.ObjectBonusFactor =args.objectBonusFactor; rinfoblk.ObjectBonusFactor = args.objectBonusFactor;
rinfoblk.ParentEstateID = args.parentEstateID; rinfoblk.ParentEstateID = args.parentEstateID;
rinfoblk.PricePerMeter = args.pricePerMeter; rinfoblk.PricePerMeter = args.pricePerMeter;
rinfoblk.RedirectGridX = args.redirectGridX; rinfoblk.RedirectGridX = args.redirectGridX;
@ -2741,9 +2741,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
this.OutPacket(packet, ThrottleOutPacketType.Task); this.OutPacket(packet, ThrottleOutPacketType.Task);
} }
public void sendLandProperties(IClientAPI remote_client,int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) public void sendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
{ {
ParcelPropertiesPacket updatePacket = (ParcelPropertiesPacket) PacketPool.Instance.GetPacket(PacketType.ParcelProperties); ParcelPropertiesPacket updatePacket = (ParcelPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ParcelProperties);
// TODO: don't create new blocks if recycling an old packet // TODO: don't create new blocks if recycling an old packet
updatePacket.ParcelData.AABBMax = landData.AABBMax; updatePacket.ParcelData.AABBMax = landData.AABBMax;
@ -2755,13 +2755,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
updatePacket.ParcelData.Bitmap = landData.landBitmapByteArray; updatePacket.ParcelData.Bitmap = landData.landBitmapByteArray;
updatePacket.ParcelData.Desc = Helpers.StringToField(landData.landDesc); updatePacket.ParcelData.Desc = Helpers.StringToField(landData.landDesc);
updatePacket.ParcelData.Category = (byte) landData.category; updatePacket.ParcelData.Category = (byte)landData.category;
updatePacket.ParcelData.ClaimDate = landData.claimDate; updatePacket.ParcelData.ClaimDate = landData.claimDate;
updatePacket.ParcelData.ClaimPrice = landData.claimPrice; updatePacket.ParcelData.ClaimPrice = landData.claimPrice;
updatePacket.ParcelData.GroupID = landData.groupID; updatePacket.ParcelData.GroupID = landData.groupID;
updatePacket.ParcelData.GroupPrims = landData.groupPrims; updatePacket.ParcelData.GroupPrims = landData.groupPrims;
updatePacket.ParcelData.IsGroupOwned = landData.isGroupOwned; updatePacket.ParcelData.IsGroupOwned = landData.isGroupOwned;
updatePacket.ParcelData.LandingType = (byte) landData.landingType; updatePacket.ParcelData.LandingType = (byte)landData.landingType;
updatePacket.ParcelData.LocalID = landData.localID; updatePacket.ParcelData.LocalID = landData.localID;
if (landData.area > 0) if (landData.area > 0)
{ {
@ -2787,13 +2787,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
updatePacket.ParcelData.PassPrice = landData.passPrice; updatePacket.ParcelData.PassPrice = landData.passPrice;
updatePacket.ParcelData.PublicCount = 0; //unemplemented updatePacket.ParcelData.PublicCount = 0; //unemplemented
updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint) Simulator.RegionFlags.DenyAnonymous) > updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint)Simulator.RegionFlags.DenyAnonymous) >
0); 0);
updatePacket.ParcelData.RegionDenyIdentified = ((regionFlags & (uint) Simulator.RegionFlags.DenyIdentified) > updatePacket.ParcelData.RegionDenyIdentified = ((regionFlags & (uint)Simulator.RegionFlags.DenyIdentified) >
0); 0);
updatePacket.ParcelData.RegionDenyTransacted = ((regionFlags & (uint) Simulator.RegionFlags.DenyTransacted) > updatePacket.ParcelData.RegionDenyTransacted = ((regionFlags & (uint)Simulator.RegionFlags.DenyTransacted) >
0); 0);
updatePacket.ParcelData.RegionPushOverride = ((regionFlags & (uint) Simulator.RegionFlags.RestrictPushObject) > updatePacket.ParcelData.RegionPushOverride = ((regionFlags & (uint)Simulator.RegionFlags.RestrictPushObject) >
0); 0);
updatePacket.ParcelData.RentPrice = 0; updatePacket.ParcelData.RentPrice = 0;
@ -2813,13 +2813,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
updatePacket.ParcelData.SimWideTotalPrims = landData.simwidePrims; updatePacket.ParcelData.SimWideTotalPrims = landData.simwidePrims;
updatePacket.ParcelData.SnapSelection = snap_selection; updatePacket.ParcelData.SnapSelection = snap_selection;
updatePacket.ParcelData.SnapshotID = landData.snapshotID; updatePacket.ParcelData.SnapshotID = landData.snapshotID;
updatePacket.ParcelData.Status = (byte) landData.landStatus; updatePacket.ParcelData.Status = (byte)landData.landStatus;
updatePacket.ParcelData.TotalPrims = landData.ownerPrims + landData.groupPrims + landData.otherPrims + updatePacket.ParcelData.TotalPrims = landData.ownerPrims + landData.groupPrims + landData.otherPrims +
landData.selectedPrims; landData.selectedPrims;
updatePacket.ParcelData.UserLocation = landData.userLocation; updatePacket.ParcelData.UserLocation = landData.userLocation;
updatePacket.ParcelData.UserLookAt = landData.userLookAt; updatePacket.ParcelData.UserLookAt = landData.userLookAt;
updatePacket.Header.Zerocoded = true; updatePacket.Header.Zerocoded = true;
remote_client.OutPacket((Packet) updatePacket, ThrottleOutPacketType.Task); remote_client.OutPacket((Packet)updatePacket, ThrottleOutPacketType.Task);
} }
public void sendLandAccessListData(List<LLUUID> avatars, uint accessFlag, int localLandID) public void sendLandAccessListData(List<LLUUID> avatars, uint accessFlag, int localLandID)
@ -3330,14 +3330,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack) private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack)
{ {
UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket) Pack; UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack;
for (int i=0;i< upack.UUIDNameBlock.Length; i++) for (int i = 0; i < upack.UUIDNameBlock.Length; i++)
{ {
handlerUUIDGroupNameRequest = OnUUIDGroupNameRequest; handlerUUIDGroupNameRequest = OnUUIDGroupNameRequest;
if (handlerUUIDGroupNameRequest != null) if (handlerUUIDGroupNameRequest != null)
{ {
handlerUUIDGroupNameRequest(upack.UUIDNameBlock[i].ID,this); handlerUUIDGroupNameRequest(upack.UUIDNameBlock[i].ID, this);
} }
} }
@ -3421,7 +3421,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
return Logout(client); return Logout(client);
} }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@ -3754,7 +3754,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_needAck.Add(Pack.Header.Sequence, Pack); m_needAck.Add(Pack.Header.Sequence, Pack);
m_unAckedBytes += Pack.ToBytes().Length; m_unAckedBytes += Pack.ToBytes().Length;
} }
//BUG: severity=major - This looks like a framework bug!? //BUG: severity=major - This looks like a framework bug!?
catch (Exception) // HACKY catch (Exception) // HACKY
{ {
// Ignore // Ignore
@ -3777,7 +3777,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <param name="Pack"></param> /// <param name="Pack"></param>
protected virtual void SetPendingAcks(ref Packet Pack) protected virtual void SetPendingAcks(ref Packet Pack)
{ {
lock (m_pendingAcks) lock (m_pendingAcks)
{ {
// TODO: If we are over MAX_APPENDED_ACKS we should drain off some of these // TODO: If we are over MAX_APPENDED_ACKS we should drain off some of these
@ -3919,7 +3919,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
} }
} }
/// <summary> /// <summary>
/// The dreaded OutPacket. This should only be called from withink the ClientStack itself right now /// The dreaded OutPacket. This should only be called from withink the ClientStack itself right now
/// This is the entry point for simulator packets to go out to the client. /// This is the entry point for simulator packets to go out to the client.
@ -4127,9 +4127,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
uint regionX = 0; uint regionX = 0;
uint regionY = 0; uint regionY = 0;
try try
{ {
Helpers.LongToUInts(Scene.RegionInfo.RegionHandle,out regionX, out regionY); Helpers.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY);
locx = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[0].Parameter)) - (float)regionX; locx = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[0].Parameter)) - (float)regionX;
locy = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[1].Parameter)) - (float)regionY; locy = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[1].Parameter)) - (float)regionY;
locz = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[2].Parameter)); locz = Convert.ToSingle(Helpers.FieldToUTF8String(gmParams[2].Parameter));
@ -4149,7 +4148,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
break; break;
default: default:
m_log.Debug("[CLIENT]: Unknown Generic Message, Method: " + gmMethod + ". Invoice: " + gmInvoice.ToString() + ". Dumping Params:"); m_log.Debug("[CLIENT]: Unknown Generic Message, Method: " + gmMethod + ". Invoice: " + gmInvoice.ToString() + ". Dumping Params:");
for (int hi = 0; hi < gmParams.Length; hi++) for (int hi = 0; hi < gmParams.Length; hi++)
{ {
@ -4170,7 +4169,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
// always ack the packet! // always ack the packet!
ack_pack(Pack); ack_pack(Pack);
// check for duplicate packets.. packets that the client is // check for duplicate packets.. packets that the client is
// resending because it didn't receive our ack // resending because it didn't receive our ack
@ -4190,7 +4189,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_dupeLimiter.Add(Pack.Header.Sequence, pkdedupe); m_dupeLimiter.Add(Pack.Header.Sequence, pkdedupe);
} }
} }
// check if we've got a local packet handler for this packet.type. See RegisterLocalPacketHandlers() // check if we've got a local packet handler for this packet.type. See RegisterLocalPacketHandlers()
if (ProcessPacketMethod(Pack)) if (ProcessPacketMethod(Pack))
{ {
@ -4206,9 +4205,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
case PacketType.GenericMessage: case PacketType.GenericMessage:
GenericMessagePacket gmpack = (GenericMessagePacket)Pack; GenericMessagePacket gmpack = (GenericMessagePacket)Pack;
DecipherGenericMessage(Helpers.FieldToUTF8String(gmpack.MethodData.Method),gmpack.MethodData.Invoice,gmpack.ParamList); DecipherGenericMessage(Helpers.FieldToUTF8String(gmpack.MethodData.Method), gmpack.MethodData.Invoice, gmpack.ParamList);
break; break;
case PacketType.AvatarPropertiesRequest: case PacketType.AvatarPropertiesRequest:
AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack;
@ -4511,7 +4510,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerObjectDetach = OnObjectDetach; handlerObjectDetach = OnObjectDetach;
if (handlerObjectDetach != null) if (handlerObjectDetach != null)
{ {
handlerObjectDetach(obj,this); handlerObjectDetach(obj, this);
} }
} }
@ -4541,18 +4540,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
AgentUpdatePacket.AgentDataBlock x = agenUpdate.AgentData; AgentUpdatePacket.AgentDataBlock x = agenUpdate.AgentData;
AgentUpdateArgs arg = new AgentUpdateArgs(); AgentUpdateArgs arg = new AgentUpdateArgs();
arg.AgentID = x.AgentID; arg.AgentID = x.AgentID;
arg.BodyRotation = x.BodyRotation; arg.BodyRotation = x.BodyRotation;
arg.CameraAtAxis = x.CameraAtAxis; arg.CameraAtAxis = x.CameraAtAxis;
arg.CameraCenter = x.CameraCenter; arg.CameraCenter = x.CameraCenter;
arg.CameraLeftAxis = x.CameraLeftAxis; arg.CameraLeftAxis = x.CameraLeftAxis;
arg.CameraUpAxis = x.CameraUpAxis; arg.CameraUpAxis = x.CameraUpAxis;
arg.ControlFlags = x.ControlFlags; arg.ControlFlags = x.ControlFlags;
arg.Far = x.Far; arg.Far = x.Far;
arg.Flags = x.Flags; arg.Flags = x.Flags;
arg.HeadRotation = x.HeadRotation; arg.HeadRotation = x.HeadRotation;
arg.SessionID = x.SessionID; arg.SessionID = x.SessionID;
arg.State = x.State; arg.State = x.State;
handlerAgentUpdate = OnAgentUpdate; handlerAgentUpdate = OnAgentUpdate;
if (handlerAgentUpdate != null) if (handlerAgentUpdate != null)
@ -4842,7 +4841,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// DEPRECATED: but till libsecondlife removes it, people will use it // DEPRECATED: but till libsecondlife removes it, people will use it
ObjectPositionPacket position = (ObjectPositionPacket)Pack; ObjectPositionPacket position = (ObjectPositionPacket)Pack;
for (int i=0; i<position.ObjectData.Length; i++) for (int i = 0; i < position.ObjectData.Length; i++)
{ {
handlerUpdateVector = OnUpdatePrimGroupPosition; handlerUpdateVector = OnUpdatePrimGroupPosition;
if (handlerUpdateVector != null) if (handlerUpdateVector != null)
@ -4854,7 +4853,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// DEPRECATED: but till libsecondlife removes it, people will use it // DEPRECATED: but till libsecondlife removes it, people will use it
ObjectScalePacket scale = (ObjectScalePacket)Pack; ObjectScalePacket scale = (ObjectScalePacket)Pack;
for (int i=0; i<scale.ObjectData.Length; i++) for (int i = 0; i < scale.ObjectData.Length; i++)
{ {
handlerUpdatePrimGroupScale = OnUpdatePrimGroupScale; handlerUpdatePrimGroupScale = OnUpdatePrimGroupScale;
if (handlerUpdatePrimGroupScale != null) if (handlerUpdatePrimGroupScale != null)
@ -4866,7 +4865,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// DEPRECATED: but till libsecondlife removes it, people will use it // DEPRECATED: but till libsecondlife removes it, people will use it
ObjectRotationPacket rotation = (ObjectRotationPacket)Pack; ObjectRotationPacket rotation = (ObjectRotationPacket)Pack;
for (int i=0; i<rotation.ObjectData.Length; i++) for (int i = 0; i < rotation.ObjectData.Length; i++)
{ {
handlerUpdatePrimRotation = OnUpdatePrimGroupRotation; handlerUpdatePrimRotation = OnUpdatePrimGroupRotation;
if (handlerUpdatePrimRotation != null) if (handlerUpdatePrimRotation != null)
@ -5415,26 +5414,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerUpdateTaskInventory = OnUpdateTaskInventory; handlerUpdateTaskInventory = OnUpdateTaskInventory;
if (handlerUpdateTaskInventory != null) if (handlerUpdateTaskInventory != null)
{ {
TaskInventoryItem newTaskItem=new TaskInventoryItem(); TaskInventoryItem newTaskItem = new TaskInventoryItem();
newTaskItem.ItemID=updatetask.InventoryData.ItemID; newTaskItem.ItemID = updatetask.InventoryData.ItemID;
newTaskItem.ParentID=updatetask.InventoryData.FolderID; newTaskItem.ParentID = updatetask.InventoryData.FolderID;
newTaskItem.CreatorID=updatetask.InventoryData.CreatorID; newTaskItem.CreatorID = updatetask.InventoryData.CreatorID;
newTaskItem.OwnerID=updatetask.InventoryData.OwnerID; newTaskItem.OwnerID = updatetask.InventoryData.OwnerID;
newTaskItem.GroupID=updatetask.InventoryData.GroupID; newTaskItem.GroupID = updatetask.InventoryData.GroupID;
newTaskItem.BaseMask=updatetask.InventoryData.BaseMask; newTaskItem.BaseMask = updatetask.InventoryData.BaseMask;
newTaskItem.OwnerMask=updatetask.InventoryData.OwnerMask; newTaskItem.OwnerMask = updatetask.InventoryData.OwnerMask;
newTaskItem.GroupMask=updatetask.InventoryData.GroupMask; newTaskItem.GroupMask = updatetask.InventoryData.GroupMask;
newTaskItem.EveryoneMask=updatetask.InventoryData.EveryoneMask; newTaskItem.EveryoneMask = updatetask.InventoryData.EveryoneMask;
newTaskItem.NextOwnerMask=updatetask.InventoryData.NextOwnerMask; newTaskItem.NextOwnerMask = updatetask.InventoryData.NextOwnerMask;
//newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned; //newTaskItem.GroupOwned=updatetask.InventoryData.GroupOwned;
newTaskItem.Type=updatetask.InventoryData.Type; newTaskItem.Type = updatetask.InventoryData.Type;
newTaskItem.InvType=updatetask.InventoryData.InvType; newTaskItem.InvType = updatetask.InventoryData.InvType;
newTaskItem.Flags=updatetask.InventoryData.Flags; newTaskItem.Flags = updatetask.InventoryData.Flags;
//newTaskItem.SaleType=updatetask.InventoryData.SaleType; //newTaskItem.SaleType=updatetask.InventoryData.SaleType;
//newTaskItem.SalePrice=updatetask.InventoryData.SalePrice;; //newTaskItem.SalePrice=updatetask.InventoryData.SalePrice;;
newTaskItem.Name=Util.FieldToString(updatetask.InventoryData.Name); newTaskItem.Name = Util.FieldToString(updatetask.InventoryData.Name);
newTaskItem.Description=Util.FieldToString(updatetask.InventoryData.Description); newTaskItem.Description = Util.FieldToString(updatetask.InventoryData.Description);
newTaskItem.CreationDate=(uint)updatetask.InventoryData.CreationDate; newTaskItem.CreationDate = (uint)updatetask.InventoryData.CreationDate;
handlerUpdateTaskInventory(this, updatetask.InventoryData.TransactionID, handlerUpdateTaskInventory(this, updatetask.InventoryData.TransactionID,
newTaskItem, updatetask.UpdateData.LocalID); newTaskItem, updatetask.UpdateData.LocalID);
} }
@ -5478,25 +5477,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
RezScriptPacket rezScriptx = (RezScriptPacket)Pack; RezScriptPacket rezScriptx = (RezScriptPacket)Pack;
handlerRezScript = OnRezScript; handlerRezScript = OnRezScript;
InventoryItemBase item=new InventoryItemBase(); InventoryItemBase item = new InventoryItemBase();
item.ID=rezScriptx.InventoryBlock.ItemID; item.ID = rezScriptx.InventoryBlock.ItemID;
item.Folder=rezScriptx.InventoryBlock.FolderID; item.Folder = rezScriptx.InventoryBlock.FolderID;
item.Creator=rezScriptx.InventoryBlock.CreatorID; item.Creator = rezScriptx.InventoryBlock.CreatorID;
item.Owner=rezScriptx.InventoryBlock.OwnerID; item.Owner = rezScriptx.InventoryBlock.OwnerID;
item.BasePermissions=rezScriptx.InventoryBlock.BaseMask; item.BasePermissions = rezScriptx.InventoryBlock.BaseMask;
item.CurrentPermissions=rezScriptx.InventoryBlock.OwnerMask; item.CurrentPermissions = rezScriptx.InventoryBlock.OwnerMask;
item.EveryOnePermissions=rezScriptx.InventoryBlock.EveryoneMask; item.EveryOnePermissions = rezScriptx.InventoryBlock.EveryoneMask;
item.NextPermissions=rezScriptx.InventoryBlock.NextOwnerMask; item.NextPermissions = rezScriptx.InventoryBlock.NextOwnerMask;
item.GroupOwned=rezScriptx.InventoryBlock.GroupOwned; item.GroupOwned = rezScriptx.InventoryBlock.GroupOwned;
item.GroupID=rezScriptx.InventoryBlock.GroupID; item.GroupID = rezScriptx.InventoryBlock.GroupID;
item.AssetType=rezScriptx.InventoryBlock.Type; item.AssetType = rezScriptx.InventoryBlock.Type;
item.InvType=rezScriptx.InventoryBlock.InvType; item.InvType = rezScriptx.InventoryBlock.InvType;
item.Flags=rezScriptx.InventoryBlock.Flags; item.Flags = rezScriptx.InventoryBlock.Flags;
item.SaleType=rezScriptx.InventoryBlock.SaleType; item.SaleType = rezScriptx.InventoryBlock.SaleType;
item.SalePrice=rezScriptx.InventoryBlock.SalePrice; item.SalePrice = rezScriptx.InventoryBlock.SalePrice;
item.Name=Util.FieldToString(rezScriptx.InventoryBlock.Name); item.Name = Util.FieldToString(rezScriptx.InventoryBlock.Name);
item.Description=Util.FieldToString(rezScriptx.InventoryBlock.Description); item.Description = Util.FieldToString(rezScriptx.InventoryBlock.Description);
item.CreationDate=(int)rezScriptx.InventoryBlock.CreationDate; item.CreationDate = (int)rezScriptx.InventoryBlock.CreationDate;
if (handlerRezScript != null) if (handlerRezScript != null)
{ {
@ -5564,7 +5563,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerTeleportHomeRequest = OnTeleportHomeRequest; handlerTeleportHomeRequest = OnTeleportHomeRequest;
if (handlerTeleportHomeRequest != null) if (handlerTeleportHomeRequest != null)
{ {
handlerTeleportHomeRequest(this.AgentId,this); handlerTeleportHomeRequest(this.AgentId, this);
} }
break; break;
} }
@ -5781,7 +5780,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerParcelReturnObjectsRequest = OnParcelReturnObjectsRequest; handlerParcelReturnObjectsRequest = OnParcelReturnObjectsRequest;
if (handlerParcelReturnObjectsRequest != null) if (handlerParcelReturnObjectsRequest != null)
{ {
handlerParcelReturnObjectsRequest(parcelReturnObjects.ParcelData.LocalID,parcelReturnObjects.ParcelData.ReturnType,puserselectedOwnerIDs,puserselectedTaskIDs, this); handlerParcelReturnObjectsRequest(parcelReturnObjects.ParcelData.LocalID, parcelReturnObjects.ParcelData.ReturnType, puserselectedOwnerIDs, puserselectedTaskIDs, this);
} }
break; break;
@ -5805,12 +5804,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
case "setregioninfo": case "setregioninfo":
if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId))
{ {
OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter),convertParamStringToBool(messagePacket.ParamList[1].Parameter), OnSetEstateFlagsRequest(convertParamStringToBool(messagePacket.ParamList[0].Parameter), convertParamStringToBool(messagePacket.ParamList[1].Parameter),
convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter), convertParamStringToBool(messagePacket.ParamList[2].Parameter), !convertParamStringToBool(messagePacket.ParamList[3].Parameter),
Convert.ToInt16(Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter))), Convert.ToInt16(Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter))),
(float)Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[5].Parameter)), (float)Convert.ToDecimal(Helpers.FieldToUTF8String(messagePacket.ParamList[5].Parameter)),
Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[6].Parameter)), Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[6].Parameter)),
convertParamStringToBool(messagePacket.ParamList[7].Parameter),convertParamStringToBool(messagePacket.ParamList[8].Parameter)); convertParamStringToBool(messagePacket.ParamList[7].Parameter), convertParamStringToBool(messagePacket.ParamList[8].Parameter));
} }
@ -5842,7 +5841,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Int16 corner = Convert.ToInt16(splitField[0]); Int16 corner = Convert.ToInt16(splitField[0]);
LLUUID textureUUID = new LLUUID(splitField[1]); LLUUID textureUUID = new LLUUID(splitField[1]);
OnSetEstateTerrainDetailTexture(this, corner,textureUUID); OnSetEstateTerrainDetailTexture(this, corner, textureUUID);
} }
} }
} }
@ -5861,7 +5860,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
float lowValue = (float)Convert.ToDecimal(splitField[1]); float lowValue = (float)Convert.ToDecimal(splitField[1]);
float highValue = (float)Convert.ToDecimal(splitField[2]); float highValue = (float)Convert.ToDecimal(splitField[2]);
OnSetEstateTerrainTextureHeights(this,corner,lowValue,highValue); OnSetEstateTerrainTextureHeights(this, corner, lowValue, highValue);
} }
} }
} }
@ -5932,7 +5931,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId)) if (((Scene)m_scene).ExternalChecks.ExternalChecksCanIssueEstateCommand(this.AgentId))
{ {
int estateAccessType = Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter)); int estateAccessType = Convert.ToInt16(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter));
OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice,estateAccessType,new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter))); OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new LLUUID(Helpers.FieldToUTF8String(messagePacket.ParamList[2].Parameter)));
} }
break; break;
@ -5944,7 +5943,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
string SenderName = Helpers.FieldToUTF8String(messagePacket.ParamList[3].Parameter); string SenderName = Helpers.FieldToUTF8String(messagePacket.ParamList[3].Parameter);
string Message = Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter); string Message = Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter);
LLUUID sessionID = messagePacket.AgentData.SessionID; LLUUID sessionID = messagePacket.AgentData.SessionID;
OnSimulatorBlueBoxMessageRequest(this,invoice,SenderID, sessionID, SenderName,Message); OnSimulatorBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
} }
break; break;
case "instantmessage": case "instantmessage":
@ -5955,7 +5954,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
string SenderName = Helpers.FieldToUTF8String(messagePacket.ParamList[3].Parameter); string SenderName = Helpers.FieldToUTF8String(messagePacket.ParamList[3].Parameter);
string Message = Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter); string Message = Helpers.FieldToUTF8String(messagePacket.ParamList[4].Parameter);
LLUUID sessionID = messagePacket.AgentData.SessionID; LLUUID sessionID = messagePacket.AgentData.SessionID;
OnEstateBlueBoxMessageRequest(this,invoice,SenderID, sessionID, SenderName,Message); OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
} }
break; break;
case "setregiondebug": case "setregiondebug":
@ -5967,7 +5966,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
bool collisionEvents = convertParamStringToBool(messagePacket.ParamList[1].Parameter); bool collisionEvents = convertParamStringToBool(messagePacket.ParamList[1].Parameter);
bool physics = convertParamStringToBool(messagePacket.ParamList[2].Parameter); bool physics = convertParamStringToBool(messagePacket.ParamList[2].Parameter);
OnEstateDebugRegionRequest(this, invoice,SenderID,scripted,collisionEvents,physics); OnEstateDebugRegionRequest(this, invoice, SenderID, scripted, collisionEvents, physics);
} }
break; break;
case "teleporthomeuser": case "teleporthomeuser":
@ -5979,7 +5978,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Helpers.TryParse(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter), out Prey); Helpers.TryParse(Helpers.FieldToUTF8String(messagePacket.ParamList[1].Parameter), out Prey);
OnEstateTeleportOneUserHomeRequest(this,invoice,SenderID,Prey); OnEstateTeleportOneUserHomeRequest(this, invoice, SenderID, Prey);
} }
break; break;
case "colliders": case "colliders":
@ -6018,7 +6017,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
handlerLandStatRequest = OnLandStatRequest; handlerLandStatRequest = OnLandStatRequest;
if (handlerLandStatRequest != null) if (handlerLandStatRequest != null)
{ {
handlerLandStatRequest(lsrp.RequestData.ParcelLocalID,lsrp.RequestData.ReportType,lsrp.RequestData.RequestFlags,Helpers.FieldToUTF8String(lsrp.RequestData.Filter),this); handlerLandStatRequest(lsrp.RequestData.ParcelLocalID, lsrp.RequestData.ReportType, lsrp.RequestData.RequestFlags, Helpers.FieldToUTF8String(lsrp.RequestData.Filter), this);
} }
//int parcelID, uint reportType, uint requestflags, string filter //int parcelID, uint reportType, uint requestflags, string filter
@ -6136,6 +6135,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#endregion #endregion
#region Script Packets
case PacketType.GetScriptRunning:
GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack;
handlerGetScriptRunning = OnGetScriptRunning;
if (handlerGetScriptRunning != null)
{
handlerGetScriptRunning(this, scriptRunning.Script.ObjectID, scriptRunning.Script.ItemID);
}
break;
case PacketType.SetScriptRunning:
SetScriptRunningPacket setScriptRunning = (SetScriptRunningPacket)Pack;
handlerSetScriptRunning = OnSetScriptRunning;
if (handlerSetScriptRunning != null)
{
handlerSetScriptRunning(this, setScriptRunning.Script.ObjectID, setScriptRunning.Script.ItemID, setScriptRunning.Script.Running);
}
break;
case PacketType.ScriptReset:
ScriptResetPacket scriptResetPacket = (ScriptResetPacket)Pack;
handlerScriptReset = OnScriptReset;
if (handlerScriptReset != null)
{
handlerScriptReset(this, scriptResetPacket.Script.ObjectID, scriptResetPacket.Script.ItemID);
}
break;
#endregion
#region unimplemented handlers #region unimplemented handlers
case PacketType.StartPingCheck: case PacketType.StartPingCheck:
@ -6148,14 +6178,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// TODO: Perhaps this should be processed on the Sim to determine whether or not to drop a dead client // TODO: Perhaps this should be processed on the Sim to determine whether or not to drop a dead client
//m_log.Warn("[CLIENT]: unhandled CompletePingCheck packet"); //m_log.Warn("[CLIENT]: unhandled CompletePingCheck packet");
break; break;
case PacketType.ScriptReset:
ScriptResetPacket scriptResetPacket = (ScriptResetPacket)Pack;
handlerScriptReset = OnScriptReset;
if (handlerScriptReset != null)
{
handlerScriptReset(this, scriptResetPacket.Script.ObjectID, scriptResetPacket.Script.ItemID);
}
break;
case PacketType.ViewerStats: case PacketType.ViewerStats:
// TODO: handle this packet // TODO: handle this packet
m_log.Warn("[CLIENT]: unhandled ViewerStats packet"); m_log.Warn("[CLIENT]: unhandled ViewerStats packet");
@ -6166,9 +6189,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_log.Warn("[CLIENT]: unhandled CreateGroupRequest packet"); m_log.Warn("[CLIENT]: unhandled CreateGroupRequest packet");
break; break;
//case PacketType.GenericMessage: //case PacketType.GenericMessage:
// TODO: handle this packet // TODO: handle this packet
//m_log.Warn("[CLIENT]: unhandled GenericMessage packet"); //m_log.Warn("[CLIENT]: unhandled GenericMessage packet");
//break; //break;
case PacketType.MapItemRequest: case PacketType.MapItemRequest:
// TODO: handle this packet // TODO: handle this packet
m_log.Warn("[CLIENT]: unhandled MapItemRequest packet"); m_log.Warn("[CLIENT]: unhandled MapItemRequest packet");
@ -6206,22 +6229,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// TODO: handle this packet // TODO: handle this packet
m_log.Warn("[CLIENT]: unhandled InventoryDescent packet"); m_log.Warn("[CLIENT]: unhandled InventoryDescent packet");
break; break;
case PacketType.GetScriptRunning:
GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack;
handlerGetScriptRunning = OnGetScriptRunning;
if (handlerGetScriptRunning != null)
{
handlerGetScriptRunning(this, scriptRunning.Script.ObjectID, scriptRunning.Script.ItemID);
}
break;
case PacketType.SetScriptRunning:
SetScriptRunningPacket setScriptRunning = (SetScriptRunningPacket)Pack;
handlerSetScriptRunning = OnSetScriptRunning;
if (handlerSetScriptRunning != null)
{
handlerSetScriptRunning(this, setScriptRunning.Script.ObjectID, setScriptRunning.Script.ItemID, setScriptRunning.Script.Running);
}
break;
default: default:
m_log.Warn("[CLIENT]: unhandled packet " + Pack.ToString()); m_log.Warn("[CLIENT]: unhandled packet " + Pack.ToString());
break; break;
@ -6435,7 +6442,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendAsset(AssetRequestToClient req) public void SendAsset(AssetRequestToClient req)
{ {
//Console.WriteLine("sending asset " + req.RequestAssetID); //Console.WriteLine("sending asset " + req.RequestAssetID);
TransferInfoPacket Transfer = new TransferInfoPacket(); TransferInfoPacket Transfer = new TransferInfoPacket();
Transfer.TransferInfo.ChannelType = 2; Transfer.TransferInfo.ChannelType = 2;
@ -6511,7 +6518,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void SendTexture(AssetBase TextureAsset) public void SendTexture(AssetBase TextureAsset)
{ {
} }
public ClientInfo GetClientInfo() public ClientInfo GetClientInfo()
@ -6525,7 +6532,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
info.pendingAcks = m_pendingAcks; info.pendingAcks = m_pendingAcks;
info.needAck = new Dictionary<uint,byte[]>(); info.needAck = new Dictionary<uint, byte[]>();
lock (m_needAck) lock (m_needAck)
{ {
@ -6535,20 +6542,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
} }
/* pending /* pending
QueItem[] queitems = m_packetQueue.GetQueueArray(); QueItem[] queitems = m_packetQueue.GetQueueArray();
MainLog.Instance.Verbose("CLIENT", "Queue Count : [{0}]", queitems.Length); MainLog.Instance.Verbose("CLIENT", "Queue Count : [{0}]", queitems.Length);
for (int i = 0; i < queitems.Length; i++) for (int i = 0; i < queitems.Length; i++)
{ {
if (queitems[i].Incoming == false) if (queitems[i].Incoming == false)
{ {
info.out_packets.Add(queitems[i].Packet.ToBytes()); info.out_packets.Add(queitems[i].Packet.ToBytes());
MainLog.Instance.Verbose("CLIENT", "Add OutPacket [{0}]", queitems[i].Packet.Type.ToString()); MainLog.Instance.Verbose("CLIENT", "Add OutPacket [{0}]", queitems[i].Packet.Type.ToString());
} }
} }
*/ */
info.sequence = m_sequence; info.sequence = m_sequence;
@ -6561,7 +6568,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{ {
m_pendingAcks = info.pendingAcks; m_pendingAcks = info.pendingAcks;
m_needAck = new Dictionary<uint,Packet>(); m_needAck = new Dictionary<uint, Packet>();
Packet packet = null; Packet packet = null;
int packetEnd = 0; int packetEnd = 0;