On Thu, 21 Feb 2002, Alex Tutubalin wrote:
> > Таймауты там вроде есть, но только не на уровне фильтров.
> > Фильтры же ничего сами не читают. По крайней мере httpready - он
> > смотрит в буферах. О dataready даже и говорить не стоит.
> Ну да.
> Но если у тебя соединение уже ESTABLISHED, то оно сбросится может
> по двум причинам
> - есть keepalive, но keepalive-пакеты не ходят
> - какая-то из сторон его закрыла
>
> Но, блин, если мы сидим в фильтре без таймаутов, то с нашей стороны
> некому закрывать - приложение о сокетах не знает.
Там есть что-то такое:
---
static struct callout_handle expire_upcalls_ch;
#define EXPIRE_TIMEOUT (hz / 4) /* 4x / second */
#define UPCALL_EXPIRE 6 /* number of timeouts */
---
upcall'ы - это то, что вызывает фильтр.
В общем, я послал автору письмо, посмотрим, что ответит.
> > > Внешние эффекты будут ровно такие же ну и вдобавок запустится MaxClient
> > > апачей.
> >
> > Это да. Единственный выход - увеличить число сокетов и mbuf.
> До бесконечности ? Страшней DDOS-а зверя нет - если у тебя даже mbuf-ов
> в 100 раз больше чем у меня на отдельном клиенте, то я возьму 101-го клиента.
Ну так абслютной защиты нет.
Кстати, в 2.4.x Линуксе есть TCP_DEFER_ACCEPT с таймаутом.
Забавно смотриться на фоне того, что в 2.0.x accept() возвращался
после получения SYN.
Игорь Сысоев
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =