aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorMelanie2010-06-14 02:49:15 +0100
committerMelanie2010-06-14 02:49:15 +0100
commitfdf648bcf3cecc2236cc6761d33f3df5e0af136d (patch)
treedb65a301f98b6b998a901cdd887fec755e6d73dd /OpenSim/Region/CoreModules
parentD.U.H. #2. Inverted test. Again. Argh! (diff)
parentFixes attachments coming back upon being detached in neighbouring regions and... (diff)
downloadopensim-SC-fdf648bcf3cecc2236cc6761d33f3df5e0af136d.zip
opensim-SC-fdf648bcf3cecc2236cc6761d33f3df5e0af136d.tar.gz
opensim-SC-fdf648bcf3cecc2236cc6761d33f3df5e0af136d.tar.bz2
opensim-SC-fdf648bcf3cecc2236cc6761d33f3df5e0af136d.tar.xz
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs74
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs5
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs17
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs5
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/LocalNeighbourServiceConnector.cs8
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs1
8 files changed, 66 insertions, 48 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index f63089d..d3d6f25 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -373,7 +373,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
373 // Save avatar attachment information 373 // Save avatar attachment information
374 if (m_scene.AvatarFactory != null) 374 if (m_scene.AvatarFactory != null)
375 { 375 {
376 m_log.Debug("[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", ItemID: " + itemID); 376 m_log.Debug("[ATTACHMENTS MODULE]: Dettaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID);
377 m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); 377 m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
378 } 378 }
379 } 379 }
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index 22c8937..7e5a8ec 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -198,7 +198,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
198 198
199 public void UpdateDatabase(UUID user, AvatarAppearance appearance) 199 public void UpdateDatabase(UUID user, AvatarAppearance appearance)
200 { 200 {
201 //m_log.DebugFormat("[APPEARANCE]: UpdateDatabase"); 201 m_log.DebugFormat("[APPEARANCE]: UpdateDatabase");
202 AvatarData adata = new AvatarData(appearance); 202 AvatarData adata = new AvatarData(appearance);
203 m_scene.AvatarService.SetAvatar(user, adata); 203 m_scene.AvatarService.SetAvatar(user, adata);
204 } 204 }
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 3fcc0e8..927eeab 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -396,7 +396,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
396 agent.Position = position; 396 agent.Position = position;
397 SetCallbackURL(agent, sp.Scene.RegionInfo); 397 SetCallbackURL(agent, sp.Scene.RegionInfo);
398 398
399 UpdateAgent(reg, finalDestination, agent); 399 if (!UpdateAgent(reg, finalDestination, agent))
400 {
401 // Region doesn't take it
402 Fail(sp, finalDestination);
403 return;
404 }
400 405
401 m_log.DebugFormat( 406 m_log.DebugFormat(
402 "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, sp.UUID); 407 "[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, sp.UUID);
@@ -421,21 +426,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
421 // that the client contacted the destination before we send the attachments and close things here. 426 // that the client contacted the destination before we send the attachments and close things here.
422 if (!WaitForCallback(sp.UUID)) 427 if (!WaitForCallback(sp.UUID))
423 { 428 {
424 // Client never contacted destination. Let's restore everything back 429 Fail(sp, finalDestination);
425 sp.ControllingClient.SendTeleportFailed("Problems connecting to destination.");
426
427 // Fail. Reset it back
428 sp.IsChildAgent = false;
429
430 ResetFromTransit(sp.UUID);
431
432 // Yikes! We should just have a ref to scene here.
433 //sp.Scene.InformClientOfNeighbours(sp);
434 EnableChildAgents(sp);
435
436 // Finally, kill the agent we just created at the destination.
437 m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID);
438
439 return; 430 return;
440 } 431 }
441 432
@@ -475,6 +466,22 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
475 } 466 }
476 } 467 }
477 468
469 private void Fail(ScenePresence sp, GridRegion finalDestination)
470 {
471 // Client never contacted destination. Let's restore everything back
472 sp.ControllingClient.SendTeleportFailed("Problems connecting to destination.");
473
474 // Fail. Reset it back
475 sp.IsChildAgent = false;
476
477 ResetFromTransit(sp.UUID);
478
479 EnableChildAgents(sp);
480
481 // Finally, kill the agent we just created at the destination.
482 m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID);
483
484 }
478 485
479 protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason) 486 protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason)
480 { 487 {
@@ -813,7 +820,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
813 cAgent.CallbackURI = "http://" + m_scene.RegionInfo.ExternalHostName + ":" + m_scene.RegionInfo.HttpPort + 820 cAgent.CallbackURI = "http://" + m_scene.RegionInfo.ExternalHostName + ":" + m_scene.RegionInfo.HttpPort +
814 "/agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/"; 821 "/agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/";
815 822
816 m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent); 823 if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent))
824 {
825 // region doesn't take it
826 ResetFromTransit(agent.UUID);
827 return agent;
828 }
817 829
818 // Next, let's close the child agent connections that are too far away. 830 // Next, let's close the child agent connections that are too far away.
819 agent.CloseChildAgents(neighbourx, neighboury); 831 agent.CloseChildAgents(neighbourx, neighboury);
@@ -914,12 +926,40 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
914 /// </summary> 926 /// </summary>
915 public void EnableChildAgent(ScenePresence sp, GridRegion region) 927 public void EnableChildAgent(ScenePresence sp, GridRegion region)
916 { 928 {
929 m_log.DebugFormat("[ENTITY TRANSFER]: Enabling child agent in new neighour {0}", region.RegionName);
930
931 AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode);
917 AgentCircuitData agent = sp.ControllingClient.RequestClientInfo(); 932 AgentCircuitData agent = sp.ControllingClient.RequestClientInfo();
918 agent.BaseFolder = UUID.Zero; 933 agent.BaseFolder = UUID.Zero;
919 agent.InventoryFolder = UUID.Zero; 934 agent.InventoryFolder = UUID.Zero;
920 agent.startpos = new Vector3(128, 128, 70); 935 agent.startpos = new Vector3(128, 128, 70);
921 agent.child = true; 936 agent.child = true;
922 agent.Appearance = sp.Appearance; 937 agent.Appearance = sp.Appearance;
938 agent.CapsPath = CapsUtil.GetRandomCapsObjectPath();
939
940 agent.ChildrenCapSeeds = new Dictionary<ulong, string>(sp.Scene.CapsModule.GetChildrenSeeds(sp.UUID));
941 m_log.DebugFormat("[XXX] Seeds 1 {0}", agent.ChildrenCapSeeds.Count);
942
943 if (!agent.ChildrenCapSeeds.ContainsKey(sp.Scene.RegionInfo.RegionHandle))
944 agent.ChildrenCapSeeds.Add(sp.Scene.RegionInfo.RegionHandle, sp.ControllingClient.RequestClientInfo().CapsPath);
945 m_log.DebugFormat("[XXX] Seeds 2 {0}", agent.ChildrenCapSeeds.Count);
946
947 sp.AddNeighbourRegion(region.RegionHandle, agent.CapsPath);
948 foreach (ulong h in agent.ChildrenCapSeeds.Keys)
949 m_log.DebugFormat("[XXX] --> {0}", h);
950 m_log.DebugFormat("[XXX] Adding {0}", region.RegionHandle);
951 agent.ChildrenCapSeeds.Add(region.RegionHandle, agent.CapsPath);
952
953 if (sp.Scene.CapsModule != null)
954 {
955 sp.Scene.CapsModule.SetChildrenSeed(sp.UUID, agent.ChildrenCapSeeds);
956 }
957
958 if (currentAgentCircuit != null)
959 {
960 agent.ServiceURLs = currentAgentCircuit.ServiceURLs;
961 agent.Viewer = currentAgentCircuit.Viewer;
962 }
923 963
924 IPEndPoint external = region.ExternalEndPoint; 964 IPEndPoint external = region.ExternalEndPoint;
925 if (external != null) 965 if (external != null)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
index 8a90370..35518d5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
@@ -123,17 +123,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Neighbour
123 123
124 public GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) 124 public GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion)
125 { 125 {
126 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: HelloNeighbour from {0}, to {1}. Count = {2}",
127 thisRegion.RegionName, regionHandle, m_Scenes.Count);
128 foreach (Scene s in m_Scenes) 126 foreach (Scene s in m_Scenes)
129 { 127 {
130 if (s.RegionInfo.RegionHandle == regionHandle) 128 if (s.RegionInfo.RegionHandle == regionHandle)
131 { 129 {
132 m_log.Debug("[NEIGHBOUR IN CONNECTOR]: Found region to SendHelloNeighbour"); 130 //m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: HelloNeighbour from {0} to {1}", thisRegion.RegionName, s.RegionInfo.RegionName);
133 return s.IncomingHelloNeighbour(thisRegion); 131 return s.IncomingHelloNeighbour(thisRegion);
134 } 132 }
135 } 133 }
136 m_log.DebugFormat("[NEIGHBOUR IN CONNECTOR]: region handle {0} not found", regionHandle);
137 return null; 134 return null;
138 } 135 }
139 136
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs
index 1b00c8a..b2e3f4f 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs
@@ -181,22 +181,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
181 181
182 public List<GridRegion> GetNeighbours(UUID scopeID, UUID regionID) 182 public List<GridRegion> GetNeighbours(UUID scopeID, UUID regionID)
183 { 183 {
184 if (m_LocalCache.ContainsKey(regionID)) 184 return m_GridService.GetNeighbours(scopeID, regionID);
185 {
186 List<GridRegion> neighbours = m_LocalCache[regionID].GetNeighbours();
187 if (neighbours.Count == 0)
188 // try the DB
189 neighbours = m_GridService.GetNeighbours(scopeID, regionID);
190 return neighbours;
191 }
192 else
193 {
194 m_log.WarnFormat("[LOCAL GRID CONNECTOR]: GetNeighbours: Requested region {0} is not on this sim", regionID);
195 return new List<GridRegion>();
196 }
197
198 // Don't go to the DB
199 //return m_GridService.GetNeighbours(scopeID, regionID);
200 } 185 }
201 186
202 public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID) 187 public GridRegion GetRegionByUUID(UUID scopeID, UUID regionID)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
index 46741a5..16e25e6 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
@@ -153,12 +153,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
153 return false; 153 return false;
154 } 154 }
155 155
156 // Let's override GetNeighbours completely -- never go to the grid server
157 // Neighbours are/should be cached locally
158 // For retrieval from the DB, caller should call GetRegionByPosition
159 public override List<GridRegion> GetNeighbours(UUID scopeID, UUID regionID) 156 public override List<GridRegion> GetNeighbours(UUID scopeID, UUID regionID)
160 { 157 {
161 return m_LocalGridService.GetNeighbours(scopeID, regionID); 158 return base.GetNeighbours(scopeID, regionID);
162 } 159 }
163 160
164 public override GridRegion GetRegionByUUID(UUID scopeID, UUID regionID) 161 public override GridRegion GetRegionByUUID(UUID scopeID, UUID regionID)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/LocalNeighbourServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/LocalNeighbourServiceConnector.cs
index daba0b3..f71bf46 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/LocalNeighbourServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Neighbour/LocalNeighbourServiceConnector.cs
@@ -121,17 +121,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
121 121
122 public GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion) 122 public GridRegion HelloNeighbour(ulong regionHandle, RegionInfo thisRegion)
123 { 123 {
124 m_log.DebugFormat("[NEIGHBOUR CONNECTOR]: HelloNeighbour from {0}, to {1}. Count = {2}", 124 m_log.DebugFormat("[NEIGHBOUR CONNECTOR]: HelloNeighbour from {0}, to {1}.",
125 thisRegion.RegionName, regionHandle, m_Scenes.Count); 125 thisRegion.RegionName, regionHandle);
126 foreach (Scene s in m_Scenes) 126 foreach (Scene s in m_Scenes)
127 { 127 {
128 if (s.RegionInfo.RegionHandle == regionHandle) 128 if (s.RegionInfo.RegionHandle == regionHandle)
129 { 129 {
130 m_log.Debug("[NEIGHBOUR CONNECTOR]: Found region to SendHelloNeighbour"); 130 //m_log.Debug("[NEIGHBOUR CONNECTOR]: Found region to SendHelloNeighbour");
131 return s.IncomingHelloNeighbour(thisRegion); 131 return s.IncomingHelloNeighbour(thisRegion);
132 } 132 }
133 } 133 }
134 m_log.DebugFormat("[NEIGHBOUR CONNECTOR]: region handle {0} not found", regionHandle); 134 //m_log.DebugFormat("[NEIGHBOUR CONNECTOR]: region handle {0} not found", regionHandle);
135 return null; 135 return null;
136 } 136 }
137 137
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
index 377c868..e16e273 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
@@ -181,7 +181,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
181 // else do the remote thing 181 // else do the remote thing
182 if (!m_localBackend.IsLocalRegion(destination.RegionHandle)) 182 if (!m_localBackend.IsLocalRegion(destination.RegionHandle))
183 { 183 {
184 //m_regionClient.SendUserInformation(regInfo, aCircuit);
185 return m_remoteConnector.CreateAgent(destination, aCircuit, teleportFlags, out reason); 184 return m_remoteConnector.CreateAgent(destination, aCircuit, teleportFlags, out reason);
186 } 185 }
187 return false; 186 return false;