Показать сообщение отдельно
  #6  
Старый 08.01.2022, 02:32
Nil A
Guest
 
Сообщений: n/a
По умолчанию Фидодевелопмент - давайте обсуждать тут, а не по .pr и .nextgen

Nil A написал(а) к Alexey Vissarionov в Jan 22 01:01:34 по местному времени:

Нello, Alexey!

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
Ответить с цитированием