Показать сообщение отдельно
  #8  
Старый 11.11.2016, 19:20
Eugene Erokhin
Guest
 
Сообщений: n/a
По умолчанию теперь по binkp.net и defnode вопросы

Eugene Erokhin написал(а) к All в Nov 16 21:10:12 по местному времени:

А есть девелоперская эха по binkd? :)

Напоминаю, проблема была следующая: binkd не звонил на адреса без "node" в конфиге, даже при включенной defnode и ресолвящихся адресах.

Стянул binkd-master с гитхаба, покурил изрядно исходников, нашёл следующее в ftnnode.c в getnode_infonolock():
if (( !np ||
(np->listed != NLNODE && np->recheck < safetime()))
&& config->havedefnode)
условие не выполняется, getdefnodeinfo не вызывается, неописанная нода получает "-" в хостах.

После того, как закомментировал часть && np->recheck < safetime() - зазвонило. Вернул условие, пошёл смотреть кто такая safetime и где нужен recheck.

Сначала заподозриил safetime(), поскольку она под виндой и под другими реализована в исходнике по разному. Убрал виндовое описание в tools.c/h, сделал define safe_time() time(), как на все платформы. Ничего не поменялось. Нашёл вхождения recheck. Оно обновляется в add_node_nolock, и там к текущему времени прибавляется RESOLV_TTL в количестве 3600 секунд. Убрал RESOLVTTL в ноль - звонит.

Я не самый важный программист, логику работы во всех тонкостях не объял, поэтому адресую наблюдение разработчикам. Или этот RESOLV_TTL добавляется не туда, или я не знаю :) Собирал в VS++2010.

wbr! Eugene.

--- GoldED+/W32-MINGW 1.1.5-b20051207
Ответить с цитированием