diff options
author | Tom Grimshaw | 2010-05-18 03:24:43 -0700 |
---|---|---|
committer | Tom Grimshaw | 2010-05-18 03:24:43 -0700 |
commit | 1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5 (patch) | |
tree | c85d36357a2ae9f7a81d8e81b23039b5bdf06d08 /OpenSim/Server | |
parent | Missed a nullref in the previous commit (diff) | |
download | opensim-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.cs | 23 |
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); |