diff options
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs index 3f99562..83c3c34 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs | |||
@@ -280,9 +280,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge | |||
280 | { | 280 | { |
281 | m_log.DebugFormat("[Concierge]: {0} logs off from {1}", client.Name, client.Scene.RegionInfo.RegionName); | 281 | m_log.DebugFormat("[Concierge]: {0} logs off from {1}", client.Name, client.Scene.RegionInfo.RegionName); |
282 | RemoveFromAttendeeList(client.AgentId, client.Name, client.Scene); | 282 | RemoveFromAttendeeList(client.AgentId, client.Name, client.Scene); |
283 | AnnounceToAgentsRegion(client.Scene, String.Format(m_announceLeaving, client.Name, client.Scene.RegionInfo.RegionName, | 283 | lock(m_sceneAttendees) |
284 | m_sceneAttendees[client.Scene].Count)); | 284 | { |
285 | UpdateBroker(client.Scene); | 285 | AnnounceToAgentsRegion(client.Scene, String.Format(m_announceLeaving, client.Name, client.Scene.RegionInfo.RegionName, |
286 | m_sceneAttendees[client.Scene].Count)); | ||
287 | UpdateBroker(client.Scene); | ||
288 | m_attendeeNames.Remove(client.AgentId); | ||
289 | } | ||
286 | } | 290 | } |
287 | } | 291 | } |
288 | 292 | ||
@@ -348,7 +352,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge | |||
348 | } | 352 | } |
349 | 353 | ||
350 | attendees.Remove(agentID); | 354 | attendees.Remove(agentID); |
351 | m_attendeeNames.Remove(agentID); | ||
352 | } | 355 | } |
353 | } | 356 | } |
354 | 357 | ||
@@ -386,10 +389,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge | |||
386 | attendees.Count, scene.RegionInfo.RegionName, | 389 | attendees.Count, scene.RegionInfo.RegionName, |
387 | scene.RegionInfo.RegionID, | 390 | scene.RegionInfo.RegionID, |
388 | DateTime.UtcNow.ToString("s"))); | 391 | DateTime.UtcNow.ToString("s"))); |
389 | foreach (UUID uuid in attendees) | 392 | lock(m_sceneAttendees) |
390 | { | 393 | { |
391 | string name = m_attendeeNames[uuid]; | 394 | foreach (UUID uuid in attendees) |
392 | list.Append(String.Format(" <avatar name=\"{0}\" uuid=\"{1}\" />\n", name, uuid)); | 395 | { |
396 | if (m_attendeeNames.ContainsKey(uuid)) | ||
397 | { | ||
398 | string name = m_attendeeNames[uuid]; | ||
399 | list.Append(String.Format(" <avatar name=\"{0}\" uuid=\"{1}\" />\n", name, uuid)); | ||
400 | } | ||
401 | } | ||
393 | } | 402 | } |
394 | list.Append("</avatars>"); | 403 | list.Append("</avatars>"); |
395 | } | 404 | } |