diff --git a/Core/bottypes/AVstorageBot.cs b/Core/bottypes/AVstorageBot.cs index 0a92a92..ad2714d 100644 --- a/Core/bottypes/AVstorageBot.cs +++ b/Core/bottypes/AVstorageBot.cs @@ -248,29 +248,32 @@ namespace BetterSecondBot.bottypes { if ((av_name != "null") && (av_name != null) && (av_name.ToLowerInvariant() != "secondlife") && (av_uuid != UUID.Zero)) { - if (AvatarStorageLastUsed.ContainsKey(av_name) == false) - { - if (av_uuid != UUID.Zero) - { - if ((AvatarKey2Name.ContainsKey(av_uuid) == false) && (AvatarName2Key.ContainsKey(av_name) == false)) - { - AvatarName2Key.Add(av_name, av_uuid); - AvatarKey2Name.Add(av_uuid, av_name); - } - AvatarStorageLastUsed.Add(av_name, helpers.UnixTimeNow()); - if (PendingAvatarFinds_vianame.ContainsKey(av_name) == true) - { - PendingAvatarFinds_vianame.Remove(av_name); - } - if (PendingAvatarFinds_viauuid.ContainsKey(av_uuid) == true) - { - PendingAvatarFinds_viauuid.Remove(av_uuid); - } - } - } - else - { - AvatarStorageLastUsed[av_name] = helpers.UnixTimeNow(); + lock (AvatarStorageLastUsed) lock (AvatarKey2Name) lock (AvatarName2Key) lock (PendingAvatarFinds_viauuid) lock (PendingAvatarFinds_vianame) + { + if (AvatarStorageLastUsed.ContainsKey(av_name) == false) + { + if (av_uuid != UUID.Zero) + { + if ((AvatarKey2Name.ContainsKey(av_uuid) == false) && (AvatarName2Key.ContainsKey(av_name) == false)) + { + AvatarName2Key.Add(av_name, av_uuid); + AvatarKey2Name.Add(av_uuid, av_name); + } + AvatarStorageLastUsed.Add(av_name, helpers.UnixTimeNow()); + if (PendingAvatarFinds_vianame.ContainsKey(av_name) == true) + { + PendingAvatarFinds_vianame.Remove(av_name); + } + if (PendingAvatarFinds_viauuid.ContainsKey(av_uuid) == true) + { + PendingAvatarFinds_viauuid.Remove(av_uuid); + } + } + } + else + { + AvatarStorageLastUsed[av_name] = helpers.UnixTimeNow(); + } } if (helpers.notempty(myconfig.Security_MasterUsername) == true) { @@ -323,10 +326,13 @@ namespace BetterSecondBot.bottypes { return uuid; } - if (PendingAvatarFinds_vianame.ContainsKey(avatar_name) == false) - { - PendingAvatarFinds_vianame.Add(avatar_name, new KeyValuePair(helpers.UnixTimeNow(), 0)); - Client.Directory.StartPeopleSearch(avatar_name, 0); + lock (PendingAvatarFinds_vianame) + { + if (PendingAvatarFinds_vianame.ContainsKey(avatar_name) == false) + { + PendingAvatarFinds_vianame.Add(avatar_name, new KeyValuePair(helpers.UnixTimeNow(), 0)); + Client.Directory.StartPeopleSearch(avatar_name, 0); + } } return "lookup"; } @@ -353,14 +359,14 @@ namespace BetterSecondBot.bottypes if (avatar_name != "") { return avatar_name; - } - if (PendingAvatarFinds_viauuid.ContainsKey(avatar_uuid) == false) - { - lock (PendingAvatarFinds_viauuid) + } + lock (PendingAvatarFinds_viauuid) + { + if (PendingAvatarFinds_viauuid.ContainsKey(avatar_uuid) == false) { PendingAvatarFinds_viauuid.Add(avatar_uuid, new KeyValuePair(helpers.UnixTimeNow(), 0)); Client.Avatars.RequestAvatarName(avatar_uuid); - } + } } return "lookup"; }