aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Server
diff options
context:
space:
mode:
authorTom Grimshaw2010-05-18 03:24:43 -0700
committerTom Grimshaw2010-05-18 03:24:43 -0700
commit1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5 (patch)
treec85d36357a2ae9f7a81d8e81b23039b5bdf06d08 /OpenSim/Server
parentMissed a nullref in the previous commit (diff)
downloadopensim-SC-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.zip
opensim-SC-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.tar.gz
opensim-SC-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.tar.bz2
opensim-SC-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.tar.xz
Fix to the scenario where we send an agent to a neighbouring sim (via teleport), then tell our neighbours to close the agents.. thereby disconnecting the user. Added a new CloseChildAgent method in lieu of CloseAgent. This has been a long standing problem - with any luck this will cure it.
Diffstat (limited to '')
-rw-r--r--OpenSim/Server/Handlers/Simulation/AgentHandlers.cs23
1 files changed, 23 insertions, 0 deletions
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
index ab3250d..b648e12 100644
--- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
@@ -108,6 +108,11 @@ namespace OpenSim.Server.Handlers.Simulation
108 DoAgentDelete(request, responsedata, agentID, action, regionID); 108 DoAgentDelete(request, responsedata, agentID, action, regionID);
109 return responsedata; 109 return responsedata;
110 } 110 }
111 else if (method.Equals("DELETECHILD"))
112 {
113 DoChildAgentDelete(request, responsedata, agentID, action, regionID);
114 return responsedata;
115 }
111 else 116 else
112 { 117 {
113 m_log.InfoFormat("[AGENT HANDLER]: method {0} not supported in agent message", method); 118 m_log.InfoFormat("[AGENT HANDLER]: method {0} not supported in agent message", method);
@@ -320,6 +325,24 @@ namespace OpenSim.Server.Handlers.Simulation
320 } 325 }
321 } 326 }
322 327
328 protected void DoChildAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID)
329 {
330 m_log.Debug(" >>> DoChildAgentDelete action:" + action + "; RegionID:" + regionID);
331
332 GridRegion destination = new GridRegion();
333 destination.RegionID = regionID;
334
335 if (action.Equals("release"))
336 ReleaseAgent(regionID, id);
337 else
338 m_SimulationService.CloseChildAgent(destination, id);
339
340 responsedata["int_response_code"] = HttpStatusCode.OK;
341 responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
342
343 m_log.Debug("[AGENT HANDLER]: Child Agent Released/Deleted.");
344 }
345
323 protected void DoAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID) 346 protected void DoAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID)
324 { 347 {
325 m_log.Debug(" >>> DoDelete action:" + action + "; RegionID:" + regionID); 348 m_log.Debug(" >>> DoDelete action:" + action + "; RegionID:" + regionID);