mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
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.
This commit is contained in:
@@ -108,6 +108,11 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||
DoAgentDelete(request, responsedata, agentID, action, regionID);
|
||||
return responsedata;
|
||||
}
|
||||
else if (method.Equals("DELETECHILD"))
|
||||
{
|
||||
DoChildAgentDelete(request, responsedata, agentID, action, regionID);
|
||||
return responsedata;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.InfoFormat("[AGENT HANDLER]: method {0} not supported in agent message", method);
|
||||
@@ -320,6 +325,24 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||
}
|
||||
}
|
||||
|
||||
protected void DoChildAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID)
|
||||
{
|
||||
m_log.Debug(" >>> DoChildAgentDelete action:" + action + "; RegionID:" + regionID);
|
||||
|
||||
GridRegion destination = new GridRegion();
|
||||
destination.RegionID = regionID;
|
||||
|
||||
if (action.Equals("release"))
|
||||
ReleaseAgent(regionID, id);
|
||||
else
|
||||
m_SimulationService.CloseChildAgent(destination, id);
|
||||
|
||||
responsedata["int_response_code"] = HttpStatusCode.OK;
|
||||
responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
|
||||
|
||||
m_log.Debug("[AGENT HANDLER]: Child Agent Released/Deleted.");
|
||||
}
|
||||
|
||||
protected void DoAgentDelete(Hashtable request, Hashtable responsedata, UUID id, string action, UUID regionID)
|
||||
{
|
||||
m_log.Debug(" >>> DoDelete action:" + action + "; RegionID:" + regionID);
|
||||
|
||||
Reference in New Issue
Block a user