Friday January 07 2022 10:44, from Alexey Vissarionov -> Nil A:
NA>> Или вот binkd, например. Не знаю, были ли уже в то время NA>> библиотеки libevent, libev, libuv (это уже новее), AV> Может, тебе еще и epoll() во всякие смешные системы портировать? :-)
Подобная библиотека как раз и создана решать задачу трансляции высокоуровневых асинхронных вызовов во что-то доступно в ОС, например, старый добрый select(2), с его ограничениями, разумеется. Как пример, Libuv вообще делает асинхронными дисковые операции, которые на epoll() не повесишь, и всё это эмулируется через пул-воркертредов.
NA>> но куча кода для кросс-платформенной работы с сокетами могла бы NA>> уйти. AV> Куда и зачем?
Вместо того, чтобы пытаться поддержать разные асинхронные сокеты на разных ОС, в виде развесистых #ifdef, можно сфокусировать своё внимание, непосредственно, на имплементации binkp протокола, причём, используя высокоуровневые scatter-gather IO.
NA>> Ещё там какие-то предупреждения по поводу тредов, надо NA>> пользоваться форками, AV> Треды совершенно точно фпень, а с момента появления epoll() - напомню, AV> это произошло в ядре 2.6 и glibc 2.3 где-то в 2004 году - и форкаться AV> нужды нет.
(a) на сегодняшний день epoll() не используется в коде binkp (б) epoll() реализован только в Linux, а хочется запускать там, где это делается через kqueue(), или через Windows IOCP, и т.д.
NA>> Можно, например, научить binkd читать fidoconfig, ведь там линки NA>> с паролями уже есть, только добавить секцию бинк-специфичных NA>> опций. AV> Каких?
Все настройки из binkd.conf не относящиеся к линкам, и не дублирующиеся в fidoconfig - их можно поместить как if "[module]"=="bink"
NA>> А так что ещё допиливать? Добавить по-взрослому рейт-лимиты, NA>> чтобы противостоять натиску DDoS? AV> Нахрена это userspace-приложению?
Тут скорее не приложение, а демон. При ограниченности ресурсов, можно сфокусироваться на обслуживании легитимных клиентов, и меньше ресурсов тратить на ботов. Да, юзерспейс приложение также может добавлять правила для ядерного фильтра, чтобы зловред трафик отшибать сразу там, но все решения принимаются в самом юзерспейс-демоне.
Best Regards, Nil --- GoldED+/LNX 1.1.5 * Origin: Linux 2.6.32-042stab145.3 (2:5015/46)