IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2025/12/14
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
Daddy
GFW
HackerMan
Most
Nobody
Opax
Yotsu
ananas
anon
anontor
b3t4f4c3
cry4me
darkcyankitty
deserving-stegosaur
duanin2
duck
fidoid
g1
halloy1341
iacv1p
kaneki
karamba_i2p
leopold_
mareki2p
n1
nik0tr
not_bob_afk
ntty
osoznayka
poriori
profetikla
qend
rc13
soos
teeth
un
orignal все время так или просирается?
onon Ну если сломалось то сломалось насовсем
onon Вначале бывает несколько пакетов нормально пройдут а потом перестаёт
onon Вот если сразу не сломалось то потом нормально рабооает
onon На старте все проблемы
orignal ломается сразу или после определенного числа пакетов?
onon Ну я же говорю несколько могут пройти
onon Небольшое число
onon Сколько точно не скажу
orignal может ответы не доходят?
orignal интересно почему у меня такого не бывает
onon Ну смотри как я сделал
onon Я сделал что он сначала один пакет шлёт
onon И ждёт пока сессия установится и придёт подтверждение
onon И когда акк получил тогда начинает слать основной поток
orignal надо бы понять что происходит с сессией
onon Вот бывает что из потока некоторое количество нормально проходит и даже акки отправляет
onon А потом перестаёт
onon И пишет error - Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
onon А бывает что на клиенте не расшифровывает
onon Т.е. сессию установили, шлём поток получили несколько акков и все
orignal буду смотерть
onon И больше акки не расшифровываются
orignal но у меня ничего такого не видно
onon А ты поток туда шлёшь или что?
onon Может ты по одному пакету в секунду что отправляешь
orignal я же сказал кино мегабит в секунду
onon Я кстати переставил if (flags & UDP_SESSION_FLAG_RESET_PATH) ниже чем if (flags & UDP_SESSION_FLAG_ACK_REQUESTED)
onon Не помогло
onon Всё равно там ноль откуда-то берётся
orignal а у меня не берется
onon Есть какие-то идентификаторы сесии
orignal специально пробую
onon А ты клиент перезагрузи
onon И снова переподключись
orignal нет нету
orignal в смысле перегрузить?
onon Ну с которого кино транслируешь
onon Выключи и снова включи
onon Я так делаю
onon Может в этом проблема?
orignal то есть ffmpeg что ли?
onon нет, роутер
onon Но там же новый b32 будет
orignal а ну так я на одном и том же гоняю
orignal если смена сессии то это другая тема
onon Неужели он может путать сессии
orignal а точно там b32 новый?
onon Конечно
orignal может путать да
orignal weko что то такое говорил
onon Это всё твои оптимизации
orignal неее
orignal я же тебе говорю UDP тоннели изначально сделаны криво
onon Ну так чини
orignal ну а я что делаю?
onon Ноль ищешь
orignal так а без рестарта ничего не случается?
onon Пока ноль не найдём нормально работать не будет
onon Ну я же говорю, если сразу не сломалось то работает
orignal так ноль это следуствие рестта
onon Ты так думаешь?
orignal ну посмолько у меня он не вылазит
onon А ты как проверяешь
onon LogPrint (eLogCritical, "UDP Server: UDP_SESSION_ACKED: ", m_LastSession->m_LastReceivedPacketNum);
onon Я вот так
orignal а я просто в Acked встатил
onon Сразу после replyOptions.Put (UDP_SESSION_ACKED, m_LastSession->m_LastReceivedPacketNum);
orignal заодно статичтика такая
orignal на 1 repliable идет 10-23 raw
onon А до if (m_UnackedDatagrams.empty () && seqn < m_UnackedDatagrams.front ().first) return; или после?
orignal я печататаю что на сервер прилтает
onon Так это с сервера прилетает
onon А не на сервер
orignal нет я печатаю именно что прилетает на сервер с клиента
onon Ну а я печатаю, что сервер отправляет и что на клиенте получается
orignal там там только ответы там raw вообще не должно быть
onon Клиент оптравляет options.Put (UDP_SESSION_FLAGS, UDP_SESSION_FLAG_RESET_PATH | UDP_SESSION_FLAG_ACK_REQUESTED);
onon GetDatagramDestination ()->SendDatagram (session, nullptr, 0, 0, 0, &options);
onon В ответ получает ack seqn = 0
orignal без рестартов?
onon Давай подробно, клиент установил соединение, шлёт поток, потом перестал получать подтверждения (сломался туннель), он ждёт таймаут, отправляет GetDatagramDestination ()->SendDatagram (session, nullptr, 0, 0, 0, &options); В ответ получает ack seqn = 0
orignal значит на сервере сессия создалась по новой
onon Ну, дальше если слать поток то ответы с правильными аками
onon И шифрование не ломается
orignal правильными как будет продолжаются?
orignal или новые насчитвваюстся
onon Продолжаются
onon И акк с нулем он шлёт даже в том случае если не делал m_LastSession->GetDatagramSession ()->DropSharedRoutingPath ();
orignal то есть у него такая реация именно на такой пакет?
onon Очевидно что проблема в том что у нашего магического пакета нет seqn
onon Да
orignal вот тперь ясно
orignal счас думать будем
onon Но по логике у него seqn и не должно быть
onon Он где-то всё-таки записывает m_LastSession->m_LastReceivedPacketNum = 0
onon Потому что когда поток возобновляется то здесь if (options->Get (UDP_SESSION_SEQN, seqn) && seqn > m_LastSession->m_LastReceivedPacketNum)
onon Он присваивает 0 к следующему seqn
orignal я что то плохо соображаю
orignal разберусь
orignal в том пакете fromport и toport нулевые
orignal вот тебе и ответ
orignal там скорее весего новая сессия генерится
onon Ах вот оно что
onon Пофиксить реально?
orignal легко
onon Ну значит завтра сделаем
onon Или сегодня?
orignal if (!m_LastSession || m_LastSession->Identity.GetLL()[0] != from.GetIdentHash ().GetLL()[0] || fromPort != m_LastSession->RemotePort)
orignal m_LastSession = ObtainUDPSession(from, toPort, fromPort);
orignal думаю ясно?
onon Ну я в такие дебри не лез
orignal fromPort тут 0
onon Ну ты объяснил теперь понятно
onon Это нужно будет фейковый пакет генерить получается
orignal счас закоммичу
onon А я чаю сделаю пока
orignal готово
onon Щас посмотрим
onon ЗБС
onon Теперь нету нулей
onon Может и шифрование перестанет ломаться...
orignal это вряд ли
orignal шифрование что то другое
orignal nevermidn it's github
orignal I will let you know
orignal не туда
onon Не туда
orignal давай теперь твои изменения
onon Ну ты не торопись
onon Их же все перенести нужно, перепроверить
onon Завтра
onon Плюс у тебя какая-то чехарда с LastRepliableDatagramTime
onon Я не понимаю
onon Если я не разберусь, то переделаю по своему
orignal а что тут? это просто время отправки
onon или запроса?
onon Отправляющая сторона сама должна акки запрашивать
orignal нет когда последяя repliable ушла
onon А мне нужно время запроса
onon Чтоб запрашивать акки с определённой частотой
orignal ну это то же самое
orignal в raw запросов нет
onon Короче теперь когда он ноль не шлёт мой код не работает =)
onon Если исходящие пакеты потерялись
onon То он отвечает seqn меньше чем есть в окне и оно не освобождается
onon Вот буду думать как исправить