aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs24
1 files changed, 15 insertions, 9 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
index aa1db1d..7b358c2 100644
--- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
+++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/PresenceModule.cs
@@ -114,10 +114,14 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
114 public void OnNewClient(IClientAPI client) 114 public void OnNewClient(IClientAPI client)
115 { 115 {
116 client.OnConnectionClosed += OnConnectionClosed; 116 client.OnConnectionClosed += OnConnectionClosed;
117 client.OnLogout += OnConnectionClosed;
117 } 118 }
118 119
119 public void OnConnectionClosed(IClientAPI client) 120 public void OnConnectionClosed(IClientAPI client)
120 { 121 {
122 if (!(client.Scene is Scene))
123 return;
124
121 if (!(m_RootAgents.ContainsKey(client.AgentId))) 125 if (!(m_RootAgents.ContainsKey(client.AgentId)))
122 return; 126 return;
123 127
@@ -128,7 +132,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
128 132
129 m_RootAgents.Remove(client.AgentId); 133 m_RootAgents.Remove(client.AgentId);
130 134
131 NotifyMessageServerOfAgentLeaving(client.AgentId, scene.RegionInfo.RegionName); 135 NotifyMessageServerOfAgentLeaving(client.AgentId, scene.RegionInfo.RegionID, scene.RegionInfo.RegionHandle);
132 } 136 }
133 137
134 public void OnSetRootAgentScene(UUID agentID, Scene scene) 138 public void OnSetRootAgentScene(UUID agentID, Scene scene)
@@ -139,13 +143,13 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
139 return; 143 return;
140 } 144 }
141 m_RootAgents[agentID] = scene; 145 m_RootAgents[agentID] = scene;
142 NotifyMessageServerOfAgentLocation(agentID, scene.RegionInfo.RegionName); 146 NotifyMessageServerOfAgentLocation(agentID, scene.RegionInfo.RegionID, scene.RegionInfo.RegionHandle);
143 } 147 }
144 148
145 private void NotifyMessageServerOfStartup(Scene scene) 149 private void NotifyMessageServerOfStartup(Scene scene)
146 { 150 {
147 Hashtable xmlrpcdata = new Hashtable(); 151 Hashtable xmlrpcdata = new Hashtable();
148 xmlrpcdata["RegionName"] = scene.RegionInfo.RegionName; 152 xmlrpcdata["RegionUUID"] = scene.RegionInfo.RegionID.ToString();
149 ArrayList SendParams = new ArrayList(); 153 ArrayList SendParams = new ArrayList();
150 SendParams.Add(xmlrpcdata); 154 SendParams.Add(xmlrpcdata);
151 try 155 try
@@ -154,7 +158,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
154 XmlRpcResponse resp = UpRequest.Send(scene.CommsManager.NetworkServersInfo.MessagingURL, 5000); 158 XmlRpcResponse resp = UpRequest.Send(scene.CommsManager.NetworkServersInfo.MessagingURL, 5000);
155 159
156 Hashtable responseData = (Hashtable)resp.Value; 160 Hashtable responseData = (Hashtable)resp.Value;
157 if ((!responseData.ContainsKey("success")) || (string)responseData["success"] != "TRUE") 161 if (responseData == null || (!responseData.ContainsKey("success")) || (string)responseData["success"] != "TRUE")
158 { 162 {
159 m_log.ErrorFormat("[PRESENCE] Failed to notify message server of region startup for region {0}", scene.RegionInfo.RegionName); 163 m_log.ErrorFormat("[PRESENCE] Failed to notify message server of region startup for region {0}", scene.RegionInfo.RegionName);
160 } 164 }
@@ -168,7 +172,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
168 private void NotifyMessageServerOfShutdown(Scene scene) 172 private void NotifyMessageServerOfShutdown(Scene scene)
169 { 173 {
170 Hashtable xmlrpcdata = new Hashtable(); 174 Hashtable xmlrpcdata = new Hashtable();
171 xmlrpcdata["RegionName"] = scene.RegionInfo.RegionName; 175 xmlrpcdata["RegionUUID"] = scene.RegionInfo.RegionID.ToString();
172 ArrayList SendParams = new ArrayList(); 176 ArrayList SendParams = new ArrayList();
173 SendParams.Add(xmlrpcdata); 177 SendParams.Add(xmlrpcdata);
174 try 178 try
@@ -188,11 +192,12 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
188 } 192 }
189 } 193 }
190 194
191 private void NotifyMessageServerOfAgentLocation(UUID agentID, string region) 195 private void NotifyMessageServerOfAgentLocation(UUID agentID, UUID region, ulong regionHandle)
192 { 196 {
193 Hashtable xmlrpcdata = new Hashtable(); 197 Hashtable xmlrpcdata = new Hashtable();
194 xmlrpcdata["AgentID"] = agentID.ToString(); 198 xmlrpcdata["AgentID"] = agentID.ToString();
195 xmlrpcdata["RegionName"] = region; 199 xmlrpcdata["RegionUUID"] = region.ToString();
200 xmlrpcdata["RegionHandle"] = regionHandle.ToString();
196 ArrayList SendParams = new ArrayList(); 201 ArrayList SendParams = new ArrayList();
197 SendParams.Add(xmlrpcdata); 202 SendParams.Add(xmlrpcdata);
198 try 203 try
@@ -212,11 +217,12 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage
212 } 217 }
213 } 218 }
214 219
215 private void NotifyMessageServerOfAgentLeaving(UUID agentID, string region) 220 private void NotifyMessageServerOfAgentLeaving(UUID agentID, UUID region, ulong regionHandle)
216 { 221 {
217 Hashtable xmlrpcdata = new Hashtable(); 222 Hashtable xmlrpcdata = new Hashtable();
218 xmlrpcdata["AgentID"] = agentID.ToString(); 223 xmlrpcdata["AgentID"] = agentID.ToString();
219 xmlrpcdata["RegionName"] = region; 224 xmlrpcdata["RegionUUID"] = region.ToString();
225 xmlrpcdata["RegionHandle"] = regionHandle.ToString();
220 ArrayList SendParams = new ArrayList(); 226 ArrayList SendParams = new ArrayList();
221 SendParams.Add(xmlrpcdata); 227 SendParams.Add(xmlrpcdata);
222 try 228 try