~AreEnn
~R4SAS
~acetone
~orignal
~villain
@onon
&N00B
+relaybot
DUHOVKIN_
Guest7184
Komap-
Most2
Nausicaa
Nikat
Ruskoye_911
Vort
Xeha
anon3
b3t4f4c3
fidoid
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
qend
segfault
soos
teeth
tetrimer_
uis
un
unlike
user
weko
whothefuckami
orignal
[:]|||[:]
WebClient56
привет
WebClient56
есть пару вопросов
orignal
ближе к делу
WebClient56
1. Протокол SAM, оказывается, имеет такую особенность: если на одном конце серверная часть приложения не была включена ранее, то при попытке соединиться с клиенской стороны приходит ответ, что
WebClient56
установить соединение не удалось. Однако, если серверая часть была недавно (минут 10, а иногда и больше) включена, а потом выключена (вообще машина физически), то при попытке соединиться по
WebClient56
протоколу SAM на клиенской части "connection OK". Никто не сталкивался с такой проблемой? Я в начале думал, что это библиотека кривая (i2p2sam for c++), потом по туториалу acetone по SAM на Хабре проверил - та же
WebClient56
история.
orignal
по порядку
orignal
какие команды SAM и какие ответы
WebClient56
Создаю серверную часть: HELLO VERSION, DEST GENERATE, на приватном ключе создаю сессию: SESSION CREATE STYLE=STREAM ID=ID_1 DESTINATION=priv_key
WebClient56
все это происходит через netcat
WebClient56
через второй терминал подключаюсь к текущей сессии: STREAM ACCEPT ID=ID_1
WebClient56
через 3-й терминал открываю вторую сессию, аналогично первой, только со своими ключами
WebClient56
через 4-й терминал подключаюсь STREAM CONNECT ID=ID_2 DESTINATION=public_key сессии с ID_1
orignal
ну логично
WebClient56
суть дальше
WebClient56
потом все закрываем
WebClient56
перезагружаем все
orignal
ну занчит в первом случае лизсет не находит
WebClient56
нетнет
WebClient56
все нормально отрабатывает в описанном выше сценарии
orignal
так в чем проблема я не понимаю
WebClient56
суть вопроса вот: если выполнить только действия терминала 3 и 4, то тоже "типо" все нормально, возвращается TREAM STATUS RESULT=OK, а машина то с ID_1 же выключена. Какого Х*я-то ок?
orignal
потому что лизсет в сети еще есть
orignal
попробуй через 10 минут и не будет
WebClient56
проблема в том, что мне надо сразу
WebClient56
про лизсет я понял
orignal
это надо смотреть
orignal
когда ответ на создание стрима приходит
orignal
и надо у zzz уточнить
WebClient56
я через либу добился того, что посылаю тестовую посылку на серверную часть приложения и если ответа нет, значит на самом деле сереврная часть не подключена
WebClient56
но - проблема заключячается тогда во втором вопросе:
orignal
так ответа же на SYN не будет и стрим закроется
WebClient56
вот SYN как раз и приходит походу, только не от целевой точки, а откуда-то пораньше
orignal
ты хочешл сказать у тебя стрим не закрывается сам с этом случае?
WebClient56
так, вот вопрос 2
WebClient56
2. Отправка/прием данных периодически чрезмерно долго происходят (хотя я читал где-то что там уже вроде как видеопотоки в тестовом режиме гоняются на i2pd). Либо я что-то не так как нужно делаю
WebClient56
(установил bandwidth = X (неограниченно) и долю транзитного трафика снизил со 100% до 30%) - не помогло. Подумал что дело в том, что тормоза происходят, когда 3 моих туннеля разрушаются и i2p во время
WebClient56
задержки строит новые. Решил, что увеличив количество отведенных туннелей (установил 10) можно решить проблему - без изменений абсолютно. Думал, что это из-за того, что я за NAT'ом и дело в introducer'ах
WebClient56
-> проверил на машине с статическим белым IP -таже история. В чем может быть дело? Но так не всегда происходит. Ингода просто моментально доставляются сообщения, а иногда ПАРУ МИНУТ ждать
WebClient56
приходится.
WebClient56
"ты хочешл сказать у тебя стрим не закрывается сам с этом случае?" - именно
orignal
сэм
orignal
это достаточно большая гадость
orignal
видеопотоки ходят через статические тоннели
orignal
если не закрывается то бага
WebClient56
прописанные в tunnels.conf?
orignal
да
orignal
с сэмом я вообще не уверен что будет
orignal
там небось все время эль-гамаль делается
orignal
потому и тормоха
orignal
короче на сэме ты скорость не получись
WebClient56
в том то и дело, что тогда одинаково бы лагало
orignal
просто потому что никто этого не проблвал
WebClient56
а оно периодически
orignal
если периодески
orignal
это значит что джавовские узлы в тоннелях не тянут поток
orignal
bandiwdth влияет только на транзит
orignal
на скорость никак не влияет
orignal
разрушение тоннелей тоже не влияет потому что там уже построенные заново будут
WebClient56
понял, в общем засада. Если была только одна из проблем либо 1, либо 2, тогда все было бы норм
orignal
ты снчала добейся скорости без сэма
WebClient56
но при наличии обеих - походу нерешаемо пока что
orignal
сэм надо чинить отдлельно
orignal
посмотри radioliberty.i2p
orignal
лагает ли радио
WebClient56
да мне не то чтобы прямо вот СКОРОСТЬ нужна, хотябы 10 сек чтобы сообщения приходили гарантировано
WebClient56
а не 2 минуты
orignal
2 миеуты что то у тебя не так
orignal
тут ведь приходят без проблем
orignal
и висят сутками без разрывов
orignal
а таймут тут 30 сек
WebClient56
"тут ведь приходят без проблем" - вот это еще причина моего смятения
WebClient56
в чем может быть проблема в таком случае?
orignal
причина у тебя одна - сэм
orignal
также заметь что и нетсплитов нет
orignal
хотя они тоже через i2p
WebClient56
"нетсплитов" - это что такое?
acetone
WebClient56: разрыв между серверами
orignal
тут 3 сервера
orignal
несплит сразу увидишь
orignal
когда куча народа враз отвалится
WebClient56
тут - это в ирке?
orignal
вот в этой самой
orignal
я последний раз отваливался 2 дня назад да и то потому что пересобирал
acetone
а вот в IRC2P я частенько отваливаюсь)))
orignal
странно что я почти нет
WebClient56
понял, так если не через SAM делать и НЕ через статические туннели, то как в свою приложуху добавлять поддержку i2p?
WebClient56
пол кода роутера тянуть?
orignal
надо разбраться что там с сэмом
orignal
и у сэма есть параметры
WebClient56
исходники смотреть?
acetone
доки
orignal
нет я починю
orignal
ты сначала попробуй добейся стабильной работы со статическими тоннелями
orignal
может у тебя часы съехали
orignal
когда добьешься надо смотреть в чем проблема с сэмом
WebClient56
часы синхронизированы с ntp
WebClient56
до этого был такой лаг, проходил )
orignal
вот и провечь просто с тоннелями
WebClient56
так, для справки - статические туннели - это любые туннели, которые указаны в tunnels.conf, или для которых определены все промежуточные узлы-посредники (чего я еще не делал, если так можно)?
orignal
которые в tunnels.conf или tunnels.d
orignal
чьи адреса создаются ри запуске
orignal
а не динамически как в сэме
WebClient56
т.е. сейчас мы через статический туннель коммуницируем в LITA?
WebClient56
В SAM я тоже всегда использовал заранее созданные и записанные в файл ключи
orignal
да
orignal
ну вот и попробуй
WebClient56
получется статический туннель - туннель для которого заранее определены private_key и public_key, И никакие промежуточные узлы заранее неизвестны, верно ? (просто чтобы понимать терминологию)
orignal
статический тоннель это который сущесвует все время
orignal
динамический который может стартовать и отключаться
orignal
и адреса могут генериться на ходу
orignal
LeaseSets: 206
WebClient56
у статического туннеля промежуточные узлы изменяются?
orignal
новый рекорд?
orignal
все точно также
WebClient56
меняются, понятно
acetone
WebClient56: все промежуточные узлы меняются раз в 10 минут у всех)
orignal
не изменются только если задашь парамет explicitPeers
orignal
но этого делать не слеудет
orignal
потому что теряется сам смысл i2p тогда
orignal
только для отладки
WebClient56
понятно, спасибо
orignal
acetone как тебе 206 лизсетов? ))
orignal
вот это рост сети
acetone
orignal: редко обращаю внимание на этот параметр))
acetone
сейчас у себя гляну
WebClient56
у меня ксати почему-то LeaseSets: 0
acetone
WebClient56: значит ты не флудфил)
acetone
orignal: у меня поменьше LeaseSets: 141
WebClient56
а, ну да(
WebClient56
точно
orignal
acetone и у тебя много
acetone
WebClient56: это количество опубликованных на флудфиле лизсетов в настоящий момент
orignal
раньше было в пределах 50-80
acetone
orignal: значит, ура) рост
orignal
WebClient56 потому что у тебя не флудфил
acetone
теперь буду обращать внимание на параметр
orignal
это именно рост
orignal
счас дедуле скажу
WebClient56
В общем, если я хочу с кем-то коммуницировать без лагов, то необходимо адреса целевых конечных точек вносить в tunnels.conf, верно?
WebClient56
публичные есстественно
orignal
да
orignal
для начала подключись сюда через ирк
orignal
сделай клиенский тоннель до irc.ilita.i2p
acetone
WebClient56: SAM вроде как умеет параметры длины туннелей
acetone
и их ширины"" (quantity)
acetone
возможно, это тоже может помочь в нужном случае
WebClient56
~orignal, "сделай клиенский тоннель до irc.ilita.i2p" - какой клиент лучше тогда постаивть?
WebClient56
acetone, я думал SAM - это тупо служба, слущающая на 127.0.0.1:7656 сокет и принимающая все данные в него и перенаправляющая их в сет i2p через роутер
orignal
type=client
acetone
WebClient56: так и есть в общих чертах)
WebClient56
я создал его
orignal
а понял
orignal
у меня hexchat
WebClient56
acetone, так я думал SAM использует такое количество и тунелей и длину, которые указаны в i2pd.conf...
orignal
лол
WebClient56
~orignal, понял, спасибо
acetone
в i2pd.conf указаны длины только сокс и http прокси
orignal
или зондирующие
acetone
остальные туннели ты конфигуряешь как в tunnels.conf
acetone
или через SAM
WebClient56
а ну да
WebClient56
да
WebClient56
или там
WebClient56
я думал их SAM использует
WebClient56
~orignal, acetone, спасибо за разъяснения
acetone
WebClient56: o/
orignal
R4SAS
orignal
m_NextReceivedBuffer = new uint8_t[m_NextReceivedLen];
orignal
в NTCP2
orignal
на каждый сраный пакет
orignal
надо что то с этим делать
R4SAS
<~orignal> LeaseSets: 206
R4SAS
<~orignal> новый рекорд?
R4SAS
нет
R4SAS
<~orignal> надо что то с этим делать
R4SAS
а нам не известна полная длинна сообщения?
R4SAS
orignal: выдай права на i2pd-dev на неилитном
R4SAS
s2#2 (ff):
R4SAS
10960 root 20 0 2231132 123440 8328 S 25.2 1.5 453:32.85 `- ./i2pd --datadir=./data --log=file
R4SAS
s2#3:
R4SAS
10965 root 20 0 1181356 72440 8140 S 44.7 0.9 585:42.13 `- ./i2pd --datadir=./data1 --log=file
R4SAS
всё же память куда то девается
R4SAS
123 мб уже
R4SAS
но уже лучше, не лезет на 200 мб
xadmpp
R4SAS: приветсвую, что я делаю не так.? цель собрать ipk i2pd для openwrt. тулчейн собрал, в menuconfig "M" поставил, скомпилил и получил версию 2.35, затем попробовал с твоего гита взять папку и скомпилилась 2.36, но сейчас же последняя 2.39.
orignal
R4SAS скажи как
orignal
сделал но как постоянно дать?
orignal
R4SAS длина то неизвестна но есть варианты
R4SAS
orignal: через chanserv
R4SAS
xadmpp: а ты как делал?
R4SAS
по пукнтам
orignal
R4SAS скажи что надо написать
R4SAS
я ж не знаю какой там сервисный софт
R4SAS
/msg chanserv qop #i2pd-dev R4SAS
R4SAS
типа так наверно
orignal
счас зайду
orignal
пишет Invalid command
orignal
усе
orignal
команда просто op
orignal
R4SAS идея с буфером такая
orignal
сохранять с предыдущего запроса
orignal
и если длина нового меньше то использовать
orignal
если долго нет автивности то удалять
R4SAS
а там каким образом работает этот буффер?
R4SAS
он же ограничен 1К?
orignal
<orignal> m_NextReceivedBuffer = new uint8_t[m_NextReceivedLen];
orignal
длина прилетает в начале сообщения
orignal
получаем новую длину смотрим если она меньше старой
R4SAS
т.е. там может быть болле 1К?
orignal
то используем
orignal
вплоть до 64K
R4SAS
а
orignal
если меньше то пересоздаем
orignal
я не знаю как в плюсах сделать realloc
R4SAS
я просто к тому, надо ли создавать каждый раз
orignal
вот я и хочу
R4SAS
а не просто перезаписывать, выделив один раз блок достаточно большой
orignal
оставлять
orignal
но смотри че
orignal
сессия висит обычно на ожидании длины
orignal
то много буферов будут болтаться и просто занимать память без дела
R4SAS
так, а увеличить это надо realloc?
orignal
в си да есть realloc
orignal
а в плюсах нету
R4SAS
напрмер прилетело 1К, а потом следующий пакет в сессии 32К
orignal
но можно просто пересоздать
R4SAS
и пока сессия не закончится держать 32К
orignal
в приципе для плоского буфера мы можем сишгые функции использовать
orignal
так это и плохо
R4SAS
а в каких случаях может быть более 4К
R4SAS
опять таймеры?
orignal
так таймер же уже есть
orignal
который сессии чистит
R4SAS
ну а как ты определишь была ли активность за период этого таймера?
orignal
у сессии таймтстапм есть
orignal
я же чищу после 2-х минут некативности
R4SAS
этот таймстамп последних данных?
orignal
а когда просто прохожу по сессиям
orignal
смотрю если буфер не занят под получение данных то чищу
orignal
ну да
R4SAS
ну тогда да
orignal
я просто про это забыл
orignal
давно собирался сделать
orignal
а вот мысль насчет malloc вместо new мне пришла только что ))
R4SAS
а если смова что то прилетит, то снова выделять придется?
orignal
ну да
orignal
ну и хуй с ним
R4SAS
так а разница насчет malloc и new?
R4SAS
просто память и структура с памятью?
orignal
new вызывает конструктор
orignal
и зависит от компилятора
orignal
мы не можем полагать что new = malloc
R4SAS
это ясно
R4SAS
крч возможно наличие лишних данных либо некорректное выделение
R4SAS
которе в дальнейшем по другому вычищаться будет
orignal
но зато можно использовать realloc
R4SAS
но я думаю ты не будешь пыаться делать realloc в меньшую сторону?
R4SAS
или как ты хочешь?
orignal
только в большую конечно
R4SAS
ты же сам говорил что malloc блоками
orignal
ибо иначе нет смысла это затевать
R4SAS
а может тогда делать градуированную очистку?
orignal
это что такое?
R4SAS
т.е. если > 32K, то через минуту, если 16К+, то через 2 минуты, 8К через 3 минуты
R4SAS
в зависимости от выделенного пространства
orignal
да можно и так
zlatinb
очень крутой docker-compose.yml с i2pd, i2psnark + MuWire pastebin.com/m3kKm6nz
R4SAS
так сделаю
orignal
а что ты изменил?
R4SAS
добавил проверку на .b32.i2p и .i2p
orignal
а разве раньше не было?
R4SAS
как видишь
orignal
главное проверь чтобы не тормозило
orignal
в том месте поток идет
R4SAS
какой поток?
R4SAS
там только импорт адрески из подписок
orignal
ну да
orignal
там же пачка адресов
R4SAS
да не должно
R4SAS
это уже по обрубку до "=" будет проверку проходить, не по всей сроке
orignal
тогда коммить
R4SAS
так, еще заранее вопрос
R4SAS
ничего если я вынес из HTTPServer.cpp в отдельный хедер стиль и иконку?
R4SAS
этот хедер только из HTTPServer.cpp инклудится
orignal
так хедер зачем?
orignal
не надо его в хедер
orignal
в хедере напиши extern
orignal
если нужен доступ откуда то извне
R4SAS
не нужен