TCP-клиент может закончить отправку запроса и закрыть свою сторону записи, продолжая ждать ответ. Политика Squid для этого состояния важна при сравнении небольшого сырого TCP-теста с HTTP-клиентом.

Для Squid 7 документированное значение по умолчанию:

half_closed_clients off

С этой политикой Squid закрывает клиентское соединение, когда чтение сообщает, что входящих данных больше нет. При включённой опции он может удерживать соединение, пока чтение или запись не столкнётся с ошибкой. Документация рекомендует политику off по умолчанию для обычной работы прямого прокси.

Зафиксируйте, когда тестовый клиент сигнализирует конец ввода. Конвейер, доходящий до EOF на stdin, может вести себя иначе, чем клиент, который держит свою сторону отправки открытой, читая ответ, даже если оба отправили одни и те же байты HTTP-запроса.

Если тестовый клиент завершается полностью, он не может прочитать ответ, пришедший позже. Настройка половинного закрытия на стороне сервера не может изменить время жизни этого клиентского процесса.

Выбирайте поведение клиента при EOF и политику прокси вместе для задуманного теста. Политика половинного закрытия также предполагает HTTP-сообщение с корректной кадрировкой; она не поставляет отсутствующее тело запроса и не исправляет неполный блок заголовков.

Похожие статьи