~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal
weko объясни как получается что оба клиента с одного порта идут?
weko
Хороший вопрос, игра mindustry, был один тунель - мы могли оба зайти, но только первый кто зашёл мог строить. Стало 2 туннеля- всё стало норм. Конфиги надо у reloaded спрашивать
weko
Похоже на то, что с TCP всё адекватно, а с UDP нет
weko
Возможно проблема не конкретно в портах, а в реализации, но факт - 2 туннеля ситуацию исправили
orignal
weko понимаешь в чем дело
orignal
там соединяется с того порта который приходит от клинта
orignal
дурость конечно и я это переделаю
orignal
но вопрос почему с двух клиентов один порт приходит
weko
orignal: пытаюсь найти что нибудь в исходниках игры
orignal
да пока не надо я это поправлю
orignal
я еще в коде посмотрю может на клиенской стороне бага
orignal
я просто пытаюсь разобраться в коде психа ))
weko
))
weko
Окей
orignal
в лююом случае это надо переделывать
orignal
потому что порты на клиенте и на сервере имеют мало связи
reloaded
orignal: На счет ошибки, суть что игра использует и TCP и UDP, TCP для подключения к серверу и чата, UDP непосредственно для игры. И как можно было понять, подключение приходит, чат работает, но тот кто зашел
reloaded
вторым не может ничего сделать, действия не отображаются на сервере. Что приводит к мысли что что-то не так с UDP, и так и произашло, когда я продублировал тоннель, и один из играков заменил b32 адрес в
reloaded
тоннеле на новый (а второй остался со старым) - все заработало. Единственное обяснение к которому мы пришли это то что UDP тоннель слал пакеты обоих клиентов с одного клиентского порта, можно
reloaded
попробовать это протестировать, но код в любом случае нужно исправлять, так что думаю логичнее будет протестировать оригинальный конфиг после внесения изменений в i2pd, заработает - предположения
reloaded
подтвердятся
orignal
так вот этот клинский порт приходит от клиенского приложения
reloaded
Тоесть это тот же клиентский порт который используется самим приложением? (Игрой на компютере клиента)
orignal
смотри по коду получается так что клиентсий тоннель передает порт клиента серерву
orignal
а серверный тоннель соединяется имнно этого порта
orignal
что конечно же неправильно
orignal
но вот почему клиенский порт с разных экземляров приложения один и тот же это непотнятно
orignal
в любом случае я это переделаю
weko
orignal: reloaded вроде тестировал с одного адреса и всё работало у него
orignal
а как работало? через разные тоннели?
orignal
клинтские или серверные?
reloaded
orignal: Как работало: Создал серверный TCP и UDP тоннели два человека подключаются - играть не могут при этом если я на одной и той же VM запускаю 4 клиента и подключаюсь локально с одного IP - работает
reloaded
По идее клиентские порты выдаются ОС, так что не думаю что это проблема с клиентом
acetone
i2pd падает, если "crypto.tagsToSend = 20" добавить в i2pd.conf (в секцию httpproxy)
acetone
i2pd падает, если "crypto.tagsToSend = 20" добавить в i2pd.conf (в секцию httpproxy) * только что пришлось проверить)))
orignal
а оно там вообще есть?
orignal
reloaded серверный тоннель делает явную привязку
orignal
потому и падает
orignal
reloaded ладно я разберуюсь в чем дело
weko
orignal: если смогу, я потестерую и скажу что вышло, чтобы точно понимать
orignal
спс
R4SAS
о, порнография
R4SAS
polistern: github.com/PurpleBote/pboted/commit/1be1844b45a81954bd57a052297f21df26880fb6#diff-889c5495b68d2a0c0d1f238818716a71939918499efbc0fc6d2994319624fc67R9
R4SAS
нинада так делОть
polistern
пОчему?)
polistern
Они что-то не то оптимизируют?
R4SAS
по умолчанию уже -O2 используется
R4SAS
у нас так убунта 21.04+ сломалась
R4SAS
далее
R4SAS
github.com/PurpleBote/pboted/commit/1be1844b45a81954bd57a052297f21df26880fb6#diff-2a13f1344504379e877324d3a0375adcbcb4cb27d7e575ad8f4618a52d6a00e0L10
R4SAS
поднимать надо версии. GCC 8+ умеет filesystem
R4SAS
если я правильно помню
polistern
Ага, ну ок, убрала оптимизацию. Версии подняла, ещё не отправила. У меня вопрос, как билду DEB пакета передать control для другой?
R4SAS
другой чего?
polistern
Версии ОС
R4SAS
туда надо минимальные писать
R4SAS
т.е. сейчас это deb 10
polistern
Ну смотри, сек
R4SAS
для генерации пакетов под другие релизы делается changelog с указанием релиза
R4SAS
у меня для этого скрипт присутствует
polistern
А если зависимость в новой версии ОС отпадает, т.к. не нужна?
R4SAS
например?
R4SAS
тогда универсальный пакет
R4SAS
но я сомневаюсь что так будет
R4SAS
у тебя openssl везде разный
polistern
Например на старой GCC нужно будет с бустом filesystem делать, а в новой, с С++17, можно без него.
orignal
а зачем тебе старый?
orignal
делай сразу под 17
R4SAS
а ты все таки собираешься тянуть старые системы?
orignal
кому надо те gcc7 везде поставят
R4SAS
псс8
orignal
правда для filesystem надо 8
orignal
короче забей на старые
orignal
это же не i2pd где "дань традициям"
polistern
Да не знаю, пока поддержка выглядит как пара if-else то почему бы и нет. Я сейчас проверила, собирается у меня и с С++11 и с 17
orignal
до сих пор 4.8 поддерживается
orignal
так не нужен 11
orignal
у меня 11 потому что я начинал когда был 11
R4SAS
polistern: у тебя на stretch врядли соберется
R4SAS
это 9й
R4SAS
там псс 6.3 вроде
orignal
так я думаю можно и 8 поставить из репы
R4SAS
нет
R4SAS
откуда он там возьмется?
orignal
тады ой
orignal
полключить репу gcc
R4SAS
стретч уже как бы всё
orignal
отдельную
R4SAS
еще в июле
orignal
а ну тогда зачем тянуть eol?
R4SAS
даже LTS закончился
R4SAS
незачем
orignal
единственная стоящая вещь это сентос 7
R4SAS
его тоже в топку)))
orignal
я не согласен
R4SAS
сколько можно это говно мамонта тянуть
orignal
он до сих пор поддерживается
R4SAS
знаю, но он поддерживается не в офф ветке
R4SAS
а так же LTS
orignal
официально поддреживается вообще то
orignal
именно сентос 7
orignal
не 8
polistern
Должен собраться на стретч, там нужный буст есть и GCC норм.
orignal
а нафиге тебе стретч?
orignal
обнови уже до 10
orignal
хотя бы
polistern
Да у меня то 11))
polistern
И BSD
orignal
ну так а тогда зачем?
orignal
а у меня распбиан а он 10 ))
polistern
Так R4SAS сказал, что не соберётся, я говорю нет причин не собраться))
R4SAS
polistern: попробую попозже
orignal
так если ты передйешь на std::filesystem
polistern
Я ifdef налепила и хитрый cmake
orignal
ну вот тебе и гвоорят что старое за борт современности ))
polistern
Понятно если весь код нужно так обмазывать, то ну его. А так то не сложно.
R4SAS
ну так весь и придется
R4SAS
а это точно так нужно подключать?
R4SAS
и да, "lib" не нужно писать
R4SAS
-lstdc++fs
polistern
На 8 да, на 9 нет.
polistern
В общем есть у меня одна центось 7, если с её пакетами без плясок соберётся, то едут изменения мои с поддержкой. Как вам вариант?
R4SAS
попробуй
polistern
Если нет, то С++17 минимум тогда.
R4SAS
сразу в мастер
R4SAS
лол мелкомягкие на гх прилепили vscode
polistern
Блин, Cmake подвёл на CentOS, там 2.8 ))
polistern
Но на stretch 3.7 как раз) Ладно, едем на C++17
R4SAS
бугагага
R4SAS
поэтому мы ставим туда 3й
R4SAS
там он есть в репах
R4SAS
yum install cmake3
R4SAS
polistern:
polistern
Сейчас гляну тогда
polistern
Обычная OpenSSL у них старовата, а которая openssl11 не линкуется. По итогу мои EVP* всякие не работаю ((
polistern
Хз ковырять дальше или забить уже
R4SAS
всм не линкуется?
R4SAS
EVP да, не будут
orignal
на сентос?
orignal
собери вручную
orignal
и поставь
orignal
я так сделал
R4SAS
orignal: и че
orignal
ну у меня там openssl 1.1.1 счас
R4SAS
ты будешь всех заставлять руками собирать?
R4SAS
она пакет слепить хочет
orignal
ну у кого centos 7 да ))
orignal
а в пакет его нельзя добавить?
R4SAS
нет
orignal
или статически слинковать?
R4SAS
нет [2]
orignal
не надо пакет под сентос 7
R4SAS
ты лучше ей объясни как EVP у нас работает
R4SAS
там
polistern
Так, ну он собрался и даже работает.
polistern
Сейчас подкину ему почтовый адрес, пусть запросы поделает, на всякий.
weko
как обновить туннели без рестарта роутера?
orignal
kill -s HUP
orignal
но работет не всегда
weko
пишет не хватает аргументов
orignal
так номер процесса разумеется
weko
угу
weko_
orignal точно не работает с udp
orignal
R4SAS
orignal
чинил вроде
weko_
не, tcp обновляет, udp нет
weko_
не сервер, ни клиент
orignal
я в курсе
orignal
вот R4SAS udp и чинил
weko_
ну вот я и говорю, что теперь не работает
orignal
ну а спрорю что ли? ))
weko_
ладно, хер с ним
R4SAS
логи видать не умеем читать
R4SAS
без логов даже изучать не буду
polistern
Получается на CentOS 7 только clang может билдить. GCC староват. А так всё работает. Сама придумала проблему, сама решила)
orignal
polistern там можно 7 поставить
polistern
Мне бы ещё понять как не так кустарно линковать openssl11
orignal
не знаю
orignal
как я сказал я просто его там собрал и поставил
R4SAS
polistern: while (client_sockfd != -1)
R4SAS
а незя нормально написать состояние? не -1 ?
R4SAS
а то я не понимаю например чего тут ожидать
polistern
Пропустила
R4SAS
там должно быть INVALID_SOCKET?
R4SAS
или чего?
orignal
ну да чтобы константой
R4SAS
client_sockfd < 0
orignal
или все таки >= 0 ?
R4SAS
вот это вообще меня убивает если честно
R4SAS
как сокет можно с числом сравнивать
R4SAS
if(fds[sid].fd >= 0)
R4SAS
а тут как понимать?
R4SAS
если он есть, или пуст?
R4SAS
крч не ясно
R4SAS
if (tcp_fd == (int)INVALID_SOCKET)
R4SAS
а зачем приводить к int?
R4SAS
он же все равно int
R4SAS
или нет?
orignal
там можнт unsigned
R4SAS
в таком месте я вообще ловлю подобное:
R4SAS
warning: comparison of integer expressions of different signedness: 'SOCKET' {aka 'long long unsigned int'} and 'int' [-Wsign-compare]
R4SAS
мне приходится у сокета менять тип с int на SOCKER
R4SAS
SOCKET*
R4SAS
иначе не хочет
R4SAS
#ifndef INVALID_SOCKET
R4SAS
а такое бывает?
polistern
По поводу if(fds[sid].fd >= 0 - по сути всё, что валидный сокет. Ну а в остальном я опиралась на то, что socket() возвращает int. Получается нужен define, где для линуха будет int, а для винды как есть подставит.
polistern
В i2psam есть, равен ~0
R4SAS
ну так под это условие тогда достаточно != INVALID_SOCKET
polistern
Я вообще думаю вынести все эти ОС зависимые вещи в отдельный заголовок, по крайней мере константы. Ну и сделать их всё-таки константами.
polistern
А то их собирать по всему коду приходится.
R4SAS
да, я видал этот файл
weko
orignal: я затестил вчерашнюю проблему, всё точно так же
orignal
weko рассказывай конфигурацию
weko
при чём это не проблема игры, так как если зайти с одного адреса не через i2p (в данном случае через локальную сеть), то всё работает
weko
щас скину конфиг
orignal
не надо
orignal
объясни так
orignal
у тебя есть серверный udp тоннель
orignal
и как к нему происходит подключение клиентов
weko
UDP работает адекватно, только если сделать туннель для каждого юзера отдельный
`
weko, minetest гоняешь по udp?
orignal
мне лень i2p запускать
weko
нет, mindustry
`
а, ок
orignal
weko так отдельный тоннель клиентский или серверный?
weko
серверный
R4SAS
poll поддерживается в винде с 8.1
weko
два клиентских там для меня, чтобы я затестил как будто я два юзера
R4SAS
хотя может и на 7 будет
R4SAS
хз
orignal
weko теперь давай объясняй проблему
orignal
значит два клиента обращаются к одному и тому же i2p адресу и порту. так?
polistern
R4SAS, ну значит на 7 без POP3, SMTP и Control должно работать. Основная сеть на select()
weko
1. один серверный туннель. подключаюсь с разных адресов i2p - с одного не работает строительство (не работает udp)
weko
2. дублирую серверный туннель как в конфиге - всё работает нормально
weko
3. без i2p с одного адреса игра работает адеватно
orignal
так а что происходит?
polistern
R4SAS, Minimum supported client: Windows 8.1, Windows Vista [desktop apps | UWP apps]
orignal
когда второй
orignal
не приходя пакеты на клиента?
polistern
Это для select()
orignal
я хочу понять на какой стороне затык
weko
при переходе с 1 на 2 у клиента меняется только адрес и серверный порт
R4SAS
polistern: вот меня смущает эта запятая
weko
так что проблема с серверным udp
polistern
Возможно как сервис нельзя. Надо пробовать. Так конечно нифига не понятно)
R4SAS
orignal: я думаю затык в том что для новых пакетов с нового адреса не открывается новый сокет для отправки
orignal
проверю
R4SAS
ш2зв шлет все udp с одного и того же порта
weko
я щас
R4SAS
ответы соответственно прилетают туда же и ш2зв не знает кому отослать
R4SAS
либо шлет первому кто открыл соединение
R4SAS
я так это понимаю
R4SAS
хз честно
R4SAS
придется курить этот poll
R4SAS
а точнее wsapoll
R4SAS
github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/netds/winsock/wsapoll/poll.cpp
orignal
а как же мамбл тогда работает?
polistern
nginx for windows через poll и select работает пишут, но не нашла пока минимально поддерживаемую.
orignal
std::make_shared<UDPSession>(ep,
orignal
boost::asio::ip::udp::endpoint ep(addr, 0);
orignal
очевидно что это не так
orignal
должке быть порт разный
orignal
но возможно он сессию находит старую
orignal
if (s->Identity.GetLL()[0] == ih.GetLL()[0] && remotePort == s->RemotePort)
orignal
все ясно
orignal
weko_ признавайся что у тебя клинтский тоннель тот же самый
weko_
а?
weko_
всм
R4SAS
weko_: ты к одному туннелю клиентскому пытаешься цепляться двумя копиями игры?
orignal
или у тебя два разных клиентских
weko_
два разных клиентских, с рахных устройста в случае 2
R4SAS
так... расковырял BoteControl
weko_
я же кинул конфиг, там 2 клиентских
R4SAS
это ад
weko_
))
orignal
ну я спрашиваю
orignal
ты же видишь по коду
polistern
R4SAS, в SMTP и POP3 такой же ад, только без POSIX сокета
orignal
у тебя два клиенских точно не с одним и тем же адресом.
R4SAS
polistern: дойду - узнаю )))
R4SAS
теперь надо узнать вот что
weko_
orignal: разные
R4SAS
для boost::filesystem::wpath есть замена или нет
weko_
mindustry.dat и mindustry-t2.dat
orignal
тогда проблема в чем то другом
orignal
weko_ откуда ты знаешл что приходят с одного порта?
weko_
я предполагаю
weko_
проблема два раза повторилась у меня и reloaded
orignal
а надо убедиться
orignal
запусти сниффер
polistern
R4SAS, wpath deprecated since boost 1.60; Removed; use class path instead. Workaround provides typedef path wpath
polistern
Возможно он в std уже так и переехал
weko_
я уже стёр эти конфиги, завтра могу убедится
orignal
потому что там порты должны быть разные
weko_
логично)
R4SAS
polistern: посмотрим. там могут быть проблемы если юзернейм или в путях не ASCII
weko_
или ты про код?
weko_
завтра проверю, скажи только чем
orignal
я по коду вижу что будут разные
orignal
потому и гвоорю что думаю что проблема не в этом
weko_
скажи какой утилитой проверять
orignal
wireshark
orignal
дамп снимай и смотрти заголовки
R4SAS
polistern: посмотрим. там могут быть проблемы если юзернейм или в путях не ASCII
R4SAS
ой
polistern
Бывает)
R4SAS
weko_: а с чем либо другим проверить можешь?
R4SAS
(случайно вверх нажал перед отправкой)
R4SAS
weko_: мамл же пашет как то
orignal
то то и оно там явно причина в другом
R4SAS
polistern: memset(sessions, 0, sizeof(sessions));
polistern
{0} ?
R4SAS
'void* memset(void*, int, size_t)' clearing an object of type 'struct bote::pop3::pop3_session'
R4SAS
хз почему оно так думает конечно
polistern
Ааа, ну так то он и должен очищать нулями. Это как варнинг или прям ошибка?
R4SAS
варн
polistern
Действительно хз почему они думают, что я тут что-то другое хочу. Это что за компилятор?
R4SAS
gcc 12.1.0
orignal
sizeof(sessions) будет равен 8
orignal
вы чего?
orignal
это же размер указателя
polistern
(sizeof(*sessions)) * (sizeof(sessions)) получается?
orignal
я не знаю что это
orignal
это массив или указатель или что?
polistern
Массив структур
polistern
Взято из доки IBM))
orignal
так надо длину его знать
orignal
а ну если прямо там массив объявлен тогда можно
polistern
Грубо говоря sessions[5], не указатель.
orignal
да там будет полный размер
orignal
но только если он объявлен именно там
polistern
Именно так
R4SAS
крч че делать то?
R4SAS
в SMTP такого нет
R4SAS
либо есть... сейчас перепроверю
R4SAS
да, там тишина
polistern
Есть, там одинакого сессии сделаны. Надо кстати оптимизировать будет их потом, много памяти жрут.
polistern
А если нет, то странно.
R4SAS
крч э
R4SAS
это хрень в конпеляторе
R4SAS
а это уже в имеющемся коде
R4SAS
тоже int и SOCKET ))
R4SAS
свой я сейчас в PR залил (дважды), собирается уже
polistern
Круто)