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/Services | |
parent | Missed a nullref in the previous commit (diff) | |
download | opensim-SC_OLD-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.zip opensim-SC_OLD-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.tar.gz opensim-SC_OLD-1c040d8c1ed5ee1ba1e80aa1d248a9b06d1790a5.tar.bz2 opensim-SC_OLD-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 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs | 14 | ||||
-rw-r--r-- | OpenSim/Services/Interfaces/ISimulationService.cs | 8 |
2 files changed, 21 insertions, 1 deletions
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index ff0dd7e..8e0063b 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs | |||
@@ -442,7 +442,7 @@ namespace OpenSim.Services.Connectors.Simulation | |||
442 | return true; | 442 | return true; |
443 | } | 443 | } |
444 | 444 | ||
445 | public bool CloseAgent(GridRegion destination, UUID id) | 445 | private bool CloseAgent(GridRegion destination, UUID id, bool ChildOnly) |
446 | { | 446 | { |
447 | string uri = string.Empty; | 447 | string uri = string.Empty; |
448 | try | 448 | try |
@@ -459,6 +459,8 @@ namespace OpenSim.Services.Connectors.Simulation | |||
459 | 459 | ||
460 | WebRequest request = WebRequest.Create(uri); | 460 | WebRequest request = WebRequest.Create(uri); |
461 | request.Method = "DELETE"; | 461 | request.Method = "DELETE"; |
462 | if (ChildOnly) | ||
463 | request.Method += "CHILD"; | ||
462 | request.Timeout = 10000; | 464 | request.Timeout = 10000; |
463 | 465 | ||
464 | StreamReader sr = null; | 466 | StreamReader sr = null; |
@@ -491,6 +493,16 @@ namespace OpenSim.Services.Connectors.Simulation | |||
491 | return true; | 493 | return true; |
492 | } | 494 | } |
493 | 495 | ||
496 | public bool CloseChildAgent(GridRegion destination, UUID id) | ||
497 | { | ||
498 | return CloseAgent(destination, id, true); | ||
499 | } | ||
500 | |||
501 | public bool CloseAgent(GridRegion destination, UUID id) | ||
502 | { | ||
503 | return CloseAgent(destination, id, false); | ||
504 | } | ||
505 | |||
494 | #endregion Agents | 506 | #endregion Agents |
495 | 507 | ||
496 | #region Objects | 508 | #region Objects |
diff --git a/OpenSim/Services/Interfaces/ISimulationService.cs b/OpenSim/Services/Interfaces/ISimulationService.cs index 67d7cbe..33d6fde 100644 --- a/OpenSim/Services/Interfaces/ISimulationService.cs +++ b/OpenSim/Services/Interfaces/ISimulationService.cs | |||
@@ -71,6 +71,14 @@ namespace OpenSim.Services.Interfaces | |||
71 | bool ReleaseAgent(UUID originRegion, UUID id, string uri); | 71 | bool ReleaseAgent(UUID originRegion, UUID id, string uri); |
72 | 72 | ||
73 | /// <summary> | 73 | /// <summary> |
74 | /// Close child agent. | ||
75 | /// </summary> | ||
76 | /// <param name="regionHandle"></param> | ||
77 | /// <param name="id"></param> | ||
78 | /// <returns></returns> | ||
79 | bool CloseChildAgent(GridRegion destination, UUID id); | ||
80 | |||
81 | /// <summary> | ||
74 | /// Close agent. | 82 | /// Close agent. |
75 | /// </summary> | 83 | /// </summary> |
76 | /// <param name="regionHandle"></param> | 84 | /// <param name="regionHandle"></param> |