Выставлять connection close

Maxim Dounin mdounin at mdounin.ru
Sat May 16 04:13:49 MSD 2009


Hello!

On Sat, May 16, 2009 at 03:21:44AM +0400, Kirill A. Korinskiy wrote:

> At Sat, 16 May 2009 00:07:19 +0400,
> Maxim Dounin <mdounin at mdounin.ru> wrote:
> > 
> > Да, гоню.
> > 
> > А теперь внимание вопрос:
> > 
> > Если клиенты не умеют даже правильно посчитать message length 
> > при получении 204 - неужели ты думешь, что можно полагаться 
> > на корректное соблюдение ими этих отличий?
> > 
> 
> проблема в том что я сам не понимаю как правильно сообщать клиенту
> длину тела и считать ее ему.

Есть пункт 4.4. Message Length, который всё описывает.

> Т.е. я понимаю что:
> 
>  - не писать content-length валидно для запросов без тела

Да.  А писать - невалидно, причём "MUST NOT".

>  - игнорировать тело валидно для запросов у которого тела не может
>    быть. Т.е. его может послать сервер, например слова No Content — но
>    их клиент должен игнорировать.

Угу.  Только если скажем в ответ на HEAD или у 204-го ответа 
вернули тело - это мусор в протоколе, и keepalive ушёл в лес.  
Единственное разумное действие клиента в данной ситуации - 
куда-нибудь выругаться и закрыть соединение.

> во всем этом бреде (я про http, ага) слишком много противоречий и как
> интерпретируют их авторы потенциального клиента — не известно.
> 
> Все что я предлагаю — это для перестраховки слать Content-Length: 0
> когда нет тела, что бы клиент который ждет тело длинной которой
> сказали или fin тоже остался доволен.

См. моё предыдущее письмо - это невалидно, и может иметь 
слабопредсказуемые последствия.

При текущем состоянии поддержки 204 в клиентах - использовать его 
можно только в строго контроллируемых условиях, при необходимости 
исправляя баги в клиентах.  Пытаться делать workaround'ы - себе 
дороже, и может выйти боком в самых неожиданных местах.

Maxim Dounin





More information about the nginx-ru mailing list