diff options
author | diva | 2009-01-03 07:05:33 +0000 |
---|---|---|
committer | diva | 2009-01-03 07:05:33 +0000 |
commit | 158de95bde7cdee09334c40baee5122fd8f196e2 (patch) | |
tree | 8a8b1f41db53475cca08633cbeec09d5425a8745 | |
parent | Plumbing for moving InformRegionOfChildAgent over to RESTComms: pack and unpa... (diff) | |
download | opensim-SC_OLD-158de95bde7cdee09334c40baee5122fd8f196e2.zip opensim-SC_OLD-158de95bde7cdee09334c40baee5122fd8f196e2.tar.gz opensim-SC_OLD-158de95bde7cdee09334c40baee5122fd8f196e2.tar.bz2 opensim-SC_OLD-158de95bde7cdee09334c40baee5122fd8f196e2.tar.xz |
Another interregion comms change that will not work well with previous versions. This commit moves InformRegionOfChildAgent from OGS1 to RESTComms, effectively having the complete child agent life cycle over REST: create=POST, update=PUT, close=DELETE.
Additional changes include more functions in the IHyperlink interface, and some refactorings in the HG code for better reuse in RESTComms.
10 files changed, 230 insertions, 30 deletions
diff --git a/OpenSim/Framework/Communications/IHyperlink.cs b/OpenSim/Framework/Communications/IHyperlink.cs index 02ba2c2..fa088d6 100644 --- a/OpenSim/Framework/Communications/IHyperlink.cs +++ b/OpenSim/Framework/Communications/IHyperlink.cs | |||
@@ -38,5 +38,7 @@ namespace OpenSim.Framework.Communications | |||
38 | bool IsHyperlinkRegion(ulong handle); | 38 | bool IsHyperlinkRegion(ulong handle); |
39 | RegionInfo GetHyperlinkRegion(ulong handle); | 39 | RegionInfo GetHyperlinkRegion(ulong handle); |
40 | ulong FindRegionHandle(ulong handle); | 40 | ulong FindRegionHandle(ulong handle); |
41 | bool SendUserInformation(RegionInfo region, AgentCircuitData aCircuit); | ||
42 | void AdjustUserInformation(AgentCircuitData aCircuit); | ||
41 | } | 43 | } |
42 | } | 44 | } |
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs index e7d26a9..7b5f405 100644 --- a/OpenSim/Framework/Servers/VersionInfo.cs +++ b/OpenSim/Framework/Servers/VersionInfo.cs | |||
@@ -48,6 +48,6 @@ namespace OpenSim | |||
48 | /// of the code that is too old. | 48 | /// of the code that is too old. |
49 | /// | 49 | /// |
50 | /// </value> | 50 | /// </value> |
51 | public readonly static int MajorInterfaceVersion = 2; | 51 | public readonly static int MajorInterfaceVersion = 3; |
52 | } | 52 | } |
53 | } | 53 | } |
diff --git a/OpenSim/Region/Communications/Hypergrid/HGGridServices.cs b/OpenSim/Region/Communications/Hypergrid/HGGridServices.cs index 691cd4a..fc68ba2 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGGridServices.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGGridServices.cs | |||
@@ -890,17 +890,8 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
890 | 890 | ||
891 | public virtual bool ExpectPrimCrossing(ulong regionHandle, UUID primID, Vector3 position, bool isFlying) { return false; } | 891 | public virtual bool ExpectPrimCrossing(ulong regionHandle, UUID primID, Vector3 position, bool isFlying) { return false; } |
892 | 892 | ||
893 | public virtual bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | 893 | public bool SendUserInformation(RegionInfo regInfo, AgentCircuitData agentData) |
894 | { | 894 | { |
895 | // If we're here, it's because regionHandle is a remote, non-grided region | ||
896 | m_log.Info("[HGrid]: InformRegionOfChildAgent for " + regionHandle); | ||
897 | |||
898 | RegionInfo regInfo = GetHyperlinkRegion(regionHandle); | ||
899 | if (regInfo == null) | ||
900 | return false; | ||
901 | |||
902 | //ulong realHandle = regionHandle; | ||
903 | |||
904 | CachedUserInfo uinfo = m_userProfileCache.GetUserDetails(agentData.AgentID); | 895 | CachedUserInfo uinfo = m_userProfileCache.GetUserDetails(agentData.AgentID); |
905 | if ((uinfo == null) || !IsGoingHome(uinfo, regInfo)) | 896 | if ((uinfo == null) || !IsGoingHome(uinfo, regInfo)) |
906 | { | 897 | { |
@@ -914,6 +905,33 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
914 | else | 905 | else |
915 | m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName); | 906 | m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName); |
916 | 907 | ||
908 | // May need to change agent's name | ||
909 | if (IsLocalUser(uinfo)) | ||
910 | { | ||
911 | agentData.firstname = agentData.firstname + "." + agentData.lastname; | ||
912 | agentData.lastname = "@" + serversInfo.UserURL.Replace("http://", ""); ; //HGNetworkServersInfo.Singleton.LocalUserServerURI; | ||
913 | } | ||
914 | |||
915 | return true; | ||
916 | } | ||
917 | |||
918 | public virtual bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | ||
919 | { | ||
920 | // If we're here, it's because regionHandle is a remote, non-grided region | ||
921 | m_log.Info("[HGrid]: InformRegionOfChildAgent for " + regionHandle); | ||
922 | |||
923 | RegionInfo regInfo = GetHyperlinkRegion(regionHandle); | ||
924 | if (regInfo == null) | ||
925 | return false; | ||
926 | |||
927 | //ulong realHandle = regionHandle; | ||
928 | |||
929 | if (!SendUserInformation(regInfo, agentData)) | ||
930 | { | ||
931 | m_log.Warn("[HGrid]: Failed to inform remote region of user."); | ||
932 | //return false; | ||
933 | } | ||
934 | |||
917 | try | 935 | try |
918 | { | 936 | { |
919 | // ... and then | 937 | // ... and then |
@@ -939,12 +957,14 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
939 | if (remObject != null) | 957 | if (remObject != null) |
940 | { | 958 | { |
941 | sAgentCircuitData sag = new sAgentCircuitData(agentData); | 959 | sAgentCircuitData sag = new sAgentCircuitData(agentData); |
942 | // May need to change agent's name | 960 | //CachedUserInfo uinfo = m_userProfileCache.GetUserDetails(agentData.AgentID); |
943 | if (IsLocalUser(uinfo)) | 961 | |
944 | { | 962 | //// May need to change agent's name |
945 | sag.firstname = agentData.firstname + "." + agentData.lastname; | 963 | //if (IsLocalUser(uinfo)) |
946 | sag.lastname = serversInfo.UserURL; //HGNetworkServersInfo.Singleton.LocalUserServerURI; | 964 | //{ |
947 | } | 965 | // sag.firstname = agentData.firstname + "." + agentData.lastname; |
966 | // sag.lastname = serversInfo.UserURL; //HGNetworkServersInfo.Singleton.LocalUserServerURI; | ||
967 | //} | ||
948 | retValue = remObject.InformRegionOfChildAgent(regionHandle, sag); | 968 | retValue = remObject.InformRegionOfChildAgent(regionHandle, sag); |
949 | } | 969 | } |
950 | else | 970 | else |
@@ -1158,7 +1178,7 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
1158 | /// <param name="regionHandle"></param> | 1178 | /// <param name="regionHandle"></param> |
1159 | /// <param name="agentData"></param> | 1179 | /// <param name="agentData"></param> |
1160 | /// <returns></returns> | 1180 | /// <returns></returns> |
1161 | protected bool HGIncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) | 1181 | public void AdjustUserInformation(AgentCircuitData agentData) |
1162 | { | 1182 | { |
1163 | CachedUserInfo uinfo = m_userProfileCache.GetUserDetails(agentData.AgentID); | 1183 | CachedUserInfo uinfo = m_userProfileCache.GetUserDetails(agentData.AgentID); |
1164 | if ((uinfo != null) && (uinfo.UserProfile != null) && | 1184 | if ((uinfo != null) && (uinfo.UserProfile != null) && |
@@ -1174,7 +1194,6 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
1174 | } | 1194 | } |
1175 | //else | 1195 | //else |
1176 | // Console.WriteLine("---------------> Foreign User!"); | 1196 | // Console.WriteLine("---------------> Foreign User!"); |
1177 | return true; | ||
1178 | } | 1197 | } |
1179 | #endregion | 1198 | #endregion |
1180 | 1199 | ||
diff --git a/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs b/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs index 83c087d..0448692 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGGridServicesGridMode.cs | |||
@@ -274,7 +274,7 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
274 | /// <returns></returns> | 274 | /// <returns></returns> |
275 | public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) | 275 | public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) |
276 | { | 276 | { |
277 | HGIncomingChildAgent(regionHandle, agentData); | 277 | AdjustUserInformation(agentData); |
278 | 278 | ||
279 | m_log.Info("[HGrid]: Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); | 279 | m_log.Info("[HGrid]: Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); |
280 | 280 | ||
diff --git a/OpenSim/Region/Communications/Hypergrid/HGGridServicesStandalone.cs b/OpenSim/Region/Communications/Hypergrid/HGGridServicesStandalone.cs index cabc630..c160696 100644 --- a/OpenSim/Region/Communications/Hypergrid/HGGridServicesStandalone.cs +++ b/OpenSim/Region/Communications/Hypergrid/HGGridServicesStandalone.cs | |||
@@ -764,7 +764,7 @@ namespace OpenSim.Region.Communications.Hypergrid | |||
764 | /// <returns></returns> | 764 | /// <returns></returns> |
765 | public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) | 765 | public bool IncomingChildAgent(ulong regionHandle, AgentCircuitData agentData) |
766 | { | 766 | { |
767 | HGIncomingChildAgent(regionHandle, agentData); | 767 | AdjustUserInformation(agentData); |
768 | 768 | ||
769 | m_log.Info("[HGrid]: " + gdebugRegionName + ": Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); | 769 | m_log.Info("[HGrid]: " + gdebugRegionName + ": Incoming HGrid Agent " + agentData.firstname + " " + agentData.lastname); |
770 | 770 | ||
diff --git a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs index aa618a7..7aeef15 100644 --- a/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs +++ b/OpenSim/Region/Environment/Interfaces/IInterregionComms.cs | |||
@@ -35,6 +35,8 @@ namespace OpenSim.Region.Environment.Interfaces | |||
35 | 35 | ||
36 | public interface IInterregionCommsOut | 36 | public interface IInterregionCommsOut |
37 | { | 37 | { |
38 | bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit); | ||
39 | |||
38 | /// <summary> | 40 | /// <summary> |
39 | /// Full child agent update. | 41 | /// Full child agent update. |
40 | /// </summary> | 42 | /// </summary> |
diff --git a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs index 135a05e..efc5c39 100644 --- a/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/Local/LocalInterregionComms.cs | |||
@@ -118,6 +118,21 @@ namespace OpenSim.Region.Environment.Modules.Communications.Local | |||
118 | 118 | ||
119 | #region IInterregionComms | 119 | #region IInterregionComms |
120 | 120 | ||
121 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit) | ||
122 | { | ||
123 | foreach (Scene s in m_sceneList) | ||
124 | { | ||
125 | if (s.RegionInfo.RegionHandle == regionHandle) | ||
126 | { | ||
127 | //m_log.Debug("[LOCAL COMMS]: Found region to send SendCreateChildAgent"); | ||
128 | s.NewUserConnection(aCircuit); | ||
129 | return true; | ||
130 | } | ||
131 | } | ||
132 | //m_log.Debug("[LOCAL COMMS]: region not found for SendCreateChildAgent"); | ||
133 | return false; | ||
134 | } | ||
135 | |||
121 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) | 136 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) |
122 | { | 137 | { |
123 | foreach (Scene s in m_sceneList) | 138 | foreach (Scene s in m_sceneList) |
diff --git a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs index bff8316..7eb5d30 100644 --- a/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs +++ b/OpenSim/Region/Environment/Modules/Communications/REST/RESTInterregionComms.cs | |||
@@ -128,6 +128,25 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
128 | 128 | ||
129 | #region IInterregionComms | 129 | #region IInterregionComms |
130 | 130 | ||
131 | public bool SendCreateChildAgent(ulong regionHandle, AgentCircuitData aCircuit) | ||
132 | { | ||
133 | // Try local first | ||
134 | if (m_localBackend.SendCreateChildAgent(regionHandle, aCircuit)) | ||
135 | return true; | ||
136 | |||
137 | // else do the remote thing | ||
138 | RegionInfo regInfo = m_commsManager.GridService.RequestNeighbourInfo(regionHandle); | ||
139 | if (regInfo != null) | ||
140 | { | ||
141 | SendUserInformation(regInfo, aCircuit); | ||
142 | |||
143 | return DoCreateChildAgentCall(regInfo, aCircuit); | ||
144 | } | ||
145 | //else | ||
146 | // m_log.Warn("[REST COMMS]: Region not found " + regionHandle); | ||
147 | return false; | ||
148 | } | ||
149 | |||
131 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) | 150 | public bool SendChildAgentUpdate(ulong regionHandle, AgentData cAgentData) |
132 | { | 151 | { |
133 | // Try local first | 152 | // Try local first |
@@ -197,6 +216,91 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
197 | // Internal functions for the above public interface | 216 | // Internal functions for the above public interface |
198 | //------------------------------------------------------------------- | 217 | //------------------------------------------------------------------- |
199 | 218 | ||
219 | protected bool DoCreateChildAgentCall(RegionInfo region, AgentCircuitData aCircuit) | ||
220 | { | ||
221 | // Eventually, we want to use a caps url instead of the agentID | ||
222 | string uri = "http://" + region.ExternalEndPoint.Address + ":" + region.HttpPort + "/agent/" + aCircuit.AgentID + "/"; | ||
223 | //Console.WriteLine(" >>> DoCreateChildAgentCall <<< " + uri); | ||
224 | |||
225 | WebRequest AgentCreateRequest = WebRequest.Create(uri); | ||
226 | AgentCreateRequest.Method = "POST"; | ||
227 | AgentCreateRequest.ContentType = "application/json"; | ||
228 | AgentCreateRequest.Timeout = 10000; | ||
229 | |||
230 | // Fill it in | ||
231 | OSDMap args = null; | ||
232 | try | ||
233 | { | ||
234 | args = aCircuit.PackAgentCircuitData(); | ||
235 | } | ||
236 | catch (Exception e) | ||
237 | { | ||
238 | m_log.Debug("[REST COMMS]: PackAgentCircuitData failed with exception: " + e.Message); | ||
239 | } | ||
240 | // Add the regionhandle of the destination region | ||
241 | ulong regionHandle = GetRegionHandle(region.RegionHandle); | ||
242 | args["destination_handle"] = OSD.FromString(regionHandle.ToString()); | ||
243 | |||
244 | string strBuffer = ""; | ||
245 | byte[] buffer = new byte[1]; | ||
246 | try | ||
247 | { | ||
248 | strBuffer = OSDParser.SerializeJsonString(args); | ||
249 | System.Text.UTF8Encoding str = new System.Text.UTF8Encoding(); | ||
250 | buffer = str.GetBytes(strBuffer); | ||
251 | |||
252 | } | ||
253 | catch (Exception e) | ||
254 | { | ||
255 | m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildCreate: {0}", e.Message); | ||
256 | // ignore. buffer will be empty, caller should check. | ||
257 | } | ||
258 | |||
259 | Stream os = null; | ||
260 | try | ||
261 | { // send the Post | ||
262 | AgentCreateRequest.ContentLength = buffer.Length; //Count bytes to send | ||
263 | os = AgentCreateRequest.GetRequestStream(); | ||
264 | os.Write(buffer, 0, strBuffer.Length); //Send it | ||
265 | os.Close(); | ||
266 | //m_log.InfoFormat("[REST COMMS]: Posted ChildAgentUpdate request to remote sim {0}", uri); | ||
267 | } | ||
268 | //catch (WebException ex) | ||
269 | catch | ||
270 | { | ||
271 | //m_log.InfoFormat("[REST COMMS]: Bad send on ChildAgentUpdate {0}", ex.Message); | ||
272 | |||
273 | return false; | ||
274 | } | ||
275 | |||
276 | // Let's wait for the response | ||
277 | //m_log.Info("[REST COMMS]: Waiting for a reply after DoCreateChildAgentCall"); | ||
278 | |||
279 | try | ||
280 | { | ||
281 | WebResponse webResponse = AgentCreateRequest.GetResponse(); | ||
282 | if (webResponse == null) | ||
283 | { | ||
284 | m_log.Info("[REST COMMS]: Null reply on DoCreateChildAgentCall post"); | ||
285 | } | ||
286 | |||
287 | StreamReader sr = new StreamReader(webResponse.GetResponseStream()); | ||
288 | //reply = sr.ReadToEnd().Trim(); | ||
289 | sr.ReadToEnd().Trim(); | ||
290 | sr.Close(); | ||
291 | //m_log.InfoFormat("[REST COMMS]: DoCreateChildAgentCall reply was {0} ", reply); | ||
292 | |||
293 | } | ||
294 | catch (WebException ex) | ||
295 | { | ||
296 | m_log.InfoFormat("[REST COMMS]: exception on reply of DoCreateChildAgentCall {0}", ex.Message); | ||
297 | // ignore, really | ||
298 | } | ||
299 | |||
300 | return true; | ||
301 | |||
302 | } | ||
303 | |||
200 | protected bool DoChildAgentUpdateCall(RegionInfo region, IAgentData cAgentData) | 304 | protected bool DoChildAgentUpdateCall(RegionInfo region, IAgentData cAgentData) |
201 | { | 305 | { |
202 | // Eventually, we want to use a caps url instead of the agentID | 306 | // Eventually, we want to use a caps url instead of the agentID |
@@ -233,7 +337,7 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
233 | } | 337 | } |
234 | catch (Exception e) | 338 | catch (Exception e) |
235 | { | 339 | { |
236 | m_log.WarnFormat("[OSG2]: Exception thrown on serialization of ChildUpdate: {0}", e.Message); | 340 | m_log.WarnFormat("[REST COMMS]: Exception thrown on serialization of ChildUpdate: {0}", e.Message); |
237 | // ignore. buffer will be empty, caller should check. | 341 | // ignore. buffer will be empty, caller should check. |
238 | } | 342 | } |
239 | 343 | ||
@@ -388,10 +492,7 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
388 | } | 492 | } |
389 | else if (method.Equals("POST")) | 493 | else if (method.Equals("POST")) |
390 | { | 494 | { |
391 | m_log.InfoFormat("[REST COMMS]: method {0} not implemented yet in agent message", method); | 495 | DoPost(request, responsedata, agentID); |
392 | responsedata["int_response_code"] = 404; | ||
393 | responsedata["str_response_string"] = "false"; | ||
394 | |||
395 | return responsedata; | 496 | return responsedata; |
396 | } | 497 | } |
397 | else if (method.Equals("DELETE")) | 498 | else if (method.Equals("DELETE")) |
@@ -438,6 +539,40 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
438 | } | 539 | } |
439 | } | 540 | } |
440 | 541 | ||
542 | protected virtual void DoPost(Hashtable request, Hashtable responsedata, UUID id) | ||
543 | { | ||
544 | OSDMap args = GetOSDMap(request); | ||
545 | if (args == null) | ||
546 | { | ||
547 | responsedata["int_response_code"] = 400; | ||
548 | responsedata["str_response_string"] = "false"; | ||
549 | return; | ||
550 | } | ||
551 | |||
552 | // retrieve the regionhandle | ||
553 | ulong regionhandle = 0; | ||
554 | if (args["destination_handle"] != null) | ||
555 | UInt64.TryParse(args["destination_handle"].AsString(), out regionhandle); | ||
556 | |||
557 | AgentCircuitData aCircuit = new AgentCircuitData(); | ||
558 | try | ||
559 | { | ||
560 | aCircuit.UnpackAgentCircuitData(args); | ||
561 | } | ||
562 | catch (Exception ex) | ||
563 | { | ||
564 | m_log.InfoFormat("[REST COMMS]: exception on unpacking ChildCreate message {0}", ex.Message); | ||
565 | return; | ||
566 | } | ||
567 | |||
568 | // This is the meaning of POST agent | ||
569 | AdjustUserInformation(aCircuit); | ||
570 | bool result = m_localBackend.SendCreateChildAgent(regionhandle, aCircuit); | ||
571 | |||
572 | responsedata["int_response_code"] = 200; | ||
573 | responsedata["str_response_string"] = result.ToString(); | ||
574 | } | ||
575 | |||
441 | protected virtual void DoPut(Hashtable request, Hashtable responsedata) | 576 | protected virtual void DoPut(Hashtable request, Hashtable responsedata) |
442 | { | 577 | { |
443 | OSDMap args = GetOSDMap(request); | 578 | OSDMap args = GetOSDMap(request); |
@@ -553,6 +688,10 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
553 | } | 688 | } |
554 | } | 689 | } |
555 | 690 | ||
691 | #endregion Misc | ||
692 | |||
693 | #region Hyperlinks | ||
694 | |||
556 | protected virtual ulong GetRegionHandle(ulong handle) | 695 | protected virtual ulong GetRegionHandle(ulong handle) |
557 | { | 696 | { |
558 | if (m_aScene.SceneGridService is HGSceneCommunicationService) | 697 | if (m_aScene.SceneGridService is HGSceneCommunicationService) |
@@ -568,7 +707,27 @@ namespace OpenSim.Region.Environment.Modules.Communications.REST | |||
568 | 707 | ||
569 | return false; | 708 | return false; |
570 | } | 709 | } |
571 | #endregion /* Misc */ | 710 | |
711 | protected virtual void SendUserInformation(RegionInfo regInfo, AgentCircuitData aCircuit) | ||
712 | { | ||
713 | try | ||
714 | { | ||
715 | if (IsHyperlink(regInfo.RegionHandle)) | ||
716 | { | ||
717 | ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.SendUserInformation(regInfo, aCircuit); | ||
718 | } | ||
719 | } | ||
720 | catch // Bad cast | ||
721 | { } | ||
722 | |||
723 | } | ||
724 | |||
725 | protected virtual void AdjustUserInformation(AgentCircuitData aCircuit) | ||
726 | { | ||
727 | if (m_aScene.SceneGridService is HGSceneCommunicationService) | ||
728 | ((HGSceneCommunicationService)(m_aScene.SceneGridService)).m_hg.AdjustUserInformation(aCircuit); | ||
729 | } | ||
730 | #endregion /* Hyperlinks */ | ||
572 | 731 | ||
573 | } | 732 | } |
574 | } | 733 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs index 5e1621b..c53605f 100644 --- a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs | |||
@@ -192,7 +192,8 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid | |||
192 | agentCircuit.CapsPath = Util.GetRandomCapsPath(); | 192 | agentCircuit.CapsPath = Util.GetRandomCapsPath(); |
193 | } | 193 | } |
194 | 194 | ||
195 | if (!m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agentCircuit)) | 195 | //if (!m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agentCircuit)) |
196 | if (!m_interregionCommsOut.SendCreateChildAgent(reg.RegionHandle, agentCircuit)) | ||
196 | { | 197 | { |
197 | avatar.ControllingClient.SendTeleportFailed("Destination is not accepting teleports."); | 198 | avatar.ControllingClient.SendTeleportFailed("Destination is not accepting teleports."); |
198 | return; | 199 | return; |
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 8b3ac4f..9282f14 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -296,7 +296,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
296 | string capsPath = "http://" + reg.ExternalHostName + ":" + reg.HttpPort | 296 | string capsPath = "http://" + reg.ExternalHostName + ":" + reg.HttpPort |
297 | + "/CAPS/" + a.CapsPath + "0000/"; | 297 | + "/CAPS/" + a.CapsPath + "0000/"; |
298 | 298 | ||
299 | bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, a); | 299 | //bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, a); |
300 | bool regionAccepted = m_interregionCommsOut.SendCreateChildAgent(reg.RegionHandle, a); | ||
300 | 301 | ||
301 | if (regionAccepted && newAgent) | 302 | if (regionAccepted && newAgent) |
302 | { | 303 | { |
@@ -787,7 +788,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
787 | } | 788 | } |
788 | 789 | ||
789 | // Let's create an agent there if one doesn't exist yet. | 790 | // Let's create an agent there if one doesn't exist yet. |
790 | if (!m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agentCircuit)) | 791 | //if (!m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agentCircuit)) |
792 | if (!m_interregionCommsOut.SendCreateChildAgent(reg.RegionHandle, agentCircuit)) | ||
791 | { | 793 | { |
792 | avatar.ControllingClient.SendTeleportFailed("Destination is not accepting teleports."); | 794 | avatar.ControllingClient.SendTeleportFailed("Destination is not accepting teleports."); |
793 | return; | 795 | return; |