~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal
зачем? ты и так знаешь что в этом блоке по типу сообщения
orignal
тогда если делаешь флаг то 0-sender, 1 - received
orignal
*receiver
weko
ну ладно да. можно при чём сделать в SessionCreated блок длинной 0
orignal
более обобщенное понятие
orignal
блок всегда длиной минимум 3
weko
size :: 2 bytes, big endian, size of data to follow, 0 - TBD
orignal
этот блок всегда 32 байта данных
orignal
или 33 если с флагами
weko
ну надо поэкономить на спичках то
weko
как иначе то )
orignal
думаю не стоит
orignal
в SessionRequest все равно ничего больше не идет
orignal
и в любое mtu влезет
weko
а если влезает в mtu, то можно не экономить?
orignal
да
weko
ок
orignal
потому что без разницы все равно уйдет полный пакет
weko
отправлять кстати вроде не надо тогда
weko
пусть боб всегда шлёт просто
weko
а мы проверяем сами
orignal
неее
orignal
это обуждалоь
orignal
если боб будет отправлять он будет ключи генерить
orignal
потому его можно зафлудить
orignal
а если идет от алисы он прочел блок увидел что не к нему и сразу прекратил сессию
weko
ну тоже тут экономия на спичках
weko
меньше на один пакет
orignal
нет
orignal
не в пакете дело
orignal
а в генерации ключей
weko
нет разницы кто будет проверять с точки зрения фикса проблемы
orignal
даже x25519 довольно затратно
orignal
смотри если атакуюий наплодил левых роутеров с адресом боба
orignal
то его завалят запросами на каждый из которых он будет генерить пару ключей
weko
да. мы можем подключиться, но во время сессии получаем ident боба, а не куда пытались подключиться
weko
и закрываем
weko
orignal: это в любом случае будет
weko
мы никак не можем проверить не тыкая транспорт
orignal
мы ткнули
orignal
боб получил SessionRequest
orignal
увидел тот блок если не тот то он ключ не генерит
weko
а понял
weko
да важно
orignal
потому и решили что выгоднее если отправил алиса
orignal
а тем времеем я закоммитил ту проверку в NTCP2
weko
при fix 2 нам нужно сделать запрос, чтобы проверить.
weko
и при fix 3 тоже запрос нужно сделать.
weko
но это норм, флудить RI не проверив вообще идея не годная.
weko
orignal: которая фиксит зависание?
weko
я пока не буду качать чтобы найти почему не пересоздаётся
orignal
которая проверяет длину данных
weko
orignal: при обратной совместимости, выходит так, что атакующий может создавать роутеры с новой версией, и тогда что в RI наёб мы узнаем только когда придёт SessionCreated
weko
тоесть Bob создаст ключ
orignal
а не пох тогда если у алисы старая версия?
orignal
тут ничего не поделаешь
weko
короче старые роутеры так можно будет дудосить (хотя на самом деле нет, так какие RI не будут флудится а потом и удалятся)
weko
у боба ну не важно
weko
да ничего не сделать
orignal
просто в какой то момент боб может отказаться принимать запросы без этого блока и все
orignal
идите ... в NTCP2 ))
weko
ахахах
weko
ну да
weko
когда отключит совместимость
orignal
через пару версий
weko
1 byte flags, 32 bytes ident.
weko
Flag 0: 0 if reciever's ident; 1 if sender's ident
weko
Alice (should(1), can(2)) send in payload RouterIdent block with 0 in Flag 0 and Bob's ident.
weko
Bob (should(3), can(4)) check is it his ident, and if not equals - terminate session with "Wrong ident" reason, if equals - send RouterInfo block with 1 in Flag 0 and Bob's ident.
weko
(1) - Bob do not support old routers.
weko
(2) - Bob support old routers, but can be victim of DDoS from old routers, that trying to make connection with fake RIs.
weko
(3) - Alice do not support old routers.
weko
(4) - Alice support old routers and using hybrid scheme: Fix 1 for old routers and Fix 2 for new routers. If RI says new version, but while connection
weko
думаю понятно
orignal
нормально да
weko
всё скинул деду
orignal
и что он сказал?
weko
он пока ничего
weko
но дрозд
weko
<dr|z3d> nice work, weko
orignal
счас загляну туда
weko
if (ecode != boost::asio::error::operation_aborted)
weko
{
weko
LogPrint (eLogInfo, "NTCP2: Not connected in ", timeout, " seconds");
weko
conn->Terminate ();
weko
}
weko
а почему уровень info ?
weko
LogPrint (eLogInfo, "NTCP2: Connect error ", ecode.message ());
weko
и тут
weko
ну ошибка бывает
weko
в основной сети много такого наверняка
orignal
потому что это не ошибка
orignal
потому что ситуация когда ты стучишься к роутеру не в сети довольно часто
weko
ну просто я к тому что возможно должно быть debug
weko
ну ладно
weko
так, во первых мой фикс дропа превышения буфера не работает - NTCP2: Outgoing messages queue size to UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= exceeds 1000
weko
странно
weko
if (m_SendQueue.size() == NTCP2_MAX_OUTGOING_QUEUE_SIZE) break;
weko
for (auto it: msgs) {
weko
m_SendQueue.push_back (std::move (it));
weko
if (m_SendQueue.size() == NTCP2_MAX_OUTGOING_QUEUE_SIZE) break;
weko
}
weko
быть такого не может что оно превышает...
weko
может из другого потока пришло
weko
уж не знаю ...
weko
интересно почему оно вообще превысило, но это вопрос другой
weko
кстати, роутер помечается как Unreachable меньше милисекунды
weko
совсем короткое время
weko
orignal: кажется понятно
weko
[18/Jan/2024:01:18:10 +0000]:639@330/info - NTCP2: Connecting to 127.0.0.3:23234 (UBxd)
weko
[18/Jan/2024:01:18:10 +0000]:639@330/info - Transports: No compatible addresses available
weko
[18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Connected to 127.0.0.3:23234 (UBxd)
weko
[18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Connected from 127.0.0.3:59147
weko
[18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: SessionConfirmed from 127.0.0.3:59147 (UBxd)
weko
[18/Jan/2024:01:18:10 +0000]:639@685/warn - NTCP2: Session with UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= already exists. Replaced
weko
[18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Session with 127.0.0.3:23234 (UBxd) terminated
weko
[18/Jan/2024:01:18:11 +0000]:083@685/warn - NTCP2: Receive length read error: End of file
weko
[18/Jan/2024:01:18:11 +0000]:083@685/info - NTCP2: Session with 127.0.0.3:59147 (UBxd) terminated
weko
видимо потому что одновременно
weko
интересно всё это, потому что тут похоже другая ситуация... хз
weko
явно потому что одновременно пытаются устнановиться сессии
weko
надо проверку сделать
weko
вопрос только как сделать?)
weko
возможно и не надо проверку. надо убрать что не даёт двум сессия сосуществовать. просто добавить что одна закроет как станет ясно что это один и тот же роутер
weko
закроется*
weko
короче вот почему не переподключается.
weko
на этот раз ошибка из-за которой сдохла сессия такая:
weko
NTCP2: Receive read error: End of file
weko
делаю попытку номер 2
weko
странно, теперь другая ошибка всплывает
weko
NTCP2: Receive read error: End of file
weko
и всё
weko
дичь полная конечно ...
orignal
end of file это закрытие сокета
orignal
то есть ты хочешь сказать что два роутера соединяются одновременно ?
weko
да
weko
ну сам смотри логи
weko
выглядит именно так
orignal
возможно
orignal
это ситуацию надо обдумать
weko
вопрос конечно почему потом Garlic не работает...
orignal
более или менее понтяна проболма
weko
Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
вот после начинается
weko
при чём после этого реконекты уже не идут кажется
weko
возможно где-то гонка
orignal
да это не главно
orignal
вот что надо сделать
orignal
когда происходят попытки разных транспортов надо проверять между ними не появилось ли соединение
weko
ну и ещё надо пофиксить что Unreachable ставиться
orignal
так если сессия появилась надо прекращать попытки
orignal
я починю это завтра
weko
а по поводу того, что ты сегодня я щас попробую глянуть
weko
если воспроизведётся
orignal
ну я понимаю где это чинить надо
weko
мне не понятно почему мой код не отрабатывает как надо. но это потом уже.
orignal
вместо == напиши >=
weko
хорошо но проверю позже уже
weko
отлично
weko
воспроизводится
weko
[18/Jan/2024:02:08:31 +0000]:778@312/warn - NTCP2: Received AEAD verification failed
weko
но интересно что пофиг какая причина, баг что не пересоздаётся всё равно всплывает
orignal
надо смотреть кто формирует и кто принимает
orignal
так это понятно почему
orignal
теперь
weko
ну да, я сейчас поставлю фикс и проверю
weko
просто надо понять исправлено или нет
orignal
думаю что нет
orignal
я это добавил в приципе потому что было неправильно
weko
я проверю чтобы не гадать
weko
мне кажется или HandleReceivedLength что-то не то
weko
после исправления
orignal
а что там не то?
weko
а нет
weko
вроде ок
orignal
там должно быть ровно 2 байте не больше и не меньше
weko
это я тупанул
weko
<orignal> я это добавил в приципе потому что было неправильно
weko
не уверен. tcp сокет же должен всегда возвращать ровно сколько запросили
orignal
а если не может?
orignal
но в первую очередь там в одном месте код ощибки не проверялся
weko
это да тоже увидел
weko
опять началось вот это [18/Jan/2024:02:31:31 +0000]:455@115/warn - NetDb: Destination XhEIGm6AzAjGdMc-H9dc9qtnxGdEzlMOHycI-FZagbQ= is requested already
weko
вроде не спамит сильно
weko
но вот постоянно пишет
weko
пачками
weko
запишу в todo, возможно ещё не исправлено
orignal
должно писать
orignal
но должно потом останавливаться
orignal
надо warn поменять на info
weko
ну я пока на смотрел этот баг
weko
он рандомно всплывает
weko
NTCP2: Received AEAD verification failed
weko
не помогло
orignal
я тебе это сразу сказал
orignal
надо понять что отсывается
weko
думаю эта информация важна
weko
решил посмотреть что по тредам проиходит
weko
думаю это случается именно когда тред Destination перегружается
orignal
с отправкой там все непросто
weko
я думаю случается гонка и какой то ключ становится неверным
orignal
нет
orignal
там всегда 1 тред для NTCP2
weko
но смотри
weko
Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
это же не ntcp2
weko
значит проблема вероятно не в нём
weko
я могу попробовать лимитнуть и проверить.
orignal
да это вообще другая проблема
orignal
это с тагсетами связано
weko
но всплывает то оно одновременно
weko
хотя Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko
всплывает и когда просто закрывается стрим
weko
слишком сильное уж совпадение. перегрузка треда и зависание сразу же
weko
Комп не осилил одновременно сборку и тестнет. Завтра посмотрю что будет если исключить перегрузку треда
weko
дед совсем обленился
weko
ему уже лень добавлять пропосал
orignal
так а ты думал почему я не пишу ))
Anonymous
orignal, is RI payloaded inside of SessionRequest and SessionCreated?
Anonymous
I am editing some document and can't understand weko lol
weko
Anonymous: write RouterIdent not just RI
weko
it confusing
Anonymous
I agree it's fucking confusing lol
Anonymous
no idea why you even used that acronym (RI)
Anonymous
it's stupid
weko
becouse we often RI shorter then RouterInfo
weko
because*
Anonymous
often !+ always
Anonymous
I'll just specify RI=RouterInfo then
Anonymous
not everyone worked with i2pd code yet ;P
orignal
SessionConfirmed
Anonymous
weko, I replace SessionCreated with SessionConfirmed?
orignal
no SessionConfimed contain RI
orignal
but weko's proposal is about RouterIndent
weko
Anonymous: shut up plz
weko
just fix grammar as you wanted
Anonymous
lol
weko
<Anonymous> weko, I replace SessionCreated with SessionConfirmed?
weko
no, everythink is OK
Anonymous
you two agree on it then talk to me
Anonymous
not my problem you 2 cannot English and me understand
weko
Anonymous: orignal can but read your RI as RouterInfo
weko
and RouterInfo sending SessionConfirmed
weko
in
Anonymous
I'll grammar
Anonymous
(^ not good English, I was joking)
weko
Anonymous: just learn russian
weko
Russian is main i2p develepment language
weko
пусть реально русский учит
weko
диктат)
Anonymous
xd
Anonymous
one day maybe
weko
orignal: разберёмся с этим багом и я займусь тем, что оформлю скрипт тестнета
weko
чтобы удобно было управлять