Так как я нигде не нашел ни одной записи такого поведения, с помощью gdb я обнаружил, что использую переменную без знака для хранения возвращаемого значения функции, которая при ошибке возвращает -1.
msg_buffer.length = recv(connected[i].socket, msg_buffer.data, msg_buffer.size, 0);
if (msg_buffer.length < 0) { // no message
Таким образом, оценка во второй строке никогда не будет истинной, а длина сообщения будет 0xffffffffffffffff. Но поскольку буфер содержал мое ранее отправленное сообщение, и не было получено никакого нового сообщения для его перезаписи, оказалось, что клиенты повторяли мой сервер.
Спасибо всем за помощь. И извините за ошибку.