Могут ли HTTP-серверы выдавать ответы при использовании запроса?
Рассмотрим http-сервер, который отражает тело запроса в ответ. В псевдокоде:
recv_req_headers()
send_resp_headers()
while have_req_body_data:
chunk = recv_req_body_chunk()
send_resp_body_chunk(chunk)
Аналогично, рассмотрим http-клиент, который отправляет весь запрос перед прочтением ответа:
send_req_headers()
send_req_body()
recv_resp_headers()
recv_resp_body()
Теперь, когда эти двое пытаются связаться, они блокируются, так как сервер перестанет потреблять запрос, как только его буферы отправки заполнятся. В этот момент обе стороны блокируются в попытке отправить данные другой стороне.
Какая сторона нарушает спецификации HTTP? Я прочитал RFC 7230 и RFC 7231, но не смог найти руководство ни в одном. Есть похожие вопросы, но нет удовлетворительных ответов.