ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx + default {deferred|bind} = корки



Igor Sysoev пишет:
man 7 socket в Linux
SO_REUSEADDR
Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For PF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address. When the listening socket is bound to INADDR_ANY with a specific port then it is not possible to bind to this port for any local address.

Вот как раз и имеем ту ситуацию, с которой начался тред.

Проблема в том, что bind() вопреки этому man'у как раз проходит без ошибок,
а ошибка выплывает только на этапе listen(). И непонятно, почему в этом
случае listening сокет постоянно сообщает о готовых соединениях, а
accept() постоянно вылетает с ошибкой.

Почему вопреки? nginx сначала делает все bind()'ы, а потом только listen()'ы
По ману - bind() не пройдёт, когда на этом порту уже есть listen()-сокет. Другой вопрос в нелогичности давать делать такие bind()'ы, если всё равно нельзя сделать потом listen() всем



 




Copyright © Lexa Software, 1996-2009.