Spot the bug – misbehaving server

We had a strange issue at work – we had a misbehaving server, who worked perfectly well with one client but had strange issues when several clients connected to it. The server would broadcast a message to all of its clients but only one client would receive that specific message, re-sending the message would fix the problem occasionally but it wasn’t a very consistent behavior.

I’ve managed to find the root of the issue and created a simplified version of the issue. can you spot the bug in the following code?
public class Server
{
    public void SendPingToClients(IEnumerable<client> clients)
    {
        foreach (var client in clients)
        {
            Task.Factory.StartNew(() => Ping(client));
        }
    }

    public void Ping(Client client)
    {
        Console.WriteLine("ping sent to client " + client.Id);
    }
}

Happy coding!

Labels: , ,