diff options
author | Dr Scofield | 2009-05-05 16:17:52 +0000 |
---|---|---|
committer | Dr Scofield | 2009-05-05 16:17:52 +0000 |
commit | e0a06f641668cd5c25a7854af2faf8a61c4053ee (patch) | |
tree | c2a4620c4bdc0e479ca16528cd9e0524529a7998 /OpenSim/Region/CoreModules | |
parent | * Fix http://opensimulator.org/mantis/view.php?id=3585 (diff) | |
download | opensim-SC_OLD-e0a06f641668cd5c25a7854af2faf8a61c4053ee.zip opensim-SC_OLD-e0a06f641668cd5c25a7854af2faf8a61c4053ee.tar.gz opensim-SC_OLD-e0a06f641668cd5c25a7854af2faf8a61c4053ee.tar.bz2 opensim-SC_OLD-e0a06f641668cd5c25a7854af2faf8a61c4053ee.tar.xz |
- moving banned check and public/private check to
Scene.NewUserConnection()
- adding reason reporting
this enforces estate bans very early on and prevents us from
circulating client objects that we'd then have to retract once we
realize that the client is not allowed into the region
Diffstat (limited to 'OpenSim/Region/CoreModules')
4 files changed, 27 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs index f21ce0f..a5101d0 100644 --- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs +++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs | |||
@@ -160,8 +160,9 @@ namespace OpenSim.Region.CoreModules.Hypergrid | |||
160 | } | 160 | } |
161 | } | 161 | } |
162 | 162 | ||
163 | public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent) | 163 | public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason) |
164 | { | 164 | { |
165 | reason = String.Empty; | ||
165 | return true; | 166 | return true; |
166 | } | 167 | } |
167 | 168 | ||
diff --git a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs index ad91d63..5278b74 100644 --- a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs +++ b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs | |||
@@ -545,7 +545,15 @@ namespace OpenSim.Region.CoreModules.InterGrid | |||
545 | homeScene.CommsManager.UserProfileCacheService.PreloadUserCache(userProfile); | 545 | homeScene.CommsManager.UserProfileCacheService.PreloadUserCache(userProfile); |
546 | 546 | ||
547 | // Call 'new user' event handler | 547 | // Call 'new user' event handler |
548 | homeScene.NewUserConnection(agentData); | 548 | string reason; |
549 | if (!homeScene.NewUserConnection(agentData, out reason)) | ||
550 | { | ||
551 | responseMap["connect"] = OSD.FromBoolean(false); | ||
552 | responseMap["message"] = OSD.FromString(String.Format("Connection refused: {0}", reason)); | ||
553 | m_log.ErrorFormat("[OGP]: rez_avatar/request failed: {0}", reason); | ||
554 | return responseMap; | ||
555 | } | ||
556 | |||
549 | 557 | ||
550 | //string raCap = string.Empty; | 558 | //string raCap = string.Empty; |
551 | 559 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/LocalInterregionComms.cs index b94efa7..bdf2280 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/LocalInterregionComms.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/LocalInterregionComms.cs | |||
@@ -24,6 +24,7 @@ | |||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | using System; | ||
27 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
28 | using System.Reflection; | 29 | using System.Reflection; |
29 | using log4net; | 30 | using log4net; |
@@ -112,19 +113,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Interregion | |||
112 | * Agent-related communications | 113 | * Agent-related communications |
113 | */ | 114 | */ |
114 | 115 | ||
115 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit) | 116 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit, out string reason) |
116 | { | 117 | { |
117 | foreach (Scene s in m_sceneList) | 118 | foreach (Scene s in m_sceneList) |
118 | { | 119 | { |
119 | if (s.RegionInfo.RegionHandle == regionHandle) | 120 | if (s.RegionInfo.RegionHandle == regionHandle) |
120 | { | 121 | { |
121 | // m_log.DebugFormat("[LOCAL COMMS]: Found region {0} to send SendCreateChildAgent", regionHandle); | 122 | // m_log.DebugFormat("[LOCAL COMMS]: Found region {0} to send SendCreateChildAgent", regionHandle); |
122 | s.NewUserConnection(aCircuit); | 123 | return s.NewUserConnection(aCircuit, out reason); |
123 | return true; | ||
124 | } | 124 | } |
125 | } | 125 | } |
126 | 126 | ||
127 | // m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", regionHandle); | 127 | // m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for SendCreateChildAgent", regionHandle); |
128 | reason = "Did not find region."; | ||
128 | return false; | 129 | return false; |
129 | } | 130 | } |
130 | 131 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/RESTInterregionComms.cs b/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/RESTInterregionComms.cs index 7fafb6e..80dced7 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/RESTInterregionComms.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectors/Interregion/RESTInterregionComms.cs | |||
@@ -140,10 +140,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Interregion | |||
140 | * Agent-related communications | 140 | * Agent-related communications |
141 | */ | 141 | */ |
142 | 142 | ||
143 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit) | 143 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit, out string reason) |
144 | { | 144 | { |
145 | // Try local first | 145 | // Try local first |
146 | if (m_localBackend.SendCreateChildAgent(regionHandle, aCircuit)) | 146 | if (m_localBackend.SendCreateChildAgent(regionHandle, aCircuit, out reason)) |
147 | return true; | 147 | return true; |
148 | 148 | ||
149 | // else do the remote thing | 149 | // else do the remote thing |
@@ -154,7 +154,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Interregion | |||
154 | { | 154 | { |
155 | m_regionClient.SendUserInformation(regInfo, aCircuit); | 155 | m_regionClient.SendUserInformation(regInfo, aCircuit); |
156 | 156 | ||
157 | return m_regionClient.DoCreateChildAgentCall(regInfo, aCircuit, "None"); | 157 | return m_regionClient.DoCreateChildAgentCall(regInfo, aCircuit, "None", out reason); |
158 | } | 158 | } |
159 | //else | 159 | //else |
160 | // m_log.Warn("[REST COMMS]: Region not found " + regionHandle); | 160 | // m_log.Warn("[REST COMMS]: Region not found " + regionHandle); |
@@ -431,12 +431,19 @@ namespace OpenSim.Region.CoreModules.ServiceConnectors.Interregion | |||
431 | return; | 431 | return; |
432 | } | 432 | } |
433 | 433 | ||
434 | OSDMap resp = new OSDMap(2); | ||
435 | string reason = String.Empty; | ||
436 | |||
434 | // This is the meaning of POST agent | 437 | // This is the meaning of POST agent |
435 | m_regionClient.AdjustUserInformation(aCircuit); | 438 | m_regionClient.AdjustUserInformation(aCircuit); |
436 | bool result = m_localBackend.SendCreateChildAgent(regionhandle, aCircuit); | 439 | bool result = m_localBackend.SendCreateChildAgent(regionhandle, aCircuit, out reason); |
440 | |||
441 | resp["reason"] = OSD.FromString(reason); | ||
442 | resp["success"] = OSD.FromBoolean(result); | ||
437 | 443 | ||
444 | // TODO: add reason if not String.Empty? | ||
438 | responsedata["int_response_code"] = 200; | 445 | responsedata["int_response_code"] = 200; |
439 | responsedata["str_response_string"] = result.ToString(); | 446 | responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp); |
440 | } | 447 | } |
441 | 448 | ||
442 | protected virtual void DoAgentPut(Hashtable request, Hashtable responsedata) | 449 | protected virtual void DoAgentPut(Hashtable request, Hashtable responsedata) |