aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs53
1 files changed, 41 insertions, 12 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 2ca2657..ef49205 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -40,11 +40,10 @@ using OpenMetaverse.Packets;
40using OpenMetaverse.StructuredData; 40using OpenMetaverse.StructuredData;
41using OpenSim.Framework; 41using OpenSim.Framework;
42using OpenSim.Framework.Client; 42using OpenSim.Framework.Client;
43using OpenSim.Framework.Communications.Cache; 43
44using OpenSim.Framework.Statistics; 44using OpenSim.Framework.Statistics;
45using OpenSim.Region.Framework.Interfaces; 45using OpenSim.Region.Framework.Interfaces;
46using OpenSim.Region.Framework.Scenes; 46using OpenSim.Region.Framework.Scenes;
47using OpenSim.Region.Framework.Scenes.Hypergrid;
48using OpenSim.Services.Interfaces; 47using OpenSim.Services.Interfaces;
49using Timer = System.Timers.Timer; 48using Timer = System.Timers.Timer;
50using AssetLandmark = OpenSim.Framework.AssetLandmark; 49using AssetLandmark = OpenSim.Framework.AssetLandmark;
@@ -122,7 +121,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
122 public event ObjectAttach OnObjectAttach; 121 public event ObjectAttach OnObjectAttach;
123 public event ObjectDeselect OnObjectDetach; 122 public event ObjectDeselect OnObjectDetach;
124 public event ObjectDrop OnObjectDrop; 123 public event ObjectDrop OnObjectDrop;
125 public event GenericCall2 OnCompleteMovementToRegion; 124 public event GenericCall1 OnCompleteMovementToRegion;
126 public event UpdateAgent OnAgentUpdate; 125 public event UpdateAgent OnAgentUpdate;
127 public event AgentRequestSit OnAgentRequestSit; 126 public event AgentRequestSit OnAgentRequestSit;
128 public event AgentSit OnAgentSit; 127 public event AgentSit OnAgentSit;
@@ -353,6 +352,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
353 private bool m_SendLogoutPacketWhenClosing = true; 352 private bool m_SendLogoutPacketWhenClosing = true;
354 private AgentUpdateArgs lastarg; 353 private AgentUpdateArgs lastarg;
355 private bool m_IsActive = true; 354 private bool m_IsActive = true;
355 private bool m_IsLoggingOut = false;
356 356
357 protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>(); 357 protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>();
358 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers 358 protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers
@@ -416,6 +416,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
416 get { return m_IsActive; } 416 get { return m_IsActive; }
417 set { m_IsActive = value; } 417 set { m_IsActive = value; }
418 } 418 }
419 public bool IsLoggingOut
420 {
421 get { return m_IsLoggingOut; }
422 set { m_IsLoggingOut = value; }
423 }
424
419 public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } } 425 public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } }
420 426
421 #endregion Properties 427 #endregion Properties
@@ -2527,6 +2533,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2527 2533
2528 public void SendAsset(AssetRequestToClient req) 2534 public void SendAsset(AssetRequestToClient req)
2529 { 2535 {
2536 if (req.AssetInf.Data == null)
2537 {
2538 m_log.ErrorFormat("Cannot send asset {0} ({1}), asset data is null",
2539 req.AssetInf.ID, req.AssetInf.Metadata.ContentType);
2540 return;
2541 }
2542
2530 //m_log.Debug("sending asset " + req.RequestAssetID); 2543 //m_log.Debug("sending asset " + req.RequestAssetID);
2531 TransferInfoPacket Transfer = new TransferInfoPacket(); 2544 TransferInfoPacket Transfer = new TransferInfoPacket();
2532 Transfer.TransferInfo.ChannelType = 2; 2545 Transfer.TransferInfo.ChannelType = 2;
@@ -4065,10 +4078,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4065 EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); 4078 EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock();
4066 edata.CovenantID = covenant; 4079 edata.CovenantID = covenant;
4067 edata.CovenantTimestamp = 0; 4080 edata.CovenantTimestamp = 0;
4068 if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) 4081 edata.EstateOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
4069 edata.EstateOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
4070 else
4071 edata.EstateOwnerID = m_scene.RegionInfo.MasterAvatarAssignedUUID;
4072 edata.EstateName = Utils.StringToBytes(m_scene.RegionInfo.EstateSettings.EstateName); 4082 edata.EstateName = Utils.StringToBytes(m_scene.RegionInfo.EstateSettings.EstateName);
4073 einfopack.Data = edata; 4083 einfopack.Data = edata;
4074 OutPacket(einfopack, ThrottleOutPacketType.Task); 4084 OutPacket(einfopack, ThrottleOutPacketType.Task);
@@ -4089,8 +4099,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4089 4099
4090 //Sending Estate Settings 4100 //Sending Estate Settings
4091 returnblock[0].Parameter = Utils.StringToBytes(estateName); 4101 returnblock[0].Parameter = Utils.StringToBytes(estateName);
4092 // TODO: remove this cruft once MasterAvatar is fully deprecated
4093 //
4094 returnblock[1].Parameter = Utils.StringToBytes(estateOwner.ToString()); 4102 returnblock[1].Parameter = Utils.StringToBytes(estateOwner.ToString());
4095 returnblock[2].Parameter = Utils.StringToBytes(estateID.ToString()); 4103 returnblock[2].Parameter = Utils.StringToBytes(estateID.ToString());
4096 4104
@@ -5518,6 +5526,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5518 // for the client session anyway, in order to protect ourselves against bad code in plugins 5526 // for the client session anyway, in order to protect ourselves against bad code in plugins
5519 try 5527 try
5520 { 5528 {
5529
5521 byte[] visualparams = new byte[appear.VisualParam.Length]; 5530 byte[] visualparams = new byte[appear.VisualParam.Length];
5522 for (int i = 0; i < appear.VisualParam.Length; i++) 5531 for (int i = 0; i < appear.VisualParam.Length; i++)
5523 visualparams[i] = appear.VisualParam[i].ParamValue; 5532 visualparams[i] = appear.VisualParam[i].ParamValue;
@@ -5728,10 +5737,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5728 5737
5729 private bool HandleCompleteAgentMovement(IClientAPI sender, Packet Pack) 5738 private bool HandleCompleteAgentMovement(IClientAPI sender, Packet Pack)
5730 { 5739 {
5731 GenericCall2 handlerCompleteMovementToRegion = OnCompleteMovementToRegion; 5740 GenericCall1 handlerCompleteMovementToRegion = OnCompleteMovementToRegion;
5732 if (handlerCompleteMovementToRegion != null) 5741 if (handlerCompleteMovementToRegion != null)
5733 { 5742 {
5734 handlerCompleteMovementToRegion(); 5743 handlerCompleteMovementToRegion(sender);
5735 } 5744 }
5736 handlerCompleteMovementToRegion = null; 5745 handlerCompleteMovementToRegion = null;
5737 5746
@@ -7051,7 +7060,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7051 assetRequestItem = invService.GetItem(assetRequestItem); 7060 assetRequestItem = invService.GetItem(assetRequestItem);
7052 if (assetRequestItem == null) 7061 if (assetRequestItem == null)
7053 { 7062 {
7054 assetRequestItem = ((Scene)m_scene).CommsManager.UserProfileCacheService.LibraryRoot.FindItem(itemID); 7063 ILibraryService lib = m_scene.RequestModuleInterface<ILibraryService>();
7064 if (lib != null)
7065 assetRequestItem = lib.LibraryRootFolder.FindItem(itemID);
7055 if (assetRequestItem == null) 7066 if (assetRequestItem == null)
7056 return true; 7067 return true;
7057 } 7068 }
@@ -11346,6 +11357,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11346 const uint m_maxPacketSize = 600; 11357 const uint m_maxPacketSize = 600;
11347 int numPackets = 1; 11358 int numPackets = 1;
11348 11359
11360 if (data == null)
11361 return 0;
11362
11349 if (data.LongLength > m_maxPacketSize) 11363 if (data.LongLength > m_maxPacketSize)
11350 { 11364 {
11351 // over max number of bytes so split up file 11365 // over max number of bytes so split up file
@@ -11591,5 +11605,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11591 packet.PropertiesData.LanguagesText = Utils.StringToBytes(languages); 11605 packet.PropertiesData.LanguagesText = Utils.StringToBytes(languages);
11592 OutPacket(packet, ThrottleOutPacketType.Task); 11606 OutPacket(packet, ThrottleOutPacketType.Task);
11593 } 11607 }
11608
11609 public void SendChangeUserRights(UUID agentID, UUID friendID, int rights)
11610 {
11611 ChangeUserRightsPacket packet = (ChangeUserRightsPacket)PacketPool.Instance.GetPacket(PacketType.ChangeUserRights);
11612
11613 packet.AgentData = new ChangeUserRightsPacket.AgentDataBlock();
11614 packet.AgentData.AgentID = agentID;
11615
11616 packet.Rights = new ChangeUserRightsPacket.RightsBlock[1];
11617 packet.Rights[0] = new ChangeUserRightsPacket.RightsBlock();
11618 packet.Rights[0].AgentRelated = friendID;
11619 packet.Rights[0].RelatedRights = rights;
11620
11621 OutPacket(packet, ThrottleOutPacketType.Task);
11622 }
11594 } 11623 }
11595} 11624}