diff options
author | John Hurliman | 2009-10-19 18:50:31 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-19 18:50:31 -0700 |
commit | 0a6ea33ac8faa015ad8014b429be0046ba3b3e0a (patch) | |
tree | 452cddb4228162a25d363de7838b2cb7fc3af523 /OpenSim | |
parent | * Removed OpenSim.Data.NHibernate (diff) | |
download | opensim-SC-0a6ea33ac8faa015ad8014b429be0046ba3b3e0a.zip opensim-SC-0a6ea33ac8faa015ad8014b429be0046ba3b3e0a.tar.gz opensim-SC-0a6ea33ac8faa015ad8014b429be0046ba3b3e0a.tar.bz2 opensim-SC-0a6ea33ac8faa015ad8014b429be0046ba3b3e0a.tar.xz |
* Optimized sending of terrain data
* Send terrain data in a spiral pattern instead of a typewriter pattern (placeholder until terrain data becomes part of the interest list management)
* Added a debug line when resent packets are being sent
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 312 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 23 |
2 files changed, 180 insertions, 155 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index a966b42..88faccf 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -45,7 +45,7 @@ using OpenSim.Region.Framework.Interfaces; | |||
45 | using OpenSim.Region.Framework.Scenes; | 45 | using OpenSim.Region.Framework.Scenes; |
46 | using OpenSim.Region.Framework.Scenes.Hypergrid; | 46 | using OpenSim.Region.Framework.Scenes.Hypergrid; |
47 | using OpenSim.Services.Interfaces; | 47 | using OpenSim.Services.Interfaces; |
48 | using Timer=System.Timers.Timer; | 48 | using Timer = System.Timers.Timer; |
49 | using AssetLandmark = OpenSim.Framework.AssetLandmark; | 49 | using AssetLandmark = OpenSim.Framework.AssetLandmark; |
50 | using Nini.Config; | 50 | using Nini.Config; |
51 | 51 | ||
@@ -342,7 +342,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
342 | protected UUID m_activeGroupID; | 342 | protected UUID m_activeGroupID; |
343 | protected string m_activeGroupName = String.Empty; | 343 | protected string m_activeGroupName = String.Empty; |
344 | protected ulong m_activeGroupPowers; | 344 | protected ulong m_activeGroupPowers; |
345 | protected Dictionary<UUID,ulong> m_groupPowers = new Dictionary<UUID, ulong>(); | 345 | protected Dictionary<UUID, ulong> m_groupPowers = new Dictionary<UUID, ulong>(); |
346 | protected int m_terrainCheckerCount; | 346 | protected int m_terrainCheckerCount; |
347 | protected uint m_agentFOVCounter; | 347 | protected uint m_agentFOVCounter; |
348 | 348 | ||
@@ -621,7 +621,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
621 | } | 621 | } |
622 | 622 | ||
623 | // Sound | 623 | // Sound |
624 | public void SoundTrigger(UUID soundId, UUID owerid, UUID Objectid,UUID ParentId,float Gain, Vector3 Position,UInt64 Handle) | 624 | public void SoundTrigger(UUID soundId, UUID owerid, UUID Objectid, UUID ParentId, float Gain, Vector3 Position, UInt64 Handle) |
625 | { | 625 | { |
626 | } | 626 | } |
627 | 627 | ||
@@ -658,7 +658,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
658 | handshake.RegionInfo.CacheID = UUID.Random(); //I guess this is for the client to remember an old setting? | 658 | handshake.RegionInfo.CacheID = UUID.Random(); //I guess this is for the client to remember an old setting? |
659 | handshake.RegionInfo2 = new RegionHandshakePacket.RegionInfo2Block(); | 659 | handshake.RegionInfo2 = new RegionHandshakePacket.RegionInfo2Block(); |
660 | handshake.RegionInfo2.RegionID = regionInfo.RegionID; | 660 | handshake.RegionInfo2.RegionID = regionInfo.RegionID; |
661 | 661 | ||
662 | handshake.RegionInfo3 = new RegionHandshakePacket.RegionInfo3Block(); | 662 | handshake.RegionInfo3 = new RegionHandshakePacket.RegionInfo3Block(); |
663 | handshake.RegionInfo3.CPUClassID = 9; | 663 | handshake.RegionInfo3.CPUClassID = 9; |
664 | handshake.RegionInfo3.CPURatio = 1; | 664 | handshake.RegionInfo3.CPURatio = 1; |
@@ -800,32 +800,55 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
800 | /// <param name="o"></param> | 800 | /// <param name="o"></param> |
801 | private void DoSendLayerData(object o) | 801 | private void DoSendLayerData(object o) |
802 | { | 802 | { |
803 | float[] map = (float[])o; | 803 | float[] map = LLHeightFieldMoronize((float[])o); |
804 | 804 | ||
805 | try | 805 | try |
806 | { | 806 | { |
807 | for (int y = 0; y < 16; y++) | 807 | //for (int y = 0; y < 16; y++) |
808 | { | 808 | //{ |
809 | // For some terrains, sending more than one terrain patch at once results in a libsecondlife exception | 809 | // for (int x = 0; x < 16; x++) |
810 | // see http://opensimulator.org/mantis/view.php?id=1662 | 810 | // { |
811 | //for (int x = 0; x < 16; x += 4) | 811 | // SendLayerData(x, y, map); |
812 | //{ | 812 | // } |
813 | // SendLayerPacket(map, y, x); | 813 | //} |
814 | // Thread.Sleep(150); | 814 | |
815 | //} | 815 | // Send LayerData in a spiral pattern. Fun! |
816 | for (int x = 0; x < 16; x++) | 816 | SendLayerTopRight(map, 0, 0, 15, 15); |
817 | { | ||
818 | SendLayerData(x, y, LLHeightFieldMoronize(map)); | ||
819 | Thread.Sleep(35); | ||
820 | } | ||
821 | } | ||
822 | } | 817 | } |
823 | catch (Exception e) | 818 | catch (Exception e) |
824 | { | 819 | { |
825 | m_log.Warn("[CLIENT]: ClientView.API.cs: SendLayerData() - Failed with exception " + e); | 820 | m_log.Error("[CLIENT]: SendLayerData() Failed with exception: " + e.Message, e); |
826 | } | 821 | } |
827 | } | 822 | } |
828 | 823 | ||
824 | private void SendLayerTopRight(float[] map, int x1, int y1, int x2, int y2) | ||
825 | { | ||
826 | // Row | ||
827 | for (int i = x1; i <= x2; i++) | ||
828 | SendLayerData(i, y1, map); | ||
829 | |||
830 | // Column | ||
831 | for (int j = y1 + 1; j <= y2; j++) | ||
832 | SendLayerData(x2, j, map); | ||
833 | |||
834 | if (x2 - x1 > 0) | ||
835 | SendLayerBottomLeft(map, x1, y1 + 1, x2 - 1, y2); | ||
836 | } | ||
837 | |||
838 | void SendLayerBottomLeft(float[] map, int x1, int y1, int x2, int y2) | ||
839 | { | ||
840 | // Row in reverse | ||
841 | for (int i = x2; i >= x1; i--) | ||
842 | SendLayerData(i, y2, map); | ||
843 | |||
844 | // Column in reverse | ||
845 | for (int j = y2 - 1; j >= y1; j--) | ||
846 | SendLayerData(x1, j, map); | ||
847 | |||
848 | if (x2 - x1 > 0) | ||
849 | SendLayerTopRight(map, x1 + 1, y1, x2, y2 - 1); | ||
850 | } | ||
851 | |||
829 | /// <summary> | 852 | /// <summary> |
830 | /// Sends a set of four patches (x, x+1, ..., x+3) to the client | 853 | /// Sends a set of four patches (x, x+1, ..., x+3) to the client |
831 | /// </summary> | 854 | /// </summary> |
@@ -854,22 +877,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
854 | { | 877 | { |
855 | try | 878 | try |
856 | { | 879 | { |
857 | int[] patches = new int[1]; | 880 | int[] patches = new int[] { py * 16 + px }; |
858 | int patchx, patchy; | 881 | float[] heightmap = (map.Length == 65536) ? |
859 | patchx = px; | 882 | map : |
860 | patchy = py; | 883 | LLHeightFieldMoronize(map); |
861 | 884 | ||
862 | patches[0] = patchx + 0 + patchy * 16; | 885 | LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(heightmap, patches); |
863 | 886 | layerpack.Header.Reliable = true; | |
864 | LayerDataPacket layerpack = TerrainCompressor.CreateLandPacket(((map.Length==65536)? map : LLHeightFieldMoronize(map)), patches); | ||
865 | layerpack.Header.Zerocoded = true; | ||
866 | 887 | ||
867 | OutPacket(layerpack, ThrottleOutPacketType.Land); | 888 | OutPacket(layerpack, ThrottleOutPacketType.Land); |
868 | |||
869 | } | 889 | } |
870 | catch (Exception e) | 890 | catch (Exception e) |
871 | { | 891 | { |
872 | m_log.Warn("[client]: ClientView.API.cs: SendLayerData() - Failed with exception " + e.ToString()); | 892 | m_log.Error("[CLIENT]: SendLayerData() Failed with exception: " + e.Message, e); |
873 | } | 893 | } |
874 | } | 894 | } |
875 | 895 | ||
@@ -898,7 +918,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
898 | Array.Copy(map, i * (int)Constants.RegionSize, returnmap, i * 256, 256); | 918 | Array.Copy(map, i * (int)Constants.RegionSize, returnmap, i * 256, 256); |
899 | } | 919 | } |
900 | 920 | ||
901 | |||
902 | //Array.Copy(map,0,returnmap,0,(map.Length < 65536)? map.Length : 65536); | 921 | //Array.Copy(map,0,returnmap,0,(map.Length < 65536)? map.Length : 65536); |
903 | 922 | ||
904 | return returnmap; | 923 | return returnmap; |
@@ -1010,14 +1029,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1010 | agentData.child = false; | 1029 | agentData.child = false; |
1011 | agentData.firstname = m_firstName; | 1030 | agentData.firstname = m_firstName; |
1012 | agentData.lastname = m_lastName; | 1031 | agentData.lastname = m_lastName; |
1013 | 1032 | ||
1014 | ICapabilitiesModule capsModule = m_scene.RequestModuleInterface<ICapabilitiesModule>(); | 1033 | ICapabilitiesModule capsModule = m_scene.RequestModuleInterface<ICapabilitiesModule>(); |
1015 | 1034 | ||
1016 | if (capsModule == null) // can happen when shutting down. | 1035 | if (capsModule == null) // can happen when shutting down. |
1017 | return agentData; | 1036 | return agentData; |
1018 | 1037 | ||
1019 | agentData.CapsPath = capsModule.GetCapsPath(m_agentId); | 1038 | agentData.CapsPath = capsModule.GetCapsPath(m_agentId); |
1020 | agentData.ChildrenCapSeeds = new Dictionary<ulong,string>(capsModule.GetChildrenSeeds(m_agentId)); | 1039 | agentData.ChildrenCapSeeds = new Dictionary<ulong, string>(capsModule.GetChildrenSeeds(m_agentId)); |
1021 | 1040 | ||
1022 | return agentData; | 1041 | return agentData; |
1023 | } | 1042 | } |
@@ -1213,7 +1232,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1213 | 1232 | ||
1214 | pc.PingID.PingID = seq; | 1233 | pc.PingID.PingID = seq; |
1215 | pc.PingID.OldestUnacked = (oldestPacket != null) ? oldestPacket.SequenceNumber : 0; | 1234 | pc.PingID.OldestUnacked = (oldestPacket != null) ? oldestPacket.SequenceNumber : 0; |
1216 | 1235 | ||
1217 | OutPacket(pc, ThrottleOutPacketType.Unknown); | 1236 | OutPacket(pc, ThrottleOutPacketType.Unknown); |
1218 | } | 1237 | } |
1219 | 1238 | ||
@@ -1519,7 +1538,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1519 | inventoryReply.Header.Zerocoded = true; | 1538 | inventoryReply.Header.Zerocoded = true; |
1520 | OutPacket(inventoryReply, ThrottleOutPacketType.Asset); | 1539 | OutPacket(inventoryReply, ThrottleOutPacketType.Asset); |
1521 | } | 1540 | } |
1522 | 1541 | ||
1523 | protected void SendBulkUpdateInventoryFolder(InventoryFolderBase folderBase) | 1542 | protected void SendBulkUpdateInventoryFolder(InventoryFolderBase folderBase) |
1524 | { | 1543 | { |
1525 | // We will use the same transaction id for all the separate packets to be sent out in this update. | 1544 | // We will use the same transaction id for all the separate packets to be sent out in this update. |
@@ -1543,7 +1562,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1543 | bulkUpdate.FolderData = folderDataBlocks.ToArray(); | 1562 | bulkUpdate.FolderData = folderDataBlocks.ToArray(); |
1544 | List<BulkUpdateInventoryPacket.ItemDataBlock> foo = new List<BulkUpdateInventoryPacket.ItemDataBlock>(); | 1563 | List<BulkUpdateInventoryPacket.ItemDataBlock> foo = new List<BulkUpdateInventoryPacket.ItemDataBlock>(); |
1545 | bulkUpdate.ItemData = foo.ToArray(); | 1564 | bulkUpdate.ItemData = foo.ToArray(); |
1546 | 1565 | ||
1547 | //m_log.Debug("SendBulkUpdateInventory :" + bulkUpdate); | 1566 | //m_log.Debug("SendBulkUpdateInventory :" + bulkUpdate); |
1548 | OutPacket(bulkUpdate, ThrottleOutPacketType.Asset); | 1567 | OutPacket(bulkUpdate, ThrottleOutPacketType.Asset); |
1549 | } | 1568 | } |
@@ -1666,7 +1685,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1666 | 1685 | ||
1667 | return itemBlock; | 1686 | return itemBlock; |
1668 | } | 1687 | } |
1669 | 1688 | ||
1670 | public void SendBulkUpdateInventory(InventoryNodeBase node) | 1689 | public void SendBulkUpdateInventory(InventoryNodeBase node) |
1671 | { | 1690 | { |
1672 | if (node is InventoryItemBase) | 1691 | if (node is InventoryItemBase) |
@@ -1676,7 +1695,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1676 | else | 1695 | else |
1677 | m_log.ErrorFormat("[CLIENT]: Client for {0} sent unknown inventory node named {1}", Name, node.Name); | 1696 | m_log.ErrorFormat("[CLIENT]: Client for {0} sent unknown inventory node named {1}", Name, node.Name); |
1678 | } | 1697 | } |
1679 | 1698 | ||
1680 | protected void SendBulkUpdateInventoryItem(InventoryItemBase item) | 1699 | protected void SendBulkUpdateInventoryItem(InventoryItemBase item) |
1681 | { | 1700 | { |
1682 | const uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; | 1701 | const uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; |
@@ -3100,9 +3119,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3100 | awb.ItemID = wearables[i].ItemID; | 3119 | awb.ItemID = wearables[i].ItemID; |
3101 | aw.WearableData[i] = awb; | 3120 | aw.WearableData[i] = awb; |
3102 | 3121 | ||
3103 | // m_log.DebugFormat( | 3122 | // m_log.DebugFormat( |
3104 | // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", | 3123 | // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", |
3105 | // awb.ItemID, awb.AssetID, i, Name); | 3124 | // awb.ItemID, awb.AssetID, i, Name); |
3106 | } | 3125 | } |
3107 | 3126 | ||
3108 | OutPacket(aw, ThrottleOutPacketType.Task); | 3127 | OutPacket(aw, ThrottleOutPacketType.Task); |
@@ -3270,7 +3289,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3270 | 3289 | ||
3271 | objupdate.RegionData.RegionHandle = data.RegionHandle; | 3290 | objupdate.RegionData.RegionHandle = data.RegionHandle; |
3272 | objupdate.RegionData.TimeDilation = ushort.MaxValue; | 3291 | objupdate.RegionData.TimeDilation = ushort.MaxValue; |
3273 | 3292 | ||
3274 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 3293 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
3275 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data); | 3294 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data); |
3276 | 3295 | ||
@@ -3343,7 +3362,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3343 | { | 3362 | { |
3344 | CoarseLocationUpdatePacket.LocationBlock lb = | 3363 | CoarseLocationUpdatePacket.LocationBlock lb = |
3345 | new CoarseLocationUpdatePacket.LocationBlock(); | 3364 | new CoarseLocationUpdatePacket.LocationBlock(); |
3346 | 3365 | ||
3347 | lb.X = (byte)CoarseLocations[i].X; | 3366 | lb.X = (byte)CoarseLocations[i].X; |
3348 | lb.Y = (byte)CoarseLocations[i].Y; | 3367 | lb.Y = (byte)CoarseLocations[i].Y; |
3349 | 3368 | ||
@@ -3620,7 +3639,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3620 | newPack.Header.Zerocoded = true; | 3639 | newPack.Header.Zerocoded = true; |
3621 | OutPacket(newPack, ThrottleOutPacketType.Asset); | 3640 | OutPacket(newPack, ThrottleOutPacketType.Asset); |
3622 | } | 3641 | } |
3623 | 3642 | ||
3624 | public void SendInitiateDownload(string simFileName, string clientFileName) | 3643 | public void SendInitiateDownload(string simFileName, string clientFileName) |
3625 | { | 3644 | { |
3626 | InitiateDownloadPacket newPack = new InitiateDownloadPacket(); | 3645 | InitiateDownloadPacket newPack = new InitiateDownloadPacket(); |
@@ -3629,7 +3648,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3629 | newPack.FileData.ViewerFilename = Utils.StringToBytes(clientFileName); | 3648 | newPack.FileData.ViewerFilename = Utils.StringToBytes(clientFileName); |
3630 | OutPacket(newPack, ThrottleOutPacketType.Asset); | 3649 | OutPacket(newPack, ThrottleOutPacketType.Asset); |
3631 | } | 3650 | } |
3632 | 3651 | ||
3633 | public void SendImageFirstPart( | 3652 | public void SendImageFirstPart( |
3634 | ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) | 3653 | ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) |
3635 | { | 3654 | { |
@@ -3817,7 +3836,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3817 | 3836 | ||
3818 | public void SendBannedUserList(UUID invoice, EstateBan[] bl, uint estateID) | 3837 | public void SendBannedUserList(UUID invoice, EstateBan[] bl, uint estateID) |
3819 | { | 3838 | { |
3820 | List<UUID>BannedUsers = new List<UUID>(); | 3839 | List<UUID> BannedUsers = new List<UUID>(); |
3821 | 3840 | ||
3822 | for (int i = 0; i < bl.Length; i++) | 3841 | for (int i = 0; i < bl.Length; i++) |
3823 | { | 3842 | { |
@@ -3881,7 +3900,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3881 | rinfoblk.UseEstateSun = args.useEstateSun; | 3900 | rinfoblk.UseEstateSun = args.useEstateSun; |
3882 | rinfoblk.WaterHeight = args.waterHeight; | 3901 | rinfoblk.WaterHeight = args.waterHeight; |
3883 | rinfoblk.SimName = Utils.StringToBytes(args.simName); | 3902 | rinfoblk.SimName = Utils.StringToBytes(args.simName); |
3884 | 3903 | ||
3885 | rinfopack.RegionInfo2 = new RegionInfoPacket.RegionInfo2Block(); | 3904 | rinfopack.RegionInfo2 = new RegionInfoPacket.RegionInfo2Block(); |
3886 | rinfopack.RegionInfo2.HardMaxAgents = uint.MaxValue; | 3905 | rinfopack.RegionInfo2.HardMaxAgents = uint.MaxValue; |
3887 | rinfopack.RegionInfo2.HardMaxObjects = uint.MaxValue; | 3906 | rinfopack.RegionInfo2.HardMaxObjects = uint.MaxValue; |
@@ -4128,7 +4147,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4128 | 4147 | ||
4129 | public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount) | 4148 | public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount) |
4130 | { | 4149 | { |
4131 | 4150 | ||
4132 | 4151 | ||
4133 | int notifyCount = ownersAndCount.Count; | 4152 | int notifyCount = ownersAndCount.Count; |
4134 | ParcelObjectOwnersReplyPacket pack = (ParcelObjectOwnersReplyPacket)PacketPool.Instance.GetPacket(PacketType.ParcelObjectOwnersReply); | 4153 | ParcelObjectOwnersReplyPacket pack = (ParcelObjectOwnersReplyPacket)PacketPool.Instance.GetPacket(PacketType.ParcelObjectOwnersReply); |
@@ -4208,7 +4227,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4208 | 4227 | ||
4209 | if (collisionPlane == Vector4.Zero) | 4228 | if (collisionPlane == Vector4.Zero) |
4210 | collisionPlane = Vector4.UnitW; | 4229 | collisionPlane = Vector4.UnitW; |
4211 | 4230 | ||
4212 | collisionPlane.ToBytes(data, pos); | 4231 | collisionPlane.ToBytes(data, pos); |
4213 | pos += 16; | 4232 | pos += 16; |
4214 | } | 4233 | } |
@@ -4297,7 +4316,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4297 | update.TextureAnim = Utils.EmptyBytes; | 4316 | update.TextureAnim = Utils.EmptyBytes; |
4298 | update.TextureEntry = data.TextureEntry ?? Utils.EmptyBytes; | 4317 | update.TextureEntry = data.TextureEntry ?? Utils.EmptyBytes; |
4299 | update.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); // TODO: Replace these numbers with PrimFlags | 4318 | update.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); // TODO: Replace these numbers with PrimFlags |
4300 | 4319 | ||
4301 | return update; | 4320 | return update; |
4302 | } | 4321 | } |
4303 | 4322 | ||
@@ -4448,7 +4467,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4448 | 4467 | ||
4449 | private bool HandleMoneyTransferRequest(IClientAPI sender, Packet Pack) | 4468 | private bool HandleMoneyTransferRequest(IClientAPI sender, Packet Pack) |
4450 | { | 4469 | { |
4451 | MoneyTransferRequestPacket money = (MoneyTransferRequestPacket) Pack; | 4470 | MoneyTransferRequestPacket money = (MoneyTransferRequestPacket)Pack; |
4452 | // validate the agent owns the agentID and sessionID | 4471 | // validate the agent owns the agentID and sessionID |
4453 | if (money.MoneyData.SourceID == sender.AgentId && money.AgentData.AgentID == sender.AgentId && | 4472 | if (money.MoneyData.SourceID == sender.AgentId && money.AgentData.AgentID == sender.AgentId && |
4454 | money.AgentData.SessionID == sender.SessionId) | 4473 | money.AgentData.SessionID == sender.SessionId) |
@@ -4469,7 +4488,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4469 | 4488 | ||
4470 | private bool HandleParcelBuyRequest(IClientAPI sender, Packet Pack) | 4489 | private bool HandleParcelBuyRequest(IClientAPI sender, Packet Pack) |
4471 | { | 4490 | { |
4472 | ParcelBuyPacket parcel = (ParcelBuyPacket) Pack; | 4491 | ParcelBuyPacket parcel = (ParcelBuyPacket)Pack; |
4473 | if (parcel.AgentData.AgentID == AgentId && parcel.AgentData.SessionID == SessionId) | 4492 | if (parcel.AgentData.AgentID == AgentId && parcel.AgentData.SessionID == SessionId) |
4474 | { | 4493 | { |
4475 | ParcelBuy handlerParcelBuy = OnParcelBuy; | 4494 | ParcelBuy handlerParcelBuy = OnParcelBuy; |
@@ -4489,7 +4508,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4489 | private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack) | 4508 | private bool HandleUUIDGroupNameRequest(IClientAPI sender, Packet Pack) |
4490 | { | 4509 | { |
4491 | UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack; | 4510 | UUIDGroupNameRequestPacket upack = (UUIDGroupNameRequestPacket)Pack; |
4492 | 4511 | ||
4493 | 4512 | ||
4494 | for (int i = 0; i < upack.UUIDNameBlock.Length; i++) | 4513 | for (int i = 0; i < upack.UUIDNameBlock.Length; i++) |
4495 | { | 4514 | { |
@@ -4505,7 +4524,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4505 | 4524 | ||
4506 | public bool HandleGenericMessage(IClientAPI sender, Packet pack) | 4525 | public bool HandleGenericMessage(IClientAPI sender, Packet pack) |
4507 | { | 4526 | { |
4508 | GenericMessagePacket gmpack = (GenericMessagePacket) pack; | 4527 | GenericMessagePacket gmpack = (GenericMessagePacket)pack; |
4509 | if (m_genericPacketHandlers.Count == 0) return false; | 4528 | if (m_genericPacketHandlers.Count == 0) return false; |
4510 | if (gmpack.AgentData.SessionID != SessionId) return false; | 4529 | if (gmpack.AgentData.SessionID != SessionId) return false; |
4511 | 4530 | ||
@@ -4642,7 +4661,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4642 | { | 4661 | { |
4643 | if (((LogoutRequestPacket)packet).AgentData.SessionID != SessionId) return false; | 4662 | if (((LogoutRequestPacket)packet).AgentData.SessionID != SessionId) return false; |
4644 | } | 4663 | } |
4645 | 4664 | ||
4646 | return Logout(client); | 4665 | return Logout(client); |
4647 | } | 4666 | } |
4648 | 4667 | ||
@@ -4700,7 +4719,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4700 | 4719 | ||
4701 | cachedresp.Header.Zerocoded = true; | 4720 | cachedresp.Header.Zerocoded = true; |
4702 | OutPacket(cachedresp, ThrottleOutPacketType.Task); | 4721 | OutPacket(cachedresp, ThrottleOutPacketType.Task); |
4703 | 4722 | ||
4704 | return true; | 4723 | return true; |
4705 | } | 4724 | } |
4706 | 4725 | ||
@@ -4750,7 +4769,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4750 | UpdatePrimSingleRotation handlerUpdatePrimSingleRotation = OnUpdatePrimSingleRotation; | 4769 | UpdatePrimSingleRotation handlerUpdatePrimSingleRotation = OnUpdatePrimSingleRotation; |
4751 | if (handlerUpdatePrimSingleRotation != null) | 4770 | if (handlerUpdatePrimSingleRotation != null) |
4752 | { | 4771 | { |
4753 | // m_log.Info("new tab rotation is " + rot1.X + " , " + rot1.Y + " , " + rot1.Z + " , " + rot1.W); | 4772 | // m_log.Info("new tab rotation is " + rot1.X + " , " + rot1.Y + " , " + rot1.Z + " , " + rot1.W); |
4754 | handlerUpdatePrimSingleRotation(localId, rot1, this); | 4773 | handlerUpdatePrimSingleRotation(localId, rot1, this); |
4755 | } | 4774 | } |
4756 | break; | 4775 | break; |
@@ -4761,8 +4780,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4761 | UpdatePrimSingleRotationPosition handlerUpdatePrimSingleRotationPosition = OnUpdatePrimSingleRotationPosition; | 4780 | UpdatePrimSingleRotationPosition handlerUpdatePrimSingleRotationPosition = OnUpdatePrimSingleRotationPosition; |
4762 | if (handlerUpdatePrimSingleRotationPosition != null) | 4781 | if (handlerUpdatePrimSingleRotationPosition != null) |
4763 | { | 4782 | { |
4764 | // m_log.Debug("new mouse rotation position is " + rotPos.X + " , " + rotPos.Y + " , " + rotPos.Z); | 4783 | // m_log.Debug("new mouse rotation position is " + rotPos.X + " , " + rotPos.Y + " , " + rotPos.Z); |
4765 | // m_log.Info("new mouse rotation is " + rot2.X + " , " + rot2.Y + " , " + rot2.Z + " , " + rot2.W); | 4784 | // m_log.Info("new mouse rotation is " + rot2.X + " , " + rot2.Y + " , " + rot2.Z + " , " + rot2.W); |
4766 | handlerUpdatePrimSingleRotationPosition(localId, rot2, rotPos, this); | 4785 | handlerUpdatePrimSingleRotationPosition(localId, rot2, rotPos, this); |
4767 | } | 4786 | } |
4768 | break; | 4787 | break; |
@@ -4773,7 +4792,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4773 | UpdateVector handlerUpdatePrimScale = OnUpdatePrimScale; | 4792 | UpdateVector handlerUpdatePrimScale = OnUpdatePrimScale; |
4774 | if (handlerUpdatePrimScale != null) | 4793 | if (handlerUpdatePrimScale != null) |
4775 | { | 4794 | { |
4776 | // m_log.Debug("new scale is " + scale4.X + " , " + scale4.Y + " , " + scale4.Z); | 4795 | // m_log.Debug("new scale is " + scale4.X + " , " + scale4.Y + " , " + scale4.Z); |
4777 | handlerUpdatePrimScale(localId, scale4, this); | 4796 | handlerUpdatePrimScale(localId, scale4, this); |
4778 | } | 4797 | } |
4779 | break; | 4798 | break; |
@@ -4812,7 +4831,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4812 | UpdatePrimRotation handlerUpdatePrimRotation = OnUpdatePrimGroupRotation; | 4831 | UpdatePrimRotation handlerUpdatePrimRotation = OnUpdatePrimGroupRotation; |
4813 | if (handlerUpdatePrimRotation != null) | 4832 | if (handlerUpdatePrimRotation != null) |
4814 | { | 4833 | { |
4815 | // Console.WriteLine("new rotation is " + rot3.X + " , " + rot3.Y + " , " + rot3.Z + " , " + rot3.W); | 4834 | // Console.WriteLine("new rotation is " + rot3.X + " , " + rot3.Y + " , " + rot3.Z + " , " + rot3.W); |
4816 | handlerUpdatePrimRotation(localId, rot3, this); | 4835 | handlerUpdatePrimRotation(localId, rot3, this); |
4817 | } | 4836 | } |
4818 | break; | 4837 | break; |
@@ -4823,8 +4842,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4823 | handlerUpdatePrimGroupRotation = OnUpdatePrimGroupMouseRotation; | 4842 | handlerUpdatePrimGroupRotation = OnUpdatePrimGroupMouseRotation; |
4824 | if (handlerUpdatePrimGroupRotation != null) | 4843 | if (handlerUpdatePrimGroupRotation != null) |
4825 | { | 4844 | { |
4826 | // m_log.Debug("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 4845 | // m_log.Debug("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
4827 | // m_log.Debug("new group mouse rotation is " + rot4.X + " , " + rot4.Y + " , " + rot4.Z + " , " + rot4.W); | 4846 | // m_log.Debug("new group mouse rotation is " + rot4.X + " , " + rot4.Y + " , " + rot4.Z + " , " + rot4.W); |
4828 | handlerUpdatePrimGroupRotation(localId, pos3, rot4, this); | 4847 | handlerUpdatePrimGroupRotation(localId, pos3, rot4, this); |
4829 | } | 4848 | } |
4830 | break; | 4849 | break; |
@@ -4835,7 +4854,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4835 | UpdateVector handlerUpdatePrimGroupScale = OnUpdatePrimGroupScale; | 4854 | UpdateVector handlerUpdatePrimGroupScale = OnUpdatePrimGroupScale; |
4836 | if (handlerUpdatePrimGroupScale != null) | 4855 | if (handlerUpdatePrimGroupScale != null) |
4837 | { | 4856 | { |
4838 | // m_log.Debug("new scale is " + scale7.X + " , " + scale7.Y + " , " + scale7.Z); | 4857 | // m_log.Debug("new scale is " + scale7.X + " , " + scale7.Y + " , " + scale7.Z); |
4839 | handlerUpdatePrimGroupScale(localId, scale7, this); | 4858 | handlerUpdatePrimGroupScale(localId, scale7, this); |
4840 | } | 4859 | } |
4841 | break; | 4860 | break; |
@@ -5067,7 +5086,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5067 | // Main packet processing conditional | 5086 | // Main packet processing conditional |
5068 | switch (Pack.Type) | 5087 | switch (Pack.Type) |
5069 | { | 5088 | { |
5070 | #region Scene/Avatar | 5089 | #region Scene/Avatar |
5071 | 5090 | ||
5072 | case PacketType.AvatarPropertiesRequest: | 5091 | case PacketType.AvatarPropertiesRequest: |
5073 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | 5092 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; |
@@ -5318,7 +5337,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5318 | break; | 5337 | break; |
5319 | 5338 | ||
5320 | case PacketType.DeRezObject: | 5339 | case PacketType.DeRezObject: |
5321 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket) Pack; | 5340 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)Pack; |
5322 | 5341 | ||
5323 | #region Packet Session and User Check | 5342 | #region Packet Session and User Check |
5324 | if (m_checkPackets) | 5343 | if (m_checkPackets) |
@@ -5339,13 +5358,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5339 | { | 5358 | { |
5340 | deRezIDs.Add(data.ObjectLocalID); | 5359 | deRezIDs.Add(data.ObjectLocalID); |
5341 | } | 5360 | } |
5342 | // It just so happens that the values on the DeRezAction enumerator match the Destination | 5361 | // It just so happens that the values on the DeRezAction enumerator match the Destination |
5343 | // values given by a Second Life client | 5362 | // values given by a Second Life client |
5344 | handlerDeRezObject(this, deRezIDs, | 5363 | handlerDeRezObject(this, deRezIDs, |
5345 | DeRezPacket.AgentBlock.GroupID, | 5364 | DeRezPacket.AgentBlock.GroupID, |
5346 | (DeRezAction)DeRezPacket.AgentBlock.Destination, | 5365 | (DeRezAction)DeRezPacket.AgentBlock.Destination, |
5347 | DeRezPacket.AgentBlock.DestinationID); | 5366 | DeRezPacket.AgentBlock.DestinationID); |
5348 | 5367 | ||
5349 | } | 5368 | } |
5350 | break; | 5369 | break; |
5351 | 5370 | ||
@@ -5449,7 +5468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5449 | } | 5468 | } |
5450 | 5469 | ||
5451 | break; | 5470 | break; |
5452 | 5471 | ||
5453 | case PacketType.AgentIsNowWearing: | 5472 | case PacketType.AgentIsNowWearing: |
5454 | if (OnAvatarNowWearing != null) | 5473 | if (OnAvatarNowWearing != null) |
5455 | { | 5474 | { |
@@ -5653,7 +5672,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5653 | 5672 | ||
5654 | if (lastarg != null) | 5673 | if (lastarg != null) |
5655 | { | 5674 | { |
5656 | update = | 5675 | update = |
5657 | ( | 5676 | ( |
5658 | (x.BodyRotation != lastarg.BodyRotation) || | 5677 | (x.BodyRotation != lastarg.BodyRotation) || |
5659 | (x.CameraAtAxis != lastarg.CameraAtAxis) || | 5678 | (x.CameraAtAxis != lastarg.CameraAtAxis) || |
@@ -5846,7 +5865,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5846 | } | 5865 | } |
5847 | 5866 | ||
5848 | break; | 5867 | break; |
5849 | 5868 | ||
5850 | case PacketType.UserInfoRequest: | 5869 | case PacketType.UserInfoRequest: |
5851 | UserInfoRequest handlerUserInfoRequest = OnUserInfoRequest; | 5870 | UserInfoRequest handlerUserInfoRequest = OnUserInfoRequest; |
5852 | if (handlerUserInfoRequest != null) | 5871 | if (handlerUserInfoRequest != null) |
@@ -5858,7 +5877,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5858 | SendUserInfoReply(false, true, ""); | 5877 | SendUserInfoReply(false, true, ""); |
5859 | } | 5878 | } |
5860 | break; | 5879 | break; |
5861 | 5880 | ||
5862 | case PacketType.UpdateUserInfo: | 5881 | case PacketType.UpdateUserInfo: |
5863 | UpdateUserInfoPacket updateUserInfo = (UpdateUserInfoPacket)Pack; | 5882 | UpdateUserInfoPacket updateUserInfo = (UpdateUserInfoPacket)Pack; |
5864 | 5883 | ||
@@ -5885,7 +5904,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5885 | visible, this); | 5904 | visible, this); |
5886 | } | 5905 | } |
5887 | break; | 5906 | break; |
5888 | 5907 | ||
5889 | case PacketType.SetStartLocationRequest: | 5908 | case PacketType.SetStartLocationRequest: |
5890 | SetStartLocationRequestPacket avSetStartLocationRequestPacket = (SetStartLocationRequestPacket)Pack; | 5909 | SetStartLocationRequestPacket avSetStartLocationRequestPacket = (SetStartLocationRequestPacket)Pack; |
5891 | 5910 | ||
@@ -5943,9 +5962,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5943 | } | 5962 | } |
5944 | break; | 5963 | break; |
5945 | 5964 | ||
5946 | #endregion | 5965 | #endregion |
5947 | 5966 | ||
5948 | #region Objects/m_sceneObjects | 5967 | #region Objects/m_sceneObjects |
5949 | 5968 | ||
5950 | case PacketType.ObjectLink: | 5969 | case PacketType.ObjectLink: |
5951 | ObjectLinkPacket link = (ObjectLinkPacket)Pack; | 5970 | ObjectLinkPacket link = (ObjectLinkPacket)Pack; |
@@ -5976,7 +5995,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5976 | handlerLinkObjects(this, parentprimid, childrenprims); | 5995 | handlerLinkObjects(this, parentprimid, childrenprims); |
5977 | } | 5996 | } |
5978 | break; | 5997 | break; |
5979 | 5998 | ||
5980 | case PacketType.ObjectDelink: | 5999 | case PacketType.ObjectDelink: |
5981 | ObjectDelinkPacket delink = (ObjectDelinkPacket)Pack; | 6000 | ObjectDelinkPacket delink = (ObjectDelinkPacket)Pack; |
5982 | 6001 | ||
@@ -6005,7 +6024,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6005 | } | 6024 | } |
6006 | 6025 | ||
6007 | break; | 6026 | break; |
6008 | 6027 | ||
6009 | case PacketType.ObjectAdd: | 6028 | case PacketType.ObjectAdd: |
6010 | if (OnAddPrim != null) | 6029 | if (OnAddPrim != null) |
6011 | { | 6030 | { |
@@ -6035,7 +6054,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6035 | handlerAddPrim(AgentId, ActiveGroupId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection); | 6054 | handlerAddPrim(AgentId, ActiveGroupId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection); |
6036 | } | 6055 | } |
6037 | break; | 6056 | break; |
6038 | 6057 | ||
6039 | case PacketType.ObjectShape: | 6058 | case PacketType.ObjectShape: |
6040 | ObjectShapePacket shapePacket = (ObjectShapePacket)Pack; | 6059 | ObjectShapePacket shapePacket = (ObjectShapePacket)Pack; |
6041 | 6060 | ||
@@ -6080,7 +6099,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6080 | } | 6099 | } |
6081 | } | 6100 | } |
6082 | break; | 6101 | break; |
6083 | 6102 | ||
6084 | case PacketType.ObjectExtraParams: | 6103 | case PacketType.ObjectExtraParams: |
6085 | ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack; | 6104 | ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack; |
6086 | 6105 | ||
@@ -6096,7 +6115,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6096 | ObjectExtraParams handlerUpdateExtraParams = OnUpdateExtraParams; | 6115 | ObjectExtraParams handlerUpdateExtraParams = OnUpdateExtraParams; |
6097 | if (handlerUpdateExtraParams != null) | 6116 | if (handlerUpdateExtraParams != null) |
6098 | { | 6117 | { |
6099 | for (int i = 0 ; i < extraPar.ObjectData.Length ; i++) | 6118 | for (int i = 0; i < extraPar.ObjectData.Length; i++) |
6100 | { | 6119 | { |
6101 | handlerUpdateExtraParams(m_agentId, extraPar.ObjectData[i].ObjectLocalID, | 6120 | handlerUpdateExtraParams(m_agentId, extraPar.ObjectData[i].ObjectLocalID, |
6102 | extraPar.ObjectData[i].ParamType, | 6121 | extraPar.ObjectData[i].ParamType, |
@@ -6497,7 +6516,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6497 | break; | 6516 | break; |
6498 | case PacketType.ObjectName: | 6517 | case PacketType.ObjectName: |
6499 | ObjectNamePacket objName = (ObjectNamePacket)Pack; | 6518 | ObjectNamePacket objName = (ObjectNamePacket)Pack; |
6500 | 6519 | ||
6501 | #region Packet Session and User Check | 6520 | #region Packet Session and User Check |
6502 | if (m_checkPackets) | 6521 | if (m_checkPackets) |
6503 | { | 6522 | { |
@@ -6506,7 +6525,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6506 | break; | 6525 | break; |
6507 | } | 6526 | } |
6508 | #endregion | 6527 | #endregion |
6509 | 6528 | ||
6510 | GenericCall7 handlerObjectName = null; | 6529 | GenericCall7 handlerObjectName = null; |
6511 | for (int i = 0; i < objName.ObjectData.Length; i++) | 6530 | for (int i = 0; i < objName.ObjectData.Length; i++) |
6512 | { | 6531 | { |
@@ -6739,14 +6758,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6739 | } | 6758 | } |
6740 | break; | 6759 | break; |
6741 | 6760 | ||
6742 | #endregion | 6761 | #endregion |
6743 | 6762 | ||
6744 | #region Inventory/Asset/Other related packets | 6763 | #region Inventory/Asset/Other related packets |
6745 | 6764 | ||
6746 | case PacketType.RequestImage: | 6765 | case PacketType.RequestImage: |
6747 | RequestImagePacket imageRequest = (RequestImagePacket)Pack; | 6766 | RequestImagePacket imageRequest = (RequestImagePacket)Pack; |
6748 | //m_log.Debug("image request: " + Pack.ToString()); | 6767 | //m_log.Debug("image request: " + Pack.ToString()); |
6749 | 6768 | ||
6750 | #region Packet Session and User Check | 6769 | #region Packet Session and User Check |
6751 | if (m_checkPackets) | 6770 | if (m_checkPackets) |
6752 | { | 6771 | { |
@@ -6770,7 +6789,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6770 | //handlerTextureRequest = OnRequestTexture; | 6789 | //handlerTextureRequest = OnRequestTexture; |
6771 | 6790 | ||
6772 | //if (handlerTextureRequest != null) | 6791 | //if (handlerTextureRequest != null) |
6773 | //OnRequestTexture(this, args); | 6792 | //OnRequestTexture(this, args); |
6774 | 6793 | ||
6775 | // in the end, we null this, so we have to check if it's null | 6794 | // in the end, we null this, so we have to check if it's null |
6776 | if (m_imageManager != null) | 6795 | if (m_imageManager != null) |
@@ -6816,7 +6835,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6816 | if (ti.OwnerID != AgentId) | 6835 | if (ti.OwnerID != AgentId) |
6817 | break; | 6836 | break; |
6818 | 6837 | ||
6819 | if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify| (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) | 6838 | if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) |
6820 | break; | 6839 | break; |
6821 | 6840 | ||
6822 | if (ti.AssetID != requestID) | 6841 | if (ti.AssetID != requestID) |
@@ -6874,7 +6893,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6874 | case PacketType.AssetUploadRequest: | 6893 | case PacketType.AssetUploadRequest: |
6875 | AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; | 6894 | AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; |
6876 | 6895 | ||
6877 | 6896 | ||
6878 | // m_log.Debug("upload request " + request.ToString()); | 6897 | // m_log.Debug("upload request " + request.ToString()); |
6879 | // m_log.Debug("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionId).ToString()); | 6898 | // m_log.Debug("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionId).ToString()); |
6880 | UUID temp = UUID.Combine(request.AssetBlock.TransactionID, SecureSessionId); | 6899 | UUID temp = UUID.Combine(request.AssetBlock.TransactionID, SecureSessionId); |
@@ -6891,7 +6910,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6891 | break; | 6910 | break; |
6892 | case PacketType.RequestXfer: | 6911 | case PacketType.RequestXfer: |
6893 | RequestXferPacket xferReq = (RequestXferPacket)Pack; | 6912 | RequestXferPacket xferReq = (RequestXferPacket)Pack; |
6894 | 6913 | ||
6895 | RequestXfer handlerRequestXfer = OnRequestXfer; | 6914 | RequestXfer handlerRequestXfer = OnRequestXfer; |
6896 | 6915 | ||
6897 | if (handlerRequestXfer != null) | 6916 | if (handlerRequestXfer != null) |
@@ -6910,7 +6929,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6910 | break; | 6929 | break; |
6911 | case PacketType.ConfirmXferPacket: | 6930 | case PacketType.ConfirmXferPacket: |
6912 | ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack; | 6931 | ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack; |
6913 | 6932 | ||
6914 | ConfirmXfer handlerConfirmXfer = OnConfirmXfer; | 6933 | ConfirmXfer handlerConfirmXfer = OnConfirmXfer; |
6915 | if (handlerConfirmXfer != null) | 6934 | if (handlerConfirmXfer != null) |
6916 | { | 6935 | { |
@@ -7005,7 +7024,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7005 | break; | 7024 | break; |
7006 | case PacketType.CreateInventoryItem: | 7025 | case PacketType.CreateInventoryItem: |
7007 | CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; | 7026 | CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; |
7008 | 7027 | ||
7009 | #region Packet Session and User Check | 7028 | #region Packet Session and User Check |
7010 | if (m_checkPackets) | 7029 | if (m_checkPackets) |
7011 | { | 7030 | { |
@@ -7098,7 +7117,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7098 | break; | 7117 | break; |
7099 | case PacketType.UpdateInventoryItem: | 7118 | case PacketType.UpdateInventoryItem: |
7100 | UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack; | 7119 | UpdateInventoryItemPacket inventoryItemUpdate = (UpdateInventoryItemPacket)Pack; |
7101 | 7120 | ||
7102 | #region Packet Session and User Check | 7121 | #region Packet Session and User Check |
7103 | if (m_checkPackets) | 7122 | if (m_checkPackets) |
7104 | { | 7123 | { |
@@ -7590,7 +7609,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7590 | } | 7609 | } |
7591 | break; | 7610 | break; |
7592 | 7611 | ||
7593 | #endregion | 7612 | #endregion |
7594 | 7613 | ||
7595 | case PacketType.UUIDNameRequest: | 7614 | case PacketType.UUIDNameRequest: |
7596 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; | 7615 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; |
@@ -7605,7 +7624,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7605 | } | 7624 | } |
7606 | break; | 7625 | break; |
7607 | 7626 | ||
7608 | #region Parcel related packets | 7627 | #region Parcel related packets |
7609 | 7628 | ||
7610 | case PacketType.RegionHandleRequest: | 7629 | case PacketType.RegionHandleRequest: |
7611 | RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack; | 7630 | RegionHandleRequestPacket rhrPack = (RegionHandleRequestPacket)Pack; |
@@ -7986,9 +8005,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7986 | } | 8005 | } |
7987 | break; | 8006 | break; |
7988 | 8007 | ||
7989 | #endregion | 8008 | #endregion |
7990 | 8009 | ||
7991 | #region Estate Packets | 8010 | #region Estate Packets |
7992 | 8011 | ||
7993 | case PacketType.EstateOwnerMessage: | 8012 | case PacketType.EstateOwnerMessage: |
7994 | EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; | 8013 | EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; |
@@ -8022,21 +8041,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8022 | convertParamStringToBool(messagePacket.ParamList[7].Parameter), convertParamStringToBool(messagePacket.ParamList[8].Parameter)); | 8041 | convertParamStringToBool(messagePacket.ParamList[7].Parameter), convertParamStringToBool(messagePacket.ParamList[8].Parameter)); |
8023 | } | 8042 | } |
8024 | break; | 8043 | break; |
8025 | // case "texturebase": | 8044 | // case "texturebase": |
8026 | // if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) | 8045 | // if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) |
8027 | // { | 8046 | // { |
8028 | // foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) | 8047 | // foreach (EstateOwnerMessagePacket.ParamListBlock block in messagePacket.ParamList) |
8029 | // { | 8048 | // { |
8030 | // string s = Utils.BytesToString(block.Parameter); | 8049 | // string s = Utils.BytesToString(block.Parameter); |
8031 | // string[] splitField = s.Split(' '); | 8050 | // string[] splitField = s.Split(' '); |
8032 | // if (splitField.Length == 2) | 8051 | // if (splitField.Length == 2) |
8033 | // { | 8052 | // { |
8034 | // UUID tempUUID = new UUID(splitField[1]); | 8053 | // UUID tempUUID = new UUID(splitField[1]); |
8035 | // OnSetEstateTerrainBaseTexture(this, Convert.ToInt16(splitField[0]), tempUUID); | 8054 | // OnSetEstateTerrainBaseTexture(this, Convert.ToInt16(splitField[0]), tempUUID); |
8036 | // } | 8055 | // } |
8037 | // } | 8056 | // } |
8038 | // } | 8057 | // } |
8039 | // break; | 8058 | // break; |
8040 | case "texturedetail": | 8059 | case "texturedetail": |
8041 | if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) | 8060 | if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) |
8042 | { | 8061 | { |
@@ -8278,7 +8297,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8278 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket); | 8297 | m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket); |
8279 | break; | 8298 | break; |
8280 | } | 8299 | } |
8281 | 8300 | ||
8282 | //int parcelID, uint reportType, uint requestflags, string filter | 8301 | //int parcelID, uint reportType, uint requestflags, string filter |
8283 | 8302 | ||
8284 | //lsrp.RequestData.ParcelLocalID; | 8303 | //lsrp.RequestData.ParcelLocalID; |
@@ -8318,9 +8337,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8318 | } | 8337 | } |
8319 | break; | 8338 | break; |
8320 | 8339 | ||
8321 | #endregion | 8340 | #endregion |
8322 | 8341 | ||
8323 | #region GodPackets | 8342 | #region GodPackets |
8324 | 8343 | ||
8325 | case PacketType.RequestGodlikePowers: | 8344 | case PacketType.RequestGodlikePowers: |
8326 | RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack; | 8345 | RequestGodlikePowersPacket rglpPack = (RequestGodlikePowersPacket)Pack; |
@@ -8366,9 +8385,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8366 | //OutPacket(kupack, ThrottleOutPacketType.Task); | 8385 | //OutPacket(kupack, ThrottleOutPacketType.Task); |
8367 | break; | 8386 | break; |
8368 | 8387 | ||
8369 | #endregion | 8388 | #endregion |
8370 | 8389 | ||
8371 | #region Economy/Transaction Packets | 8390 | #region Economy/Transaction Packets |
8372 | 8391 | ||
8373 | case PacketType.MoneyBalanceRequest: | 8392 | case PacketType.MoneyBalanceRequest: |
8374 | MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack; | 8393 | MoneyBalanceRequestPacket moneybalancerequestpacket = (MoneyBalanceRequestPacket)Pack; |
@@ -8392,7 +8411,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8392 | break; | 8411 | break; |
8393 | case PacketType.EconomyDataRequest: | 8412 | case PacketType.EconomyDataRequest: |
8394 | 8413 | ||
8395 | 8414 | ||
8396 | EconomyDataRequest handlerEconomoyDataRequest = OnEconomyDataRequest; | 8415 | EconomyDataRequest handlerEconomoyDataRequest = OnEconomyDataRequest; |
8397 | if (handlerEconomoyDataRequest != null) | 8416 | if (handlerEconomoyDataRequest != null) |
8398 | { | 8417 | { |
@@ -8468,9 +8487,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8468 | } | 8487 | } |
8469 | break; | 8488 | break; |
8470 | 8489 | ||
8471 | #endregion | 8490 | #endregion |
8472 | 8491 | ||
8473 | #region Script Packets | 8492 | #region Script Packets |
8474 | 8493 | ||
8475 | case PacketType.GetScriptRunning: | 8494 | case PacketType.GetScriptRunning: |
8476 | GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack; | 8495 | GetScriptRunningPacket scriptRunning = (GetScriptRunningPacket)Pack; |
@@ -8520,9 +8539,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8520 | } | 8539 | } |
8521 | break; | 8540 | break; |
8522 | 8541 | ||
8523 | #endregion | 8542 | #endregion |
8524 | 8543 | ||
8525 | #region Gesture Managment | 8544 | #region Gesture Managment |
8526 | 8545 | ||
8527 | case PacketType.ActivateGestures: | 8546 | case PacketType.ActivateGestures: |
8528 | ActivateGesturesPacket activateGesturePacket = (ActivateGesturesPacket)Pack; | 8547 | ActivateGesturesPacket activateGesturePacket = (ActivateGesturesPacket)Pack; |
@@ -8589,7 +8608,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8589 | } | 8608 | } |
8590 | break; | 8609 | break; |
8591 | 8610 | ||
8592 | #endregion | 8611 | #endregion |
8593 | 8612 | ||
8594 | case PacketType.AgentFOV: | 8613 | case PacketType.AgentFOV: |
8595 | AgentFOVPacket fovPacket = (AgentFOVPacket)Pack; | 8614 | AgentFOVPacket fovPacket = (AgentFOVPacket)Pack; |
@@ -8605,7 +8624,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8605 | } | 8624 | } |
8606 | break; | 8625 | break; |
8607 | 8626 | ||
8608 | #region unimplemented handlers | 8627 | #region unimplemented handlers |
8609 | 8628 | ||
8610 | case PacketType.ViewerStats: | 8629 | case PacketType.ViewerStats: |
8611 | // TODO: handle this packet | 8630 | // TODO: handle this packet |
@@ -8628,8 +8647,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8628 | MapItemRequest handlerMapItemRequest = OnMapItemRequest; | 8647 | MapItemRequest handlerMapItemRequest = OnMapItemRequest; |
8629 | if (handlerMapItemRequest != null) | 8648 | if (handlerMapItemRequest != null) |
8630 | { | 8649 | { |
8631 | handlerMapItemRequest(this,mirpk.AgentData.Flags, mirpk.AgentData.EstateID, | 8650 | handlerMapItemRequest(this, mirpk.AgentData.Flags, mirpk.AgentData.EstateID, |
8632 | mirpk.AgentData.Godlike,mirpk.RequestData.ItemType, | 8651 | mirpk.AgentData.Godlike, mirpk.RequestData.ItemType, |
8633 | mirpk.RequestData.RegionHandle); | 8652 | mirpk.RequestData.RegionHandle); |
8634 | 8653 | ||
8635 | } | 8654 | } |
@@ -9037,7 +9056,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9037 | groupMembersRequestPacket.GroupData.RequestID; | 9056 | groupMembersRequestPacket.GroupData.RequestID; |
9038 | groupMembersReply.GroupData.MemberCount = memberCount; | 9057 | groupMembersReply.GroupData.MemberCount = memberCount; |
9039 | 9058 | ||
9040 | for (int i = 0 ; i < blockCount ; i++) | 9059 | for (int i = 0; i < blockCount; i++) |
9041 | { | 9060 | { |
9042 | GroupMembersData m = members[0]; | 9061 | GroupMembersData m = members[0]; |
9043 | members.RemoveAt(0); | 9062 | members.RemoveAt(0); |
@@ -9174,7 +9193,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9174 | groupRoleMembersReply.MemberData = | 9193 | groupRoleMembersReply.MemberData = |
9175 | new GroupRoleMembersReplyPacket.MemberDataBlock[pairs]; | 9194 | new GroupRoleMembersReplyPacket.MemberDataBlock[pairs]; |
9176 | 9195 | ||
9177 | for (int i = 0 ; i < pairs ; i++) | 9196 | for (int i = 0; i < pairs; i++) |
9178 | { | 9197 | { |
9179 | GroupRoleMembersData d = mappings[0]; | 9198 | GroupRoleMembersData d = mappings[0]; |
9180 | mappings.RemoveAt(0); | 9199 | mappings.RemoveAt(0); |
@@ -9301,7 +9320,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9301 | ParcelDeedToGroup handlerParcelDeedToGroup = OnParcelDeedToGroup; | 9320 | ParcelDeedToGroup handlerParcelDeedToGroup = OnParcelDeedToGroup; |
9302 | if (handlerParcelDeedToGroup != null) | 9321 | if (handlerParcelDeedToGroup != null) |
9303 | { | 9322 | { |
9304 | handlerParcelDeedToGroup(parcelDeedToGroup.Data.LocalID, parcelDeedToGroup.Data.GroupID,this); | 9323 | handlerParcelDeedToGroup(parcelDeedToGroup.Data.LocalID, parcelDeedToGroup.Data.GroupID, this); |
9305 | 9324 | ||
9306 | } | 9325 | } |
9307 | } | 9326 | } |
@@ -9759,7 +9778,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9759 | 9778 | ||
9760 | PickDelete handlerPickDelete = OnPickDelete; | 9779 | PickDelete handlerPickDelete = OnPickDelete; |
9761 | if (handlerPickDelete != null) | 9780 | if (handlerPickDelete != null) |
9762 | handlerPickDelete(this, pickDelete.Data.PickID); | 9781 | handlerPickDelete(this, pickDelete.Data.PickID); |
9763 | break; | 9782 | break; |
9764 | case PacketType.PickGodDelete: | 9783 | case PacketType.PickGodDelete: |
9765 | PickGodDeletePacket pickGodDelete = | 9784 | PickGodDeletePacket pickGodDelete = |
@@ -9779,7 +9798,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9779 | handlerPickGodDelete(this, | 9798 | handlerPickGodDelete(this, |
9780 | pickGodDelete.AgentData.AgentID, | 9799 | pickGodDelete.AgentData.AgentID, |
9781 | pickGodDelete.Data.PickID, | 9800 | pickGodDelete.Data.PickID, |
9782 | pickGodDelete.Data.QueryID); | 9801 | pickGodDelete.Data.QueryID); |
9783 | break; | 9802 | break; |
9784 | case PacketType.PickInfoUpdate: | 9803 | case PacketType.PickInfoUpdate: |
9785 | PickInfoUpdatePacket pickInfoUpdate = | 9804 | PickInfoUpdatePacket pickInfoUpdate = |
@@ -9870,7 +9889,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9870 | m_log.Warn("[CLIENT]: unhandled packet " + Pack); | 9889 | m_log.Warn("[CLIENT]: unhandled packet " + Pack); |
9871 | break; | 9890 | break; |
9872 | 9891 | ||
9873 | #endregion | 9892 | #endregion |
9874 | } | 9893 | } |
9875 | 9894 | ||
9876 | PacketPool.Instance.ReturnPacket(Pack); | 9895 | PacketPool.Instance.ReturnPacket(Pack); |
@@ -9907,7 +9926,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9907 | //shape.Textures = ntex; | 9926 | //shape.Textures = ntex; |
9908 | return shape; | 9927 | return shape; |
9909 | } | 9928 | } |
9910 | 9929 | ||
9911 | public ClientInfo GetClientInfo() | 9930 | public ClientInfo GetClientInfo() |
9912 | { | 9931 | { |
9913 | ClientInfo info = m_udpClient.GetClientInfo(); | 9932 | ClientInfo info = m_udpClient.GetClientInfo(); |
@@ -9935,7 +9954,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9935 | { | 9954 | { |
9936 | ParcelMediaCommandMessagePacket commandMessagePacket = new ParcelMediaCommandMessagePacket(); | 9955 | ParcelMediaCommandMessagePacket commandMessagePacket = new ParcelMediaCommandMessagePacket(); |
9937 | commandMessagePacket.CommandBlock.Flags = flags; | 9956 | commandMessagePacket.CommandBlock.Flags = flags; |
9938 | commandMessagePacket.CommandBlock.Command =(uint) command; | 9957 | commandMessagePacket.CommandBlock.Command = (uint)command; |
9939 | commandMessagePacket.CommandBlock.Time = time; | 9958 | commandMessagePacket.CommandBlock.Time = time; |
9940 | 9959 | ||
9941 | OutPacket(commandMessagePacket, ThrottleOutPacketType.Unknown); | 9960 | OutPacket(commandMessagePacket, ThrottleOutPacketType.Unknown); |
@@ -9963,7 +9982,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9963 | 9982 | ||
9964 | #region Camera | 9983 | #region Camera |
9965 | 9984 | ||
9966 | public void SendSetFollowCamProperties (UUID objectID, SortedDictionary<int, float> parameters) | 9985 | public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters) |
9967 | { | 9986 | { |
9968 | SetFollowCamPropertiesPacket packet = (SetFollowCamPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.SetFollowCamProperties); | 9987 | SetFollowCamPropertiesPacket packet = (SetFollowCamPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.SetFollowCamProperties); |
9969 | packet.ObjectData.ObjectID = objectID; | 9988 | packet.ObjectData.ObjectID = objectID; |
@@ -9981,7 +10000,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9981 | OutPacket(packet, ThrottleOutPacketType.Task); | 10000 | OutPacket(packet, ThrottleOutPacketType.Task); |
9982 | } | 10001 | } |
9983 | 10002 | ||
9984 | public void SendClearFollowCamProperties (UUID objectID) | 10003 | public void SendClearFollowCamProperties(UUID objectID) |
9985 | { | 10004 | { |
9986 | ClearFollowCamPropertiesPacket packet = (ClearFollowCamPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ClearFollowCamProperties); | 10005 | ClearFollowCamPropertiesPacket packet = (ClearFollowCamPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ClearFollowCamProperties); |
9987 | packet.ObjectData.ObjectID = objectID; | 10006 | packet.ObjectData.ObjectID = objectID; |
@@ -10083,8 +10102,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10083 | { | 10102 | { |
10084 | return m_udpClient.GetStats(); | 10103 | return m_udpClient.GetStats(); |
10085 | } | 10104 | } |
10086 | 10105 | ||
10087 | public string XReport(string uptime, string version) | 10106 | public string XReport(string uptime, string version) |
10088 | { | 10107 | { |
10089 | return String.Empty; | 10108 | return String.Empty; |
10090 | } | 10109 | } |
@@ -10158,7 +10177,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10158 | } | 10177 | } |
10159 | 10178 | ||
10160 | //m_log.DebugFormat("[ASSET CACHE]: Asset transfer request for asset which is {0} already known to be missing. Dropping", requestID); | 10179 | //m_log.DebugFormat("[ASSET CACHE]: Asset transfer request for asset which is {0} already known to be missing. Dropping", requestID); |
10161 | 10180 | ||
10162 | // FIXME: We never tell the client about assets which do not exist when requested by this transfer mechanism, which can't be right. | 10181 | // FIXME: We never tell the client about assets which do not exist when requested by this transfer mechanism, which can't be right. |
10163 | return; | 10182 | return; |
10164 | } | 10183 | } |
@@ -10381,7 +10400,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10381 | #endregion | 10400 | #endregion |
10382 | 10401 | ||
10383 | #region LookupItem | 10402 | #region LookupItem |
10384 | private struct LookupItem { | 10403 | private struct LookupItem |
10404 | { | ||
10385 | internal MinHeap<MinHeapItem> Heap; | 10405 | internal MinHeap<MinHeapItem> Heap; |
10386 | internal IHandle Handle; | 10406 | internal IHandle Handle; |
10387 | } | 10407 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 74175d0..a6ead5e 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -372,23 +372,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
372 | 372 | ||
373 | public void ResendUnacked(LLUDPClient udpClient) | 373 | public void ResendUnacked(LLUDPClient udpClient) |
374 | { | 374 | { |
375 | if (udpClient.IsConnected && udpClient.NeedAcks.Count > 0) | 375 | if (!udpClient.IsConnected) |
376 | return; | ||
377 | |||
378 | // Disconnect an agent if no packets are received for some time | ||
379 | //FIXME: Make 60 an .ini setting | ||
380 | if (Environment.TickCount - udpClient.TickLastPacketReceived > 1000 * 60) | ||
376 | { | 381 | { |
377 | // Disconnect an agent if no packets are received for some time | 382 | m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); |
378 | //FIXME: Make 60 an .ini setting | ||
379 | if (Environment.TickCount - udpClient.TickLastPacketReceived > 1000 * 60) | ||
380 | { | ||
381 | m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); | ||
382 | 383 | ||
383 | RemoveClient(udpClient); | 384 | RemoveClient(udpClient); |
384 | return; | 385 | return; |
385 | } | 386 | } |
386 | 387 | ||
388 | if (udpClient.NeedAcks.Count > 0) | ||
389 | { | ||
387 | // Get a list of all of the packets that have been sitting unacked longer than udpClient.RTO | 390 | // Get a list of all of the packets that have been sitting unacked longer than udpClient.RTO |
388 | List<OutgoingPacket> expiredPackets = udpClient.NeedAcks.GetExpiredPackets(udpClient.RTO); | 391 | List<OutgoingPacket> expiredPackets = udpClient.NeedAcks.GetExpiredPackets(udpClient.RTO); |
389 | 392 | ||
390 | if (expiredPackets != null) | 393 | if (expiredPackets != null) |
391 | { | 394 | { |
395 | m_log.Debug("[LLUDPSERVER]: Resending " + expiredPackets.Count + " packets to " + udpClient.AgentID); | ||
396 | |||
392 | // Resend packets | 397 | // Resend packets |
393 | for (int i = 0; i < expiredPackets.Count; i++) | 398 | for (int i = 0; i < expiredPackets.Count; i++) |
394 | { | 399 | { |