IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/02/03
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
orignal R4SAS давно пересобирался.
R4SAS после того коммита где ты lock добавлял
orignal я там еще один сделал
orignal ту проблему которую хохол находил
R4SAS да я в любом случае пересоберусь
R4SAS Vort: оно в любом случае так же будет
orignal там много чего еще починено
R4SAS orignal: 4 дня
orignal R4SAS а в других тредах нет зацикливания?
R4SAS не знаю
R4SAS я это явно вижу в бобе
Vort R4SAS: скорее всего, set::insert() откажется доабавлять "дублирующийся" элемент
orignal ну смотри он ждет блокироваку
orignal но значит мьютекс занят в другом треде
orignal Vort естественно
orignal потому в компараторе надо сравнивать IP и порт
Vort orignal: я про компаратор и говорю
Vort если IP и порт совпадут, то элемент не добавится
orignal посмотри пример в TunnelPool.h
orignal как он сделан
Vort а они теоретически совпасть могут
orignal разумеется
orignal это будет ошибкой
orignal а где там боб?
R4SAS смотри внимательнее
orignal непотяно
R4SAS 14 Thread 0x7f64497fa700 (LWP 20725) >>>>"BOB"<<<< __GI___pause_nocancel () at ../sysdeps/unix/sysv/linux/pause_nocancel.c:28
Vort orignal: что значит ошибкой? такого произойти не может? выше я написал предположительный сценарий. когда юзер быстро меняет ключи
orignal такого быть на должно
orignal быстро поменять ключи без закрытия сессии не выйдет
Vort "такого быть на должно" но если вдруг происходит, то это нормально сделать вид, что не происходило (убрав дубликат insert`ом)?
orignal так пиши в лог
orignal проверяй что insert возвращает
Vort "быстро поменять ключи без закрытия сессии не выйдет" процесс грохнуть. SSU2 разве мгновенно сообразит?
Vort "так пиши в лог" вот это, скорее всего, надо делать
orignal довольно быстро
R4SAS так вроде же была фигня такая
R4SAS и добавляли выкидывание старой сессии
R4SAS либо новую отклоняли, не помню
Vort просто если кто-то начнёт заниматься хернёй, то надо иметь возможность это вычислить. так что лог подходит. если я сейчас ни в какую проблему не вляпаюсь, конечно
R4SAS крч я перезапускаю роутер с бобом, если нет идей
R4SAS сейчас транк соберется
orignal тогда вставляй с портом 0xffff при дубликате
orignal или 1
Vort да просто error в лог и нормально
orignal пока идей нету
R4SAS либо забить и оставить list
orignal ощущение что память побилась
Vort [03/Feb/2023:01:43:37 +0200]@988/error - HTTPServer: Duplicate remote endpoint detected: 0.0.0.0:0
Vort интересно, там и раньше были проблемы с потокобезопасностью? или это я добавил?
Vort или это не потокобезопасность виновата...
Vort и такое бывает, не только нули: [03/Feb/2023:01:45:18 +0200]@988/error - HTTPServer: Duplicate remote endpoint detected: 135.181.84.216:21348
Vort "<~orignal> это будет ошибкой" я не предполагал, что так быстро на неё попаду :D
Vort баг, правда, вылазил когда я интенсивно тыкал F5
Vort когда тыкаю помедленнее, то пока что нормально
Vort наверно тут гонка между самими запросами
Vort хотя, может, и не в F5 дело
Vort точнее, не в частоте обновления
orignal однако
orignal потокобезопаснотью никто не озадачитлся там
Vort значит, эти сообщения в логе будут напоминанием )
Vort если креш не напомнит раньше
orignal да нормельно проде
Vort делать PR ?
orignal погоди
Vort окей
orignal вот это зачем?
orignal auto comp = [](typename Sessions::mapped_type a, typename Sessions::mapped_type b)
orignal { return a->GetRemoteEndpoint() < b->GetRemoteEndpoint(); };
orignal нельзя просто функцию объявить что ли?
orignal лямбда на пустом месте
orignal то есть просто выше сделать шаблннуую функцию и все
Vort сейчас попробую
relaybot 13baz: дали люлей ворту..
relaybot 13baz: ничего.. ничего.. :)
Vort "<~orignal> посмотри пример в TunnelPool.h" там не функция, там "функтор" github.com/PurpleI2P/i2pd/blob/02e7f6b0c369eb3d67ac9bef800267addacfd8cd/libi2pd/TunnelBase.h#L68-L78
Vort стоит ли такое городить?
orignal нет не стоит
Vort можно сделать проще, но не лямбду?
Vort пока что не разобрался, как
orignal std::set<int, decltype(cmp)*> s(cmp);
orignal com это фунция
orignal bool cmp(int a, int b)
orignal все
orignal в нашем шаблонная
Vort так её же надо будет параметр шаблона передать?
orignal параметр шаблона это Session
orignal cmp<Session> грубо говоря
orignal а впрочем можно оставить и лямду я думаю
orignal так что делай PR
Vort надо будет только когда-то всё-так потокобезопасность там наладить
orignal понимаешь веб морда она же изначально была только для отдадки
orignal чтобы смотреть что происходит
Vort я допёр как сделать через функцию, но выглядит это жутко. так что лямбда тут больше подходит. да и "засорять" пространство имён одноразовой функцией тоже как-то не очень
Vort std::set<typename Sessions::mapped_type, decltype(SessionCompare<typename Sessions::mapped_type>)*> sortedSessions(SessionCompare<typename Sessions::mapped_type>);
Vort брр
orignal да оставь лямду
Vort это я просто показал, как этот монстр выглядит
orignal тепреь ygg дареса первыми показывает
Gate close
Gate close
Vort разработчик Tor`а мне рассказала об одном интересном механизме: github.com/net4people/bbs/issues/9
Vort этот метод похож на то, о чём мы некоторое время назад рассуждали - как сделать из нескольких говняных каналов данных один более-менее нормальный
Vort и оказывается, в snowflake это уже реализовано несколько лет назад
Vort правда, до вот этого в snowflake, похоже, не дошли (хотя я не проверял): "An added bonus is the opportunity to use more than one proxy at once, to increase bandwidth or as a hedge against one of them disappearing."
weko Интересно
Gate Что?
weko Смотри выше
Gate оптимизация, понятно
weko Gate: нет
weko Это функционал
weko orignal: я думаю нужен какой нибудь параметр типо enable для туннелей, чтобы не комментировать/разкомментировать строки в конфиге, а просто менять этот параметр
orignal weko на самом деле никто и не комментирует. просто кладут в папку tunnels.d
orignal и убирают когда не надо
weko У меня там и лежит, просто иногда надо отключить часть туннелей из одного файла
Leopold i2pd осматривает только файлы туннелей, оканчивающиеся на .conf ?
orignal только на .conf
orignal weko там клади каждый тоннель в отдельный файл и все
weko Не очень удобно когда туннели логически связаны
Leopold А если комментировать только заголовок [] ?
orignal думаю не распарсит файл
orignal в приницпе да enabled сделать можно
weko Моё дело предложить
weko Пойду документацию делать чтоль
weko Я сейчас посмотрел, это кошмар
weko orignal: можешь чуть пояснить про i2cp.leaseSetEncType ? это тип подписи который используется?
orignal шифрования
orignal счас или 0 или 4 или 0,4
orignal 0 эль-гамаль
orignal 4 - ECIES
orignal 0,4 оба
weko а разве лиссеты не в плэйнтексте подписанном?
orignal в лизсете сначала идет адрес потом список публичных ключей
weko как тогда их расшифровывают те кто с флудфила получают
orignal шифрования
orignal нееее
orignal ключ шифрования не самого лизсет
orignal а ключ шифрования адреса чей лизсет
weko а, это то что в самом лиссете публикуется
weko понял
orignal когда с адресом соединятеся то шифрруется его ключом
orignal на самом деле счас все сложнее но прицип тот же
weko ну это я знаю да
weko это я для доков спрашиваю просто
weko чтобы актуализировать
orignal так вроде написано это
weko )))
weko ELGAMAL | 0 | **Default** for destinations
weko ECIES_X25519_AEAD | 4 | **Default** for routers
orignal да неверно
weko вот я меняю
orignal счас 0,4 для адресов
weko да я в коде посмотрел это
orignal для серверов вроде 4 но я точно не помню
weko вроде везде 0,4, либо я хз где смотреть
weko этот параметр задаёт и ключи в лиссете, и то шифрование что принимает destination ? или destination принимает любое шифрование что придёт
orignal то что поддерживается
orignal если например 4 а придет от чувака чисто с 0 то не соединится
orignal например на irc.ilita.i2p счас только 4
weko а ключи каждый раз создаются или берутся из .keys ?
orignal сохраняются в папке ddestinations
orignal чтобы при рестарте не палить факт рестарта
Gate можно ли указать случайный диапазон портов для внешнего прослушивания? Было бы удобно на firewall открыть контролируемый диапазон портов.
orignal нет не сделано это
orignal хотя я предлагал деду давно
weko пока что неможного не понятно для меня как это работает, но главное что понятно что в доки написать
weko orignal: так а зачем дед то для этого
weko публикуем просто в RI да и всё тут
Gate да? зачем нам дед?)
orignal затем чтобы публиковть диапазоны
weko я думаю Gate имел ввиду чтобы i2pd выбирал один порт из диапозона при старте
weko задонного
orignal а ну это можно добавить
orignal сейяас быбирается случяайно из всего
weko хотя поднимать сервер на все порты и публиковать тоже было бы неплохо, но это жа уже нужно к деду идти
weko cryptotype | crypto type for new keys. Experimental. Should be always 0
weko вот это может вообще убрать?
Gate weko: да именно, хочется случайного выбора но не для всех 65535 портов
orignal зачем?
orignal написано же что всегда 0
orignal там не все 65535
weko orignal: а зачем оно в доках если оно всегда должно быть 0
Gate orignal: а какой там диапазон?
weko бесполезная информация
Gate выше 1024?
orignal 9111-30777
orignal weko ну просто что такой параметр есть
orignal чтобы не стоили коспирологических теории что это закладка от майора )))
weko а, пон
weko окей
orignal раньше же использовали
orignal ты думаешь почему тип то 4?
orignal потому что 1,2,3 для NIST зарезервировано
weko я вижу в доках то))
weko я же их редактирую))
weko параметр host не задокументирован)
weko в type=server
orignal лол
orignal вроде есть там вышел
orignal *выше
weko не нету) выше только клиент
orignal ну значит забыли
weko ща напишу чонить))
weko host | IP address of server (on this address i2pd will send data from I2P)
orignal нормально
weko в client tunnel нету port )))))
weko keys вообще нигде нету
weko надо завести отдельную секцию с общими параметрами
weko для всех туннелей
weko позже сделаю
orignal так была раньше
orignal видать потерялась
weko нету, есть только i2cp
weko не i2cp общие это keys, signaturetype, port
weko и gzip ещё
weko orignal: можешь сделать описание для crypto.ratchet.inboundTags ?
orignal это сложно
orignal тонее некогда счас
weko crypto.tagsToSend | number of ElGamal/AES tags to send. 40 by default; too low value may cause problems with tunnel building
weko вот такое у эльгамаля
orignal знаю но там сложнее
orignal смержил
weko угу
orignal теперь порядок
weko лучше чем было)
weko там ещё делать и делать
weko но хотя бы не вводит в заблуждение
weko ахахахха, крутое название )))
orignal ну так )))
weko orignal: насчёт портов. я думаю стоит исключить хотя бы зелёные отсюда - en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers, а ещё почему бы не увеличить диапозон до 65535 (или хотябы 49151)?
weko ну именно верхную границу, я имею ввиду
orignal потому что эфемералы
orignal можнои и исключить
weko ну вот я пометил про 49151
orignal мы кстати 9050 там и исключаем
weko я вижу
weko и только
orignal не ну бывает эфемералы и 32K начинается
orignal сам видел
weko кроме тора много что есть
orignal ну вот надо сделать списов
orignal а не толко 9050
orignal я соглсен что это надо сделать
weko ну либо как вариант смотреть занят ли порт и менять его
weko ну при запуске конечно
orignal лучше список
weko почему?
orignal ну можно потом и провреку на занятость
orignal bind и смотреть ошику
weko ну да
weko это просто универсальный вариант
weko хотя и список надо
weko чтобы популярные не занимать
orignal ну вот я предлагаю начть со списка
weko мне сделать список?
orignal static const std::vector<uuin16_t> reservedPorts = { 9050, 9051 };
orignal и фунцицю и bool IsReservedPort (uint16_t port)
orignal в util.cpp по алаоглигии с адресом
weko я не умею в c++))
` ох
orignal bool IsInReservedRange (const boost::asio::ip::address& host);
orignal там такая уже есть
weko окей тогда
orignal надо аналогичную для портов
weko сделаю по аналогии
orignal ты не умеешь а мне некогда ))))
weko угу
weko по аналогии могу)
whothefuckami Лучше уж std:array
whothefuckami defined in header <array>
weko vector это же аналог set в питоне?
orignal ему же надо размер в параметре передавать
whothefuckami Точно....
orignal кроме того я не помню чтобы у него был инициализиуруюший констркутор
whothefuckami У него есть {}
whothefuckami Но там параметр да
whothefuckami Забей используй вектор
orignal в 11-ом вроде {} не работало
whothefuckami Не надо усераца
orignal может потом починили
` а я говорю, что ключ на 6 нужен, а вы нет-нет, отвертки хватит..
whothefuckami у вас 11 используется что ли?
whothefuckami Ебать
orignal ну там потому что еще gcc 4.8 собтирается
orignal кое где
whothefuckami weko: static bool IsInReservedRange....
whothefuckami Погодите что
whothefuckami Не бред несу забей
orignal да пусть сделать аналогично
whothefuckami Нет ну литералли, вектор перечисленных портов
whothefuckami А вдруг там диапозон по тыще портов
weko есть ещё такие которые заняты только на tcp или udp, но я думаю можно на это забить
weko там штук 200
weko вру. 100
weko меньше даже
weko whothefuckami: вектор это же хэштаблица такая, да?
weko типо множества в python?
whothefuckami вектор - это динамический массив
weko ааа
weko пон
whothefuckami рассчитывать хеш, чтобы проверить порт?
whothefuckami Ну ммм
weko тут хэштаблица нужна для эффективности
weko whothefuckami: ну а тут нужно пройтись по всему массиву
whothefuckami Там разве не диапозоны портов?
weko нет
weko единичные порты в основном
whothefuckami Нельзя if(port > 1000 && port < 2000) ???
weko нет
weko нельзя
whothefuckami Тогда std::unordered_map
weko ещё бы знать как к этому код пределать))
whothefuckami У unordered_map короч такие аргументы шаблона
whothefuckami <типКлюча, чёмыхотимхранить>
whothefuckami Всё дальше сам
whothefuckami Пагади а нах тебе мап
whothefuckami Можно же unordered_set
whothefuckami И просто проверка
weko ну дак так и надо
whothefuckami Есть ли порт в сете
weko я же сразу сказал set
whothefuckami Тупой я да
whothefuckami Лично я думаю, что bool IsReservedPort (uint16_t port) должна быть noexcept
whothefuckami Иначе жопа
weko сделай тогда ты))
weko 9119 9306 9312 9389 9418 9535 9536 9695 9800 9899 10000 10050 10051 10110 10212 10933 11001 11112 11235 11371 12222 12223 13075 13400 13720 13721 13724 13782 13783 13785 13786 15345 17224 17225 17500 18104 19788 19812 19813 19814 19999 20000 24465 24554 26000 27000 27001 27002 27003 27004 27005 27006 27007 27008 27009 28000
weko вот тебе список
whothefuckami Ебучий случай
whothefuckami И что с этим делать?
weko ну это порты которые занимать не надо
weko если не хочешь сделаю я)
whothefuckami Где занимать?
weko как получиться)
whothefuckami В каком месте тип?
weko когда случайный порт выбирается
weko щас скажу
whothefuckami Ааааа
whothefuckami Где оно это делает?
whothefuckami Имя файла и строка
weko строка 221 libi2pd/RouterContext.cpp
weko вот тут метод где выбор порта
whothefuckami Ты вот когда делаешь коммит
whothefuckami Ты тестируешь свой код?
weko конечно)
weko ну чаще всего
weko а к чему вопрос?)
whothefuckami Та просто
weko если что это списик занятых оффициально портов
weko если неоффициальные брать то там уйма их
whothefuckami if (addressCaps)
whothefuckami routerInfo.SetUnreachableAddressesTransportCaps (addressCaps);
weko вообще не то кажется
whothefuckami Ой не то
weko 221
weko не 211
whothefuckami И тип, если порт занят, то делать генерацию порта заново?
whothefuckami А вдруг оно миллион раз подряд выкинет занятый порт
weko а ты посчитай какой шанс что оно милион раз
whothefuckami Ладно, это мы переживём
weko можно ограничить до 30 попыток например
weko ну типо там занято ну максимум процент
weko может два
weko это как ключ подобрать к дестинейшену
weko так ты делаешь или делать мне?)
whothefuckami Делаю я
weko угу))
weko окей
Gate этот список портов будет захардкожен?
whothefuckami К счастью для всех нас да
Gate whothefuckami: почему к счатью?
weko Gate: в теории range для портов могу сделать даже я))
weko Gate: потому что сложнее было бы
Gate сложнее в конфиг вынести?
weko ну именно зарезервированные порты да
whothefuckami Нахера в конфиг
whothefuckami Если они зарезервированы
weko да и не надо
whothefuckami В мире
whothefuckami Очнитесь
weko whothefuckami: я знаю, я объясняю)
Gate ну они у меня например не заняты и я хотел бы и их юзать при выборе случайного порта
weko тебе ОЧЕНЬ нужны эти порты?
weko 9119 9306 9312 9389 9418 9535 9536 9695 9800 9899 10000 10050 10051 10110 10212 10933 11001 11112 11235 11371 12222 12223 13075 13400 13720 13721 13724 13782 13783 13785 13786 15345 17224 17225 17500 18104 19788 19812 19813 19814 19999 20000 24465 24554 26000 27000 27001 27002 27003 27004 27005 27006 27007 27008 27009 28000
weko я уверен ты переживёшь без них
weko а если нужен какой то из них всегда можно задать строго какой то порт
Gate ну в этом есть и элемент деанона того что работает i2pd демон, если есть подозрение можно понаблюдать за хостом и если у него все случайные порты работают за исключением этого списка можно
Gate предположить что это i2pd. а этот список возможно имеет признаки уникальности.
weko Gate: кстати можно попробовать сделать выбор из диапозона через bash, через параметр --port
Gate в принципе если в коде не сложно поправить будет, то ок, он там в заголовке где то будет?
Gate weko: спс гляну
weko Gate: насчёт этого надо подумать
weko вообще мало что использует рандомный порт
weko а тут ещё и так заданный диапозон
Gate ну тут нужно выбрать между трудностью в реализации выноса в конфиг и рисками, я то просто предположил, как вариант
Gate мысли вслух)
weko Gate: риски никак не увеличиваются
weko потому что range портов и так уникальный
weko тут нужно как то сделать баланс
weko по портам)
Gate можно в конфиге просто on, off сделать, типа обходить стороной зарезервированные порты или нет
Gate или тоже геммор
weko ну можно просто не нужно по моему мненую
weko потому что рисков новых не появляется
weko у тебя диапозон и так уникальный
weko он такой только у i2p
weko от того что мы исключим из него несколько десятков портов мало что поменяется
Gate кстати поставил версию из транка и у меня рейт со стабильных 20-23 вырос сразу до 44-45
whothefuckami Так это тому что ты рестарт сделал
whothefuckami А ты подожди пару дней...
weko whothefuckami: там новый алгоритм уже
Gate у меня на пк этот роутер стоит и каждый вечер вырубается
weko Gate: ну не факт что прирост полностью из-за обновления
weko но там опятьже исправления есть
Gate но циферки поприятней стали)
weko пока это не 10% можно не думать об этом
weko Total tunnel creation success rate: 38%
weko 38 за полтора для, норм
weko Tunnel creation success rate: 38%
weko скользящее тоже 38)
weko Vort: кстати... заметил ещё коечто - в I2P tunnels сортировка фиг знает какая, лучше бы её сделать по названию туннелей)
weko *подкинул идейку и свалил*
whothefuckami Протестируй плиз
weko я могу максимум работоспособность
weko как применить?
weko и да ещё лучше подпиши коммент
whothefuckami git apply -v path/to/patch_UwU.diff
weko угу
whothefuckami -v это короче в деталях описать как он применился, и что пошло не так, если пошло не так
Gate weko: --port принимает диапазон? типа того? --port=5000-10000
weko нет он принимает один
weko но нужно как ото башем выбрать порт из твоего желаемого
Gate а понял при запуске подсовывать скриптом?
weko блин, щас i2pd минуты полторы не мог определить сдохнвший туннель
weko Gate: да
Gate пон
orignal нет не принимает
Vort weko: std::set<std::shared_ptr<InboundTunnel>, TunnelCreationTimeCmp> m_InboundTunnels; // recent tunnel appears first
weko какое то странное свойство что i2pd определяет сдохнувшие туннели активно только когда начать качать
weko Vort: именно на I2P tunnels
weko ?page=i2p_tunnels
Vort weko: там for (auto & it : pool->GetInboundTunnels ()) {
weko да это не то
weko ?page=i2p_tunnels
weko в вебконсоли
weko путаница из-за одинаковых терминов
Vort понял
whothefuckami weko: оно не крашит роутер?
weko щас проверю
weko был чутка занят
Vort weko: похоже, там сортировка по порту :)) с исключением для прокси, которые идут следом
weko прикол...
Vort std::map<boost::asio::ip::tcp::endpoint, std::shared_ptr<I2PService> > m_ClientTunnels; // local endpoint -> tunnel
weko по имено я думаю самое удобное
weko имени*
weko whothefuckami: запускается
whothefuckami noexcept кстати в каком c++ добавили?
whothefuckami А то вдруг gcc4.6 не съест
weko хз))
weko поползло вниз)))
weko Tunnel creation success rate: 32%
weko Total tunnel creation success rate: 38%
Vort whothefuckami: иногда можно фичу в уже существующих файлах поискать
Vort вот я нашёл noexcept в Log.h
whothefuckami А я вот загуглил "c++ noexcept"
whothefuckami since c++11
orignal R4SAS я вот думаю а не выпилить ли на MatchedDestination?
orignal Tunnel creation success rate: 75%
Gate2 сделал клиентский тоннель, входные-выходные тоннели в нем построились, а вот стрим никак не хочет появлятся
weko orignal: колдовство)))
Vort стрим зависит от клиентской программы
Vort если она не делает подключения, то и стрима не будет
Gate ну телнетом проверяю до pop
orignal счас закоммичу это кодовство ))
weko orignal: что ты там сделал))?
Gate есть второй точно такой же тоннель только на других портах и там есть стрим
weko Интересно!)
orignal выбор первого хопа
weko Ааа))
orignal как обещал
weko Я правда уже не помню какая там была проблема
Vort "точно такой же тоннель" с другими ключами хоть?
Gate Vort: ну конечно, отдельным файлом конфига и отдельным файлом ключей
Vort ну самое простое - открыт ли порт у i2pd, создаёт ли клиентская программа подключение?
Gate Vort: бля)))
Gate жабыл(
Gate порт как всегда nftables)
Vort выбор первого хопа же не только рейт, но и скорость может поднять
orignal проблема что первый хоп выбирал наугад
Vort неужели наконец будут нормальные скорости не только у атакующих
orignal Vort мне еще дед подсказал как проблему с CreateAckBlock решать
Vort ну это хорошо. правда, мне больше интересно, как её тестировать
weko orignal: а теперь будут транспортв совместимы?
weko Транспорты*
Vort я так до конца и не понял условия воспроизведения даже
orignal что эта функция жрет много
orignal он грубо говоря сказал ограичивать 512 сообщениями
orignal я просто слишком много подтверждаю впоть до 8K
Vort по тестированию идей таки нет?
orignal не спрашивал
Vort (я в рестарт, буду свежий коммит проверять)
Vort да я у чата, грубо говоря, спрашиваю. кто бы ни придумал - будет полезно
weko orignal: хм а зачем брать первых хоп с большим bandwith?
Vort weko: ну чтобы L не перегружать
weko Ну... По хорошому надо шансы сделать
weko Но окей
weko Слегка снизит анонимность
orignal weko потому что для клинтских тоннелей всегда так
orignal так было но кроме первого
orignal не снизит
weko orignal: а да? Не знал
weko А стоп
weko Всё, понял
weko Типо не брать L
Vort рейт у меня, вроде, не особо поменялся. вот скорость показалось, что выше. но это только ощущения
weko orignal: этот баг типо годами жил в роутере?)
weko Что L роутеры брались для клиентских
weko Ужас))
orignal ну это не совсем баг был ))
Vort учитывая, что около половины роутеров медленные...
weko Отрицательная фича)
Vort на 2х хопах 25% шанс получается на нормальный канал попасть
orignal недоделка просто
weko Vort: ну смотри роутеры L точно медленные)
Vort 1+1 хоп точнее
Vort weko: кстати, не факт. и это мы можем заметить. но пофиг. так порядочнее
weko Vort: ну да, если L так чего его грузить
Vort это изменение же и на java роутеры повлияет?
Vort может, перестанут глючить
weko Это врятли
Vort особенно, самые тормозные
weko Они не перестанут глючить никогда
weko Может в следующем веке
Vort с одной стороны, интересно, как сеть в целом отреагирует на это изменение
orignal L на то и L чтобы через него шло мало
Vort с другой стороны, изменение масштабное, а это всегда риски
orignal а черед него порой прет многол
Vort orignal: я подозреваю, что многие юзеры готовы дать больше канала, но не знают, как
Vort так что может быть, что они и быстрые и не против этого
Vort но, конечно, проблему надо решать там, где она возникает
orignal остальные то хопы всегда нормально выбирались
weko Vort: я уже предлагал увеличить лимит по умолчанию для x86
orignal так оно не от железа зависит
orignal может и x86 сидеть на сотовом
orignal а может и малина на оптике
Vort orignal: бля. похоже, я ещё в какой-то баг вляпался. ну или туплю
Vort [03/Feb/2023:23:21:25 +0200]@0/error - Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
Vort тред номер 0 ?
Vort оказывается, и раньше такое было. но оочень редко
Vort можно делать поиск в логе по ]@0/
orignal да этот не баг
orignal ты про тред 0?
orignal странно да
orignal но возможно
weko Vort: это известное уже
orignal оно же остаток от деления номера на 1000
weko Я писал об этой ошибке
Vort а смысл делить на 1000 ?
orignal чтобы не засирать лог длинными нормерам
Vort если использовать данные из лога действительно для поиска потоков, то такое обрезание сильно мешает
Vort если же просто для того, чтобы визуально различать различные треды в логе, то для этого больше какой-то хеш подойдёт
Vort в принципе, не очень критично, конечно
Vort но какое-то ощущение неправильности всё же есть
orignal оно только различать треды
orignal грубо говоря какие сообщения в одном треде а какие в другом
Vort короче, %1000 - это такая необычная хеш-функция :)
Vort а, так там есть уже какой-то std::hash. wtf
Vort в общем, может, стоит подхешировать получше это значение. хотя и у % 1000 есть свои преимущества. так, что, наверно, лучше оставить как есть
orignal зато быстро
orignal и таки да ты прав надо >> 8 лучше
orignal точнее 0x1FF
orignal & 0x1АА
Vort % это один из самых медленных операторов, да
Vort кстати, нормальный компилер % 512 нормально прожуёт
Vort ну то есть в & 0x1FF сам переделает
Vort зато читаемость выше
Vort кстати, в винде id тредов кратны то ли 4 то ли что-то около того
Vort а в линуксе?
Vort могут и на 1 отличаться ?
Vort разработка хеш функций - это, кстати, очень интересное занятие
Vort но толку для i2pd от этого, правда, не так уж много )
orignal да я просто написал в свое время первое что пришло в голову