read(2)
вернет не больше байтов, чем вы просили. Это может оставить больше данных в дескрипторе файла stdin для чтения (в случае, если клиент отправляет CONTENT_LENGTH 0, но вручает вам их / dev / urandom), но это нормально. Ваш процесс свободен, не читая все это.
read(2)
может вернуть меньше байтов, чем вы просите. Это может быть связано с тем, что еще не все данные поступили, а ядру надоело блокировать, или может быть, что содержимое меньше, чем CONTENT_LENGTH. Я рад, что вы ограничиваете длину чем-то «разумным», так как было бы довольно легко передать CONTENT_LENGTH, который является максимальным значением size_t, или этим значением минус один, или этим значением минус два, и играть в игры. с помощью функции malloc (), выделяющей 0, 1 или 2 байта, и позволяющей вам с радостью писать по всей вашей памяти.