~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest8889
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
anon3
b3t4f4c3
fidoid_
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
tensor
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
14
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
orignal: вот такое получилось: github.com/Vort/i2pd/commit/9bc3b11b96e66558b62bb8671cba28e9c0184563
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: дали люлей ворту..
orignal
а?
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
ха
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
да
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
weko
))
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 используется что ли?
orignal
да
whothefuckami
Ебать
orignal
ну там потому что еще gcc 4.8 собтирается
orignal
кое где
whothefuckami
weko: static bool IsInReservedRange....
whothefuckami
Погодите что
whothefuckami
Не бред несу забей
orignal
да пусть сделать аналогично
whothefuckami
gcc 4.8
whothefuckami
Нет ну литералли, вектор перечисленных портов
whothefuckami
А вдруг там диапозон по тыще портов
weko
есть ещё такие которые заняты только на tcp или udp, но я думаю можно на это забить
weko
там штук 200
weko
вру. 100
weko
меньше даже
weko
whothefuckami: вектор это же хэштаблица такая, да?
weko
типо множества в python?
whothefuckami
what
whothefuckami
нет
whothefuckami
вектор - это динамический массив
weko
ааа
weko
пон
whothefuckami
рассчитывать хеш, чтобы проверить порт?
whothefuckami
Ну ммм
weko
тут хэштаблица нужна для эффективности
weko
whothefuckami: ну а тут нужно пройтись по всему массиву
whothefuckami
Там разве не диапозоны портов?
weko
нет
weko
единичные порты в основном
whothefuckami
Нельзя if(port > 1000 && port < 2000) ???
weko
нет
whothefuckami
Ясно
weko
нельзя
whothefuckami
Тогда std::unordered_map
weko
ещё бы знать как к этому код пределать))
whothefuckami
У unordered_map короч такие аргументы шаблона
whothefuckami
<типКлюча, чёмыхотимхранить>
whothefuckami
Всё дальше сам
whothefuckami
Пагади а нах тебе мап
whothefuckami
Можно же unordered_set
whothefuckami
И просто проверка
weko
ну дак так и надо
whothefuckami
Есть ли порт в сете
weko
я же сразу сказал set
weko
))
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);
whothefuckami
Оно?
weko
вообще не то кажется
whothefuckami
Ой не то
weko
))
weko
221
weko
не 211
whothefuckami
И тип, если порт занят, то делать генерацию порта заново?
whothefuckami
А вдруг оно миллион раз подряд выкинет занятый порт
weko
а ты посчитай какой шанс что оно милион раз
whothefuckami
Ладно, это мы переживём
weko
можно ограничить до 30 попыток например
weko
ну типо там занято ну максимум процент
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
и да ещё лучше подпиши коммент
weko
/ from en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers , 03.02.2023
whothefuckami
Щас
weko
//
whothefuckami
weko:
whothefuckami
cd i2pd
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
найс
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
:thonk:
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)
weko
))
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
))
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
да я просто написал в свое время первое что пришло в голову