implicit *LWS ?

Alexandre Snarskii snar на snar.spb.ru
Чт Окт 7 19:35:21 MSD 2010


On Wed, Oct 06, 2010 at 05:42:29PM +0400, Maxim Dounin wrote:
> > 
> > то есть nginx при проксировании обрезал весь контент поля начиная с CRLF.
> > 
> > То же самое происходит если пытаться передавать запрос на fastcgi backend,
> > в параметре HTTP_ACCEPT я вижу только text/plain, text/html, но не */*.
> > С другими хидерами происходит то же самое - как только встречается LWS - 
> > поле "обрезается", что для proxy_pass, что для fastcgi_pass. 
> > 
> > Вопрос: это бага или фича ? Если фича - обойти как-нибудь можно ? 
> 
> Это фича, LWS не поддерживаются, да и в HTTPbis они deprecated.

thanks. 
Хотя, jimho, не поддерживать deprecated и not recommended headers - это 
все-таки нарушение robustness principle (be liberal in what you accept). 

> Если очень нужно чтобы заработало вот прям здесь и сейчас - 
> где-то в районе nginx@ пробегал патч, но он ужасненький:

"Он хуже, он просто кю!". 

> http://nginx.org/pipermail/nginx/2010-September/022608.html

См. аттач. Это пока "концепт-кар", толком не оттестированный, но, jimho, 
более правильный. 
Куда пришлось залезть: 
а) изменить state-машину парсера заголовков для проверки LWS, 
с добавлением (новой) точки выхода - incomplete (в случаях когда
буфера не хватает для read-ahead)
б) изменить логику чтения запроса, разрешив чтение в случае когда
буферизовано менее двух байт. 

> А что за чудо генерит такие запросы?

Одно доморощенное чудо когда-то решило, что User-Agent стоит 
разбить на две строки, "ведь это ж rfc!!" :) А когда встал вопрос
о том, а можем ли мы делать content-switching по версии агента - 
эта грабель и вылезла.

-- 
In theory, there is no difference between theory and practice. 
But, in practice, there is. 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: src-http-ngx_http_parse.c.patch
Type: text/x-diff
Size: 3033 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101007/daec294a/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: src-http-ngx_http_request.c.patch
Type: text/x-diff
Size: 707 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101007/daec294a/attachment-0001.patch>


Подробная информация о списке рассылки nginx-ru