User with slow data rate, slows down all other users on the server

I am developing an echo server that accepts multiple clients using the poll technique. The source code is here.

The problem I am facing is that when a client sends data to the server with a slow rate, it will slow down all other clients, waiting for the slow user to finish sending all the data first.

To overcome this problem I though about creating worker threads on the server and send each socket read there, but this would make things more complicated because I will have to use some kind of synchronisation so that not two threads will read from the same socket descriptor at the same time.

What method are you using to overcome this problem with the slow clients? Is there any design pattern for this?

Edit 1: Some code to describe the question better Edit 2: Added a check for POLLIN before recv

//simplified code
//poll loop
do {
    rc = poll(fds, nfds, -1);

    //when some socket descriptors are ready for read, read them all
    for (i = 0; i < nfds; i++)
        if (fds[i].revents & POLLIN) {
            //here if the fds[i] socket descriptor has a slow data rate, it will slow down all the other
            //clients waiting for the server to complete the recv with the slow client.
            int bytes_recv = recv(fds[i], buffer, 1024, 0);

} while (end_server == false);