Index: OpenMetaverse/AvatarManager.cs
===================================================================
--- OpenMetaverse/AvatarManager.cs	(revision 2430)
+++ OpenMetaverse/AvatarManager.cs	(working copy)
@@ -82,6 +82,7 @@
     /// </summary>
     public class AvatarManager
     {
+      public const int MAX_NAMES_PER_REQUEST = 100;
         /// <summary>
         /// Triggered when an avatar animation signal is received
         /// </summary>
@@ -263,24 +264,42 @@
         public void RequestAvatarNames(List<UUID> ids)
         {
             Logger.Log("AvatarManager requesting UUIDs count " + ids.Count, Helpers.LogLevel.Debug);
-            if (ids.Count > 0)
-            {
-                UUIDNameRequestPacket request = new UUIDNameRequestPacket();
-                request.UUIDNameBlock = new UUIDNameRequestPacket.UUIDNameBlockBlock[ids.Count];
 
-                for (int i = 0; i < ids.Count; i++)
-                {
-                    request.UUIDNameBlock[i] = new UUIDNameRequestPacket.UUIDNameBlockBlock();
-                    request.UUIDNameBlock[i].ID = ids[i];
-                }
+	    int m = MAX_NAMES_PER_REQUEST;
+	    int n = ids.Count/m;  // Number of maxed requests to make
+	    int i = 0;
 
-                Client.Network.SendPacket(request);
-            }
-            else
-            {
-                // not sending request, no ids!
-            }
+	    UUIDNameRequestPacket request;
 
+	    for (int j = 0; j < n; j++)
+	      {
+		request  = new UUIDNameRequestPacket();
+		request.UUIDNameBlock = new UUIDNameRequestPacket.UUIDNameBlockBlock[m];
+		
+		for(; i < (j+1)*m; i++)
+		  {
+		    request.UUIDNameBlock[i%m] = new UUIDNameRequestPacket.UUIDNameBlockBlock();
+		    request.UUIDNameBlock[i%m].ID = ids[i];
+		  }
+
+		Client.Network.SendPacket(request);
+	      }
+
+	    // Get any remaining names after left after the full requests
+
+	    if(ids.Count > n*m)
+	      {
+		request = new UUIDNameRequestPacket();
+		request.UUIDNameBlock = new UUIDNameRequestPacket.UUIDNameBlockBlock[ids.Count - n*m];
+	    
+		for(; i < ids.Count; i++)
+		  {
+		    request.UUIDNameBlock[i%m] = new UUIDNameRequestPacket.UUIDNameBlockBlock();
+		    request.UUIDNameBlock[i%m].ID = ids[i];
+		  }
+	    
+		Client.Network.SendPacket(request);
+	      }
         }
 
         /// <summary>

