diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Agent/Capabilities/CapabilitiesModule.cs | 31 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs | 2 |
2 files changed, 17 insertions, 16 deletions
diff --git a/OpenSim/Region/Environment/Modules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/Environment/Modules/Agent/Capabilities/CapabilitiesModule.cs index 838851c..070736e 100644 --- a/OpenSim/Region/Environment/Modules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/Environment/Modules/Agent/Capabilities/CapabilitiesModule.cs | |||
@@ -73,32 +73,33 @@ namespace OpenSim.Region.Environment.Modules.Agent.Capabilities | |||
73 | 73 | ||
74 | String capsObjectPath = GetCapsPath(agentId); | 74 | String capsObjectPath = GetCapsPath(agentId); |
75 | 75 | ||
76 | Caps cap = null; | 76 | if (m_capsHandlers.ContainsKey(agentId)) |
77 | if (m_capsHandlers.TryGetValue(agentId, out cap)) | ||
78 | { | 77 | { |
78 | Caps oldCaps = m_capsHandlers[agentId]; | ||
79 | |||
79 | m_log.DebugFormat( | 80 | m_log.DebugFormat( |
80 | "[CAPS]: Attempt at registering twice for the same agent {0}. {1}. Ignoring.", | 81 | "[CAPS]: Reregistering caps for agent {0}. Old caps path {1}, new caps path {2}", |
81 | agentId, capsObjectPath); | 82 | agentId, oldCaps.CapsObjectPath, capsObjectPath); |
82 | //return; | 83 | //return; |
83 | } | 84 | } |
84 | 85 | ||
85 | cap | 86 | Caps caps |
86 | = new Caps( | 87 | = new Caps( |
87 | m_scene.AssetCache, m_scene.CommsManager.HttpServer, m_scene.RegionInfo.ExternalHostName, | 88 | m_scene.AssetCache, m_scene.CommsManager.HttpServer, m_scene.RegionInfo.ExternalHostName, |
88 | m_scene.CommsManager.HttpServer.Port, | 89 | m_scene.CommsManager.HttpServer.Port, |
89 | capsObjectPath, agentId, m_scene.DumpAssetsToFile, m_scene.RegionInfo.RegionName); | 90 | capsObjectPath, agentId, m_scene.DumpAssetsToFile, m_scene.RegionInfo.RegionName); |
90 | 91 | ||
91 | cap.RegisterHandlers(); | 92 | caps.RegisterHandlers(); |
92 | 93 | ||
93 | m_scene.EventManager.TriggerOnRegisterCaps(agentId, cap); | 94 | m_scene.EventManager.TriggerOnRegisterCaps(agentId, caps); |
94 | 95 | ||
95 | cap.AddNewInventoryItem = m_scene.AddUploadedInventoryItem; | 96 | caps.AddNewInventoryItem = m_scene.AddUploadedInventoryItem; |
96 | cap.ItemUpdatedCall = m_scene.CapsUpdateInventoryItemAsset; | 97 | caps.ItemUpdatedCall = m_scene.CapsUpdateInventoryItemAsset; |
97 | cap.TaskScriptUpdatedCall = m_scene.CapsUpdateTaskInventoryScriptAsset; | 98 | caps.TaskScriptUpdatedCall = m_scene.CapsUpdateTaskInventoryScriptAsset; |
98 | cap.CAPSFetchInventoryDescendents = m_scene.HandleFetchInventoryDescendentsCAPS; | 99 | caps.CAPSFetchInventoryDescendents = m_scene.HandleFetchInventoryDescendentsCAPS; |
99 | cap.GetClient = m_scene.m_sceneGraph.GetControllingClient; | 100 | caps.GetClient = m_scene.m_sceneGraph.GetControllingClient; |
100 | 101 | ||
101 | m_capsHandlers[agentId] = cap; | 102 | m_capsHandlers[agentId] = caps; |
102 | } | 103 | } |
103 | 104 | ||
104 | public void RemoveCapsHandler(UUID agentId) | 105 | public void RemoveCapsHandler(UUID agentId) |
@@ -114,7 +115,6 @@ namespace OpenSim.Region.Environment.Modules.Agent.Capabilities | |||
114 | { | 115 | { |
115 | m_capsHandlers[agentId].DeregisterHandlers(); | 116 | m_capsHandlers[agentId].DeregisterHandlers(); |
116 | m_scene.EventManager.TriggerOnDeregisterCaps(agentId, m_capsHandlers[agentId]); | 117 | m_scene.EventManager.TriggerOnDeregisterCaps(agentId, m_capsHandlers[agentId]); |
117 | |||
118 | m_capsHandlers.Remove(agentId); | 118 | m_capsHandlers.Remove(agentId); |
119 | } | 119 | } |
120 | else | 120 | else |
@@ -142,7 +142,8 @@ namespace OpenSim.Region.Environment.Modules.Agent.Capabilities | |||
142 | public void NewUserConnection(AgentCircuitData agent) | 142 | public void NewUserConnection(AgentCircuitData agent) |
143 | { | 143 | { |
144 | capsPaths[agent.AgentID] = agent.CapsPath; | 144 | capsPaths[agent.AgentID] = agent.CapsPath; |
145 | childrenSeeds[agent.AgentID] = ((agent.ChildrenCapSeeds == null) ? new Dictionary<ulong, string>() : agent.ChildrenCapSeeds); | 145 | childrenSeeds[agent.AgentID] |
146 | = ((agent.ChildrenCapSeeds == null) ? new Dictionary<ulong, string>() : agent.ChildrenCapSeeds); | ||
146 | } | 147 | } |
147 | 148 | ||
148 | public string GetCapsPath(UUID agentId) | 149 | public string GetCapsPath(UUID agentId) |
diff --git a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs index 76d1cba..5e3e03f 100644 --- a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs | |||
@@ -149,11 +149,11 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid | |||
149 | 149 | ||
150 | if (destRegionUp) | 150 | if (destRegionUp) |
151 | { | 151 | { |
152 | |||
153 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from | 152 | // Fixing a bug where teleporting while sitting results in the avatar ending up removed from |
154 | // both regions | 153 | // both regions |
155 | if (avatar.ParentID != (uint)0) | 154 | if (avatar.ParentID != (uint)0) |
156 | avatar.StandUp(); | 155 | avatar.StandUp(); |
156 | |||
157 | if (!avatar.ValidateAttachments()) | 157 | if (!avatar.ValidateAttachments()) |
158 | { | 158 | { |
159 | avatar.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); | 159 | avatar.ControllingClient.SendTeleportFailed("Inconsistent attachment state"); |