Re: Должны ли строки в ngx_str_t->data терминироваться нулевым байтом?
Maxim Dounin
mdounin на mdounin.ru
Вс Ноя 21 21:51:45 MSK 2010
Hello!
On Sun, Nov 21, 2010 at 04:05:56PM +0300, Валентин Бартенев wrote:
>
> > Присутствие 0 гарантируется только в некоторых специфических
> > случаях (e.g. при парсинге конфига переданные в обработчик
> > директивы аргументы всегда терминированы 0'м). В общем случае 0'я
> > нет.
>
> А случай значений исходящих http заголовков все-таки является специфическим
> или нет? Я смотрел код fastcgi и wsgi модулей, там в функциях *_process_header
> явно добавляется \0 в конец. Но, как оказалось, сторонние модули могут не
> следовать этому. Тут, либо их разработчикам надо сообщить, чтобы исправили,
> либо учитывать самостоятельно такую вероятность.
В общем случае заголовки не обязаны быть null-terminated. E.g.
add_header не терминирует добавляемый заголовок 0'м.
В случае заголовков в модуле upstream (proxy, fastcgi, ...) -
обязаны, и это используется во внутренних обработчиках в модуле.
Е.g. ngx_http_upstream_copy_content_type() без терминурющего 0'я
сломается.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru