~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
Есть какие-то идентификаторы сесии
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
да
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
Вот буду думать как исправить