aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs28
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs36
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs32
-rw-r--r--OpenSim/Region/Framework/Interfaces/IEventQueue.cs9
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs5
5 files changed, 76 insertions, 34 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 0dbdbaf..a05e88c 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -711,34 +711,46 @@ namespace OpenSim.Region.ClientStack.Linden
711 Enqueue(item, avatarID); 711 Enqueue(item, avatarID);
712 } 712 }
713 713
714 public virtual void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID) 714 public virtual void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY)
715 { 715 {
716 OSD item = EventQueueHelper.EnableSimulator(handle, endPoint); 716 m_log.DebugFormat("{0} EnableSimulator. handle={1}, avatarID={2}, regionSize={3},{4}>",
717 "[EVENT QUEUE GET MODULE]", handle, avatarID, regionSizeX, regionSizeY);
718
719 OSD item = EventQueueHelper.EnableSimulator(handle, endPoint, regionSizeX, regionSizeY);
717 Enqueue(item, avatarID); 720 Enqueue(item, avatarID);
718 } 721 }
719 722
720 public virtual void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint, string capsPath) 723 public virtual void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint, string capsPath,
724 ulong regionHandle, int regionSizeX, int regionSizeY)
721 { 725 {
722 OSD item = EventQueueHelper.EstablishAgentCommunication(avatarID, endPoint.ToString(), capsPath); 726 m_log.DebugFormat("{0} EstablishAgentCommunication. handle={1}, avatarID={2}, regionSize={3},{4}>",
727 "[EVENT QUEUE GET MODULE]", regionHandle, avatarID, regionSizeX, regionSizeY);
728 OSD item = EventQueueHelper.EstablishAgentCommunication(avatarID, endPoint.ToString(), capsPath, regionHandle, regionSizeX, regionSizeY);
723 Enqueue(item, avatarID); 729 Enqueue(item, avatarID);
724 } 730 }
725 731
726 public virtual void TeleportFinishEvent(ulong regionHandle, byte simAccess, 732 public virtual void TeleportFinishEvent(ulong regionHandle, byte simAccess,
727 IPEndPoint regionExternalEndPoint, 733 IPEndPoint regionExternalEndPoint,
728 uint locationID, uint flags, string capsURL, 734 uint locationID, uint flags, string capsURL,
729 UUID avatarID) 735 UUID avatarID, int regionSizeX, int regionSizeY)
730 { 736 {
737 m_log.DebugFormat("{0} TeleportFinishEvent. handle={1}, avatarID={2}, regionSize={3},{4}>",
738 "[EVENT QUEUE GET MODULE]", regionHandle, avatarID, regionSizeX, regionSizeY);
739
731 OSD item = EventQueueHelper.TeleportFinishEvent(regionHandle, simAccess, regionExternalEndPoint, 740 OSD item = EventQueueHelper.TeleportFinishEvent(regionHandle, simAccess, regionExternalEndPoint,
732 locationID, flags, capsURL, avatarID); 741 locationID, flags, capsURL, avatarID, regionSizeX, regionSizeY);
733 Enqueue(item, avatarID); 742 Enqueue(item, avatarID);
734 } 743 }
735 744
736 public virtual void CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, 745 public virtual void CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt,
737 IPEndPoint newRegionExternalEndPoint, 746 IPEndPoint newRegionExternalEndPoint,
738 string capsURL, UUID avatarID, UUID sessionID) 747 string capsURL, UUID avatarID, UUID sessionID, int regionSizeX, int regionSizeY)
739 { 748 {
749 m_log.DebugFormat("{0} CrossRegion. handle={1}, avatarID={2}, regionSize={3},{4}>",
750 "[EVENT QUEUE GET MODULE]", handle, avatarID, regionSizeX, regionSizeY);
751
740 OSD item = EventQueueHelper.CrossRegion(handle, pos, lookAt, newRegionExternalEndPoint, 752 OSD item = EventQueueHelper.CrossRegion(handle, pos, lookAt, newRegionExternalEndPoint,
741 capsURL, avatarID, sessionID); 753 capsURL, avatarID, sessionID, regionSizeX, regionSizeY);
742 Enqueue(item, avatarID); 754 Enqueue(item, avatarID);
743 } 755 }
744 756
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
index dab727f..ded228d 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
@@ -70,13 +70,15 @@ namespace OpenSim.Region.ClientStack.Linden
70 return llsdEvent; 70 return llsdEvent;
71 } 71 }
72 72
73 public static OSD EnableSimulator(ulong handle, IPEndPoint endPoint) 73 public static OSD EnableSimulator(ulong handle, IPEndPoint endPoint, int regionSizeX, int regionSizeY)
74 { 74 {
75 OSDMap llsdSimInfo = new OSDMap(3); 75 OSDMap llsdSimInfo = new OSDMap(5);
76 76
77 llsdSimInfo.Add("Handle", new OSDBinary(ulongToByteArray(handle))); 77 llsdSimInfo.Add("Handle", new OSDBinary(ulongToByteArray(handle)));
78 llsdSimInfo.Add("IP", new OSDBinary(endPoint.Address.GetAddressBytes())); 78 llsdSimInfo.Add("IP", new OSDBinary(endPoint.Address.GetAddressBytes()));
79 llsdSimInfo.Add("Port", new OSDInteger(endPoint.Port)); 79 llsdSimInfo.Add("Port", new OSDInteger(endPoint.Port));
80 llsdSimInfo.Add("RegionSizeX", new OSDInteger(regionSizeX));
81 llsdSimInfo.Add("RegionSizeY", new OSDInteger(regionSizeY));
80 82
81 OSDArray arr = new OSDArray(1); 83 OSDArray arr = new OSDArray(1);
82 arr.Add(llsdSimInfo); 84 arr.Add(llsdSimInfo);
@@ -104,7 +106,8 @@ namespace OpenSim.Region.ClientStack.Linden
104 106
105 public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, 107 public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt,
106 IPEndPoint newRegionExternalEndPoint, 108 IPEndPoint newRegionExternalEndPoint,
107 string capsURL, UUID agentID, UUID sessionID) 109 string capsURL, UUID agentID, UUID sessionID,
110 int regionSizeX, int regionSizeY)
108 { 111 {
109 OSDArray lookAtArr = new OSDArray(3); 112 OSDArray lookAtArr = new OSDArray(3);
110 lookAtArr.Add(OSD.FromReal(lookAt.X)); 113 lookAtArr.Add(OSD.FromReal(lookAt.X));
@@ -130,11 +133,13 @@ namespace OpenSim.Region.ClientStack.Linden
130 OSDArray agentDataArr = new OSDArray(1); 133 OSDArray agentDataArr = new OSDArray(1);
131 agentDataArr.Add(agentDataMap); 134 agentDataArr.Add(agentDataMap);
132 135
133 OSDMap regionDataMap = new OSDMap(4); 136 OSDMap regionDataMap = new OSDMap(6);
134 regionDataMap.Add("RegionHandle", OSD.FromBinary(ulongToByteArray(handle))); 137 regionDataMap.Add("RegionHandle", OSD.FromBinary(ulongToByteArray(handle)));
135 regionDataMap.Add("SeedCapability", OSD.FromString(capsURL)); 138 regionDataMap.Add("SeedCapability", OSD.FromString(capsURL));
136 regionDataMap.Add("SimIP", OSD.FromBinary(newRegionExternalEndPoint.Address.GetAddressBytes())); 139 regionDataMap.Add("SimIP", OSD.FromBinary(newRegionExternalEndPoint.Address.GetAddressBytes()));
137 regionDataMap.Add("SimPort", OSD.FromInteger(newRegionExternalEndPoint.Port)); 140 regionDataMap.Add("SimPort", OSD.FromInteger(newRegionExternalEndPoint.Port));
141 regionDataMap.Add("RegionSizeX", new OSDInteger(regionSizeX));
142 regionDataMap.Add("RegionSizeY", new OSDInteger(regionSizeY));
138 143
139 OSDArray regionDataArr = new OSDArray(1); 144 OSDArray regionDataArr = new OSDArray(1);
140 regionDataArr.Add(regionDataMap); 145 regionDataArr.Add(regionDataMap);
@@ -148,8 +153,9 @@ namespace OpenSim.Region.ClientStack.Linden
148 } 153 }
149 154
150 public static OSD TeleportFinishEvent( 155 public static OSD TeleportFinishEvent(
151 ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, 156 ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint,
152 uint locationID, uint flags, string capsURL, UUID agentID) 157 uint locationID, uint flags, string capsURL, UUID agentID,
158 int regionSizeX, int regionSizeY)
153 { 159 {
154 OSDMap info = new OSDMap(); 160 OSDMap info = new OSDMap();
155 info.Add("AgentID", OSD.FromUUID(agentID)); 161 info.Add("AgentID", OSD.FromUUID(agentID));
@@ -160,6 +166,8 @@ namespace OpenSim.Region.ClientStack.Linden
160 info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes())); 166 info.Add("SimIP", OSD.FromBinary(regionExternalEndPoint.Address.GetAddressBytes()));
161 info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port)); 167 info.Add("SimPort", OSD.FromInteger(regionExternalEndPoint.Port));
162 info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation 168 info.Add("TeleportFlags", OSD.FromULong(1L << 4)); // AgentManager.TeleportFlags.ViaLocation
169 info.Add("RegionSizeX", new OSDInteger(regionSizeX));
170 info.Add("RegionSizeY", new OSDInteger(regionSizeY));
163 171
164 OSDArray infoArr = new OSDArray(); 172 OSDArray infoArr = new OSDArray();
165 infoArr.Add(info); 173 infoArr.Add(info);
@@ -187,12 +195,18 @@ namespace OpenSim.Region.ClientStack.Linden
187 return BuildEvent("ScriptRunningReply", body); 195 return BuildEvent("ScriptRunningReply", body);
188 } 196 }
189 197
190 public static OSD EstablishAgentCommunication(UUID agentID, string simIpAndPort, string seedcap) 198 public static OSD EstablishAgentCommunication(UUID agentID, string simIpAndPort, string seedcap,
199 ulong regionHandle, int regionSizeX, int regionSizeY)
191 { 200 {
192 OSDMap body = new OSDMap(3); 201 OSDMap body = new OSDMap(6)
193 body.Add("agent-id", new OSDUUID(agentID)); 202 {
194 body.Add("sim-ip-and-port", new OSDString(simIpAndPort)); 203 {"agent-id", new OSDUUID(agentID)},
195 body.Add("seed-capability", new OSDString(seedcap)); 204 {"sim-ip-and-port", new OSDString(simIpAndPort)},
205 {"seed-capability", new OSDString(seedcap)},
206 {"region-handle", OSD.FromULong(regionHandle)},
207 {"region-size-x", OSD.FromInteger(regionSizeX)},
208 {"region-size-y", OSD.FromInteger(regionSizeY)}
209 };
196 210
197 return BuildEvent("EstablishAgentCommunication", body); 211 return BuildEvent("EstablishAgentCommunication", body);
198 } 212 }
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index ef5239a..717c802 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -825,7 +825,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
825 // The EnableSimulator message makes the client establish a connection with the destination 825 // The EnableSimulator message makes the client establish a connection with the destination
826 // simulator by sending the initial UseCircuitCode UDP packet to the destination containing the 826 // simulator by sending the initial UseCircuitCode UDP packet to the destination containing the
827 // correct circuit code. 827 // correct circuit code.
828 m_eqModule.EnableSimulator(destinationHandle, endPoint, sp.UUID); 828 m_eqModule.EnableSimulator(destinationHandle, endPoint, sp.UUID,
829 finalDestination.RegionSizeX, finalDestination.RegionSizeY);
830 m_log.DebugFormat("{0} Sent EnableSimulator. regName={1}, size=<{2},{3}>", LogHeader,
831 finalDestination.RegionName, finalDestination.RegionSizeX, finalDestination.RegionSizeY);
829 832
830 // XXX: Is this wait necessary? We will always end up waiting on UpdateAgent for the destination 833 // XXX: Is this wait necessary? We will always end up waiting on UpdateAgent for the destination
831 // simulator to confirm that it has established communication with the viewer. 834 // simulator to confirm that it has established communication with the viewer.
@@ -835,7 +838,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
835 // unnecessary - teleport will succeed and SEED caps will be requested without it (though possibly 838 // unnecessary - teleport will succeed and SEED caps will be requested without it (though possibly
836 // only on TeleportFinish). This is untested for region teleport between different simulators 839 // only on TeleportFinish). This is untested for region teleport between different simulators
837 // though this probably also works. 840 // though this probably also works.
838 m_eqModule.EstablishAgentCommunication(sp.UUID, endPoint, capsPath); 841 m_eqModule.EstablishAgentCommunication(sp.UUID, endPoint, capsPath, finalDestination.RegionHandle,
842 finalDestination.RegionSizeX, finalDestination.RegionSizeY);
839 } 843 }
840 else 844 else
841 { 845 {
@@ -921,7 +925,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
921 // OK, send TPFinish to the client, so that it starts the process of contacting the destination region 925 // OK, send TPFinish to the client, so that it starts the process of contacting the destination region
922 if (m_eqModule != null) 926 if (m_eqModule != null)
923 { 927 {
924 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID); 928 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID,
929 finalDestination.RegionSizeX, finalDestination.RegionSizeY);
925 } 930 }
926 else 931 else
927 { 932 {
@@ -1074,7 +1079,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1074 1079
1075 // New protocol: send TP Finish directly, without prior ES or EAC. That's what happens in the Linden grid 1080 // New protocol: send TP Finish directly, without prior ES or EAC. That's what happens in the Linden grid
1076 if (m_eqModule != null) 1081 if (m_eqModule != null)
1077 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID); 1082 m_eqModule.TeleportFinishEvent(destinationHandle, 13, endPoint, 0, teleportFlags, capsPath, sp.UUID,
1083 finalDestination.RegionSizeX, finalDestination.RegionSizeY);
1078 else 1084 else
1079 sp.ControllingClient.SendRegionTeleport(destinationHandle, 13, endPoint, 4, 1085 sp.ControllingClient.SendRegionTeleport(destinationHandle, 13, endPoint, 4,
1080 teleportFlags, capsPath); 1086 teleportFlags, capsPath);
@@ -1717,11 +1723,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1717 if (m_eqModule != null) 1723 if (m_eqModule != null)
1718 { 1724 {
1719 m_eqModule.CrossRegion( 1725 m_eqModule.CrossRegion(
1720 neighbourRegion.RegionHandle, pos + agent.Velocity, vel2 /* agent.Velocity */, neighbourRegion.ExternalEndPoint, 1726 neighbourRegion.RegionHandle, pos + agent.Velocity, vel2 /* agent.Velocity */,
1721 capsPath, agent.UUID, agent.ControllingClient.SessionId); 1727 neighbourRegion.ExternalEndPoint,
1728 capsPath, agent.UUID, agent.ControllingClient.SessionId,
1729 neighbourRegion.RegionSizeX, neighbourRegion.RegionSizeY);
1722 } 1730 }
1723 else 1731 else
1724 { 1732 {
1733 m_log.ErrorFormat("{0} Using old CrossRegion packet. Varregion will not work!!", LogHeader);
1725 agent.ControllingClient.CrossRegion(neighbourRegion.RegionHandle, pos + agent.Velocity, agent.Velocity, neighbourRegion.ExternalEndPoint, 1734 agent.ControllingClient.CrossRegion(neighbourRegion.RegionHandle, pos + agent.Velocity, agent.Velocity, neighbourRegion.ExternalEndPoint,
1726 capsPath); 1735 capsPath);
1727 } 1736 }
@@ -2087,12 +2096,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
2087 } 2096 }
2088 #endregion 2097 #endregion
2089 2098
2090 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: {0} is sending {1} EnableSimulator for neighbour region {2} @ {3} " + 2099 m_log.DebugFormat("{0} {1} is sending {2} EnableSimulator for neighbour region {3}(loc=<{4},{5}>,siz=<{6},{7}>) " +
2091 "and EstablishAgentCommunication with seed cap {4}", 2100 "and EstablishAgentCommunication with seed cap {8}", LogHeader,
2092 scene.RegionInfo.RegionName, sp.Name, reg.RegionName, reg.RegionHandle, capsPath); 2101 scene.RegionInfo.RegionName, sp.Name,
2102 reg.RegionName, reg.RegionLocX, reg.RegionLocY, reg.RegionSizeX, reg.RegionSizeY , capsPath);
2093 2103
2094 m_eqModule.EnableSimulator(reg.RegionHandle, endPoint, sp.UUID); 2104 m_eqModule.EnableSimulator(reg.RegionHandle, endPoint, sp.UUID, reg.RegionSizeX, reg.RegionSizeY);
2095 m_eqModule.EstablishAgentCommunication(sp.UUID, endPoint, capsPath); 2105 m_eqModule.EstablishAgentCommunication(sp.UUID, endPoint, capsPath, reg.RegionHandle, reg.RegionSizeX, reg.RegionSizeY);
2096 } 2106 }
2097 else 2107 else
2098 { 2108 {
diff --git a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
index 3780ece..dfc269e 100644
--- a/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEventQueue.cs
@@ -39,16 +39,17 @@ namespace OpenSim.Region.Framework.Interfaces
39 39
40 // These are required to decouple Scenes from EventQueueHelper 40 // These are required to decouple Scenes from EventQueueHelper
41 void DisableSimulator(ulong handle, UUID avatarID); 41 void DisableSimulator(ulong handle, UUID avatarID);
42 void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID); 42 void EnableSimulator(ulong handle, IPEndPoint endPoint, UUID avatarID, int regionSizeX, int regionSizeY);
43 void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint, 43 void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint,
44 string capsPath); 44 string capsPath, ulong regionHandle, int regionSizeX, int regionSizeY);
45 void TeleportFinishEvent(ulong regionHandle, byte simAccess, 45 void TeleportFinishEvent(ulong regionHandle, byte simAccess,
46 IPEndPoint regionExternalEndPoint, 46 IPEndPoint regionExternalEndPoint,
47 uint locationID, uint flags, string capsURL, 47 uint locationID, uint flags, string capsURL,
48 UUID agentID); 48 UUID agentID, int regionSizeX, int regionSizeY);
49 void CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, 49 void CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt,
50 IPEndPoint newRegionExternalEndPoint, 50 IPEndPoint newRegionExternalEndPoint,
51 string capsURL, UUID avatarID, UUID sessionID); 51 string capsURL, UUID avatarID, UUID sessionID,
52 int regionSizeX, int regionSizeY);
52 void ChatterboxInvitation(UUID sessionID, string sessionName, 53 void ChatterboxInvitation(UUID sessionID, string sessionName,
53 UUID fromAgent, string message, UUID toAgent, string fromName, byte dialog, 54 UUID fromAgent, string message, UUID toAgent, string fromName, byte dialog,
54 uint timeStamp, bool offline, int parentEstateID, Vector3 position, 55 uint timeStamp, bool offline, int parentEstateID, Vector3 position,
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 7772f94..610bcd6 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1953,6 +1953,11 @@ namespace OpenSim.Region.Framework.Scenes
1953 1953
1954 GridRegion region = new GridRegion(RegionInfo); 1954 GridRegion region = new GridRegion(RegionInfo);
1955 string error = GridService.RegisterRegion(RegionInfo.ScopeID, region); 1955 string error = GridService.RegisterRegion(RegionInfo.ScopeID, region);
1956 m_log.DebugFormat("{0} RegisterRegionWithGrid. name={1},id={2},loc=<{3},{4}>,size=<{5},{6}>",
1957 LogHeader, m_regionName,
1958 RegionInfo.RegionID,
1959 RegionInfo.RegionLocX, RegionInfo.RegionLocY,
1960 RegionInfo.RegionSizeX, RegionInfo.RegionSizeY);
1956 if (error != String.Empty) 1961 if (error != String.Empty)
1957 throw new Exception(error); 1962 throw new Exception(error);
1958 } 1963 }