diff options
Diffstat (limited to 'OpenSim/Server/Handlers/Simulation/AgentHandlers.cs')
-rw-r--r-- | OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 71a9e6f..c62f256 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | |||
@@ -100,6 +100,11 @@ namespace OpenSim.Server.Handlers.Simulation | |||
100 | DoAgentDelete(request, responsedata, agentID, action, regionID); | 100 | DoAgentDelete(request, responsedata, agentID, action, regionID); |
101 | return responsedata; | 101 | return responsedata; |
102 | } | 102 | } |
103 | else if (method.Equals("DELETECHILD")) | ||
104 | { | ||
105 | DoChildAgentDelete(request, responsedata, agentID, action, regionID); | ||
106 | return responsedata; | ||
107 | } | ||
103 | else if (method.Equals("QUERYACCESS")) | 108 | else if (method.Equals("QUERYACCESS")) |
104 | { | 109 | { |
105 | DoQueryAccess(request, responsedata, agentID, regionID); | 110 | DoQueryAccess(request, responsedata, agentID, regionID); |
@@ -208,6 +213,24 @@ namespace OpenSim.Server.Handlers.Simulation | |||
208 | } | 213 | } |
209 | } | 214 | } |
210 | 215 | ||
216 | protected void DoChildAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID) | ||
217 | { | ||
218 | m_log.Debug(" >>> DoChildAgentDelete action:" + action + "; RegionID:" + regionID); | ||
219 | |||
220 | GridRegion destination = new GridRegion(); | ||
221 | destination.RegionID = regionID; | ||
222 | |||
223 | if (action.Equals("release")) | ||
224 | ReleaseAgent(regionID, id); | ||
225 | else | ||
226 | m_SimulationService.CloseChildAgent(destination, id); | ||
227 | |||
228 | responsedata["int_response_code"] = HttpStatusCode.OK; | ||
229 | responsedata["str_response_string"] = "OpenSim agent " + id.ToString(); | ||
230 | |||
231 | m_log.Debug("[AGENT HANDLER]: Child Agent Released/Deleted."); | ||
232 | } | ||
233 | |||
211 | protected void DoAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID) | 234 | protected void DoAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID) |
212 | { | 235 | { |
213 | m_log.Debug(" >>> DoDelete action:" + action + "; RegionID:" + regionID); | 236 | m_log.Debug(" >>> DoDelete action:" + action + "; RegionID:" + regionID); |
@@ -434,7 +457,15 @@ namespace OpenSim.Server.Handlers.Simulation | |||
434 | // subclasses can override this | 457 | // subclasses can override this |
435 | protected virtual bool CreateAgent(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, uint teleportFlags, bool fromLogin, out string reason) | 458 | protected virtual bool CreateAgent(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, uint teleportFlags, bool fromLogin, out string reason) |
436 | { | 459 | { |
437 | return m_SimulationService.CreateAgent(destination, aCircuit, teleportFlags, out reason); | 460 | reason = String.Empty; |
461 | |||
462 | Util.FireAndForget(x => | ||
463 | { | ||
464 | string r; | ||
465 | m_SimulationService.CreateAgent(destination, aCircuit, teleportFlags, out r); | ||
466 | }); | ||
467 | |||
468 | return true; | ||
438 | } | 469 | } |
439 | } | 470 | } |
440 | 471 | ||