Проблема: использование неблокирующих сокетов в handler'е
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 24 19:42:29 MSD 2008
Hello!
On Thu, Jul 24, 2008 at 05:46:17PM -0700, Sergey Samokhin wrote:
> Здравствуйте.
>
> Монашёв Михаил wrote:
>> Здравствуйте, Сергей.
>>
>> поищите в этом листе ngx_mod_repeater . он делает похожие вещи
>>
>
> Спасибо, нашел. Но он не использует неблокирующие сокеты для чтения
> ответа от бакенда.
>
> Еще работа с сокетами есть в ngx_mail_proxy_module.c, но чтение вроде
> блокирующее (ngx_mail_proxy_block_read())
Нет, в почтовом модуле чтение естественно без блокировок, а
упомянутое название функции говорит о том что с данными от клиента
делать ничего не надо когда она установлена обработчиком.
Смотрите в код внимательнее.
Основная идея - поставить правильный c->read->handler (и
c->write->handler), после чего в соответствующем обработчике
проделывать необходимые манипуляции.
Примеры можно найти в почтовом модуле, в собственно обработке http
запросов, в ngx_http_upstream.c.
Maxim Dounin
More information about the nginx-ru
mailing list