~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest29533
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
anon3
b3t4f4c3
fidoid
flumental
nemiga
not_bob_afk
plap
poriori
profetikla
segfault
soos
teeth
tensor
un
weko_
whothefuckami
orignal
перелинковался с ацетоном
Vort
tetrimer: я думаю,что это не тот HTTP
Vort
вот сюда нужно смотреть: i2pd\libi2pd_client\HTTPProxy.cpp
orignal
un так чего у тебя падает?
tetrimer
Но все равно - неувязочка с кодами...
orignal
так поправь
orignal
эти коды хаген делал
tetrimer
Поправить расшифровку - не проблема, но ведь надо, чтобы в самой логике работы прокси отдавал правильный case. А вот этого я так просто не осилю.
lobastabrush
помочь?
orignal
а ну я тоже не знаю что когда отдается
lobastabrush
ну так тебе сервер и отвечает кодом 500
lobastabrush
бага нету
lobastabrush
в чем проблема?
orignal
народ объясните внятно у кого что падает?
orignal
ну кроме хуя конечно
lobastabrush
reg.i2p недоступен, а остальные подписки грузятся по DNS-адресу (i2pd.conf: addressbook.subscriptions) и не могут загрузиться я так понимаю
un
orignal, у меня за сутки 23 го и 24 ноября трижды упал- 1 раз релиз 49 после uptime 36 дней. потом два раза транк.
un
в тотже день что ты сделал патч по падению от r4sas
un
совпадалло с открытием в баруезере xmpp.tru.... :5432 какойто там порт. тоесть шло через socks
un
я хз что. просто запустил .2.48 с тех пор летит
un
ну кроме сегодня, рестартил чтобы tunnel.conf подхватить из за разлинковки irc
lobastabrush
addresbook.defaultUrl указывает на reg.i2p и он упал, получился небольшой single point of failure и теперь надо вручную новым нодам протыкивать добавление в адресбуки notbob.i2p, stats.i2p и остальное, иначе ничего не прогрузится
orignal
ну у тебя в докере
un
ну да. а там alpine но в хосте ubuntu
un
но в тот день было не только у меня падения - r4sas и skomorox
orignal
lobastabrush для того конфиг и сделан
orignal
так откуда я знаю мне стек надо
un
у меня хост в датацентре и чтобы там не ставить всю фигню и собирать i2pd поэтому докер раз два и пашет
orignal
с рег тут что то другое он же мультихоминг
un
Blinded message
orignal
ладно ждем R4SAS-а
orignal
у кого еще здесь падало сегодня?
tetrimer
un: Я из датацентра образ притащил к себе в VortualBox и там компилирую бинарь. Потом по scp загоняю обратно...
un
да можно просто на хосте в докере собарть - я так странк собирал
orignal
проблема в том что у меня нигде не падает причем в разных конфигурациях
un
мне просто в лом было дебажить и экспериментировать. я просто откатился и пашет норм
lobastabrush
у меня аптайм 4-5 часов, i2pd не падает
orignal
у меня кое где аптайм по 2 месяца
un
да может глюк какой у докера в сетевой подсистеме. когда по socks. да все может быть. может вообще тогда в тот день просто какойто пиздец был глобальный)
un
так как в конце ноября не у одного меня.
orignal
но у меня в тот день тоже ничего не случилось
orignal
нигде
un
у r4sas .. ты пачт с провекой на null сделал
un
я думал что у меня как раз это. собрал тарнк. и до вечера еще раза 2 или 3 рухнуло
orignal
этот патч нчему не поможет
orignal
там проблема непонтяно откуда
un
я говорю, как только я копипастил картинки из чата
un
все что осталось в логах:
un
Nov 23 05:03:05 localhost kernel: Destination[22728]: segfault at 7fee18b050b0 ip 000055a648bdc892 sp 00007fee19022be0 error 4 in i2pd[55a6489f6000+4c5000]
un
Nov 23 09:14:25 localhost kernel: Destination[27662]: segfault at 7fd3493191e0 ip 00005556fa3a5892 sp 00007fd3496e9be0 error 4 in i2pd[5556fa1bf000+4c5000]
un
Nov 24 15:32:27 localhost kernel: Destination[6556]: segfault at 7f5b8b12a060 ip 00005628ac5282c0 sp 00007f5b8b468be0 error 4 in i2pd[5628ac341000+4c9000]
lobastabrush
а, так убунта в докере у тебя немолодая?
lobastabrush
у убунты какой-то кошмар с бинарной совместимостью, обязательно собирай i2pd сам иначе рандомные сегфолты случаются, и убунта не предупреждает когда обновление ломает abi
lobastabrush
тоже сталкивался с рандомными сегфолтами готовых сборок i2pd на убунтах
Vort
"<lobastabrush> ну так тебе сервер и отвечает кодом 500 / бага нету": тут две проблемы: 1. ошибка 500 означает проблему в самом прокси. когда проксируемый сервер не отвечает, то, скорее, нужны коды 503 или 504
lobastabrush
если я правильно прочитал код, то прокси просто отдает код отданный сервером
Vort
2. ответ должен быть "брендирован", чтобы было чётко видно, что это ответ от прокси, а не от удалённого сервера. я самостоятельно ответ не сморел, но, думаю, tetrimer заметил бы если б было указание
Vort
lobastabrush: какой код? libi2pd_client\HTTPProxy.cpp или libi2pd\HTTP.cpp ?
tetrimer
В libi2pd\HTTP.cpp - просто ошибка в расшифровке кодов. На работоспособность - не влияет.
lobastabrush
ну я так понял тетример достучался до reg.i2p но тот вернул ему 500. Хорошо, ты хочешь чтобы прокси плюясь ошибкой уточнял что это его ошибка
Vort
lobastabrush: неправильно понял
tetrimer
Пятисотую ошибку дает вполне живой IIS, если у него там что-то пошло не так.
lobastabrush
брендировать ответ прокси я так понимаю надо туть
Vort
lobastabrush: ну вот. 500 летит в ответ на чуть ли не любую проблему. да, там
tetrimer
Хочется-то понимать: сервер (хост) живой, но внутри у него какие-то ошибки, или с хостом вообще не удалось соединиться (для этого 503 -я лучше подходит).
Vort
только надо проверять, чтобы браузер не игнорировал HTML ответ. я когда-то о таком читал
Vort
tetrimer: да, именно так
lobastabrush
а разве i2pd не отвечает адекватным Host is Down когда не удалось соединиться? По-моему отвечает
tetrimer
Если я правильно понял, прокси по ответу - сам формирует страничку.
tetrimer
В коде HTTPProxy.cpp есть только пятисотая ошибка.
Vort
lobastabrush: может быть разница между случаями, когда не найден адрес и когда адрес известен, но с ним нету связи
lobastabrush
да, когда адрес неизвестен нам предлагают жамперы, а когда изестен - Host is Down
lobastabrush
но вот какие при этом коды ошибок - вообще не смотрел
Vort
может браузер решил проигнорировать HTML ? как раз о чём я только что писал
tetrimer
Через curl отдается: <body><h1>Proxy error: Host is down</h1>
Vort
хотя 503 в любом случае стоит отдавать
Vort
tetrimer: а браузер это не отображает?
lobastabrush
у меня отображает
tetrimer
Отображает, но в консоли отладчика (F12) - пишет 500.
Vort
так из-за чего можно подумать, что это сам сервер так ответил, а не прокси?
tetrimer
Vort: void HTTPReqHandler::SendProxyError(std::string& content)
tetrimer
{
tetrimer
i2p::http::HTTPRes res;
tetrimer
res.code = 500;
tetrimer
И браузер, соответственно, "расшифровывает" 500, как "Internal Server Error"
Vort
tetrimer: но при этом же есть сообщение "Proxy error" ?
Vort
похоже, что этому сообщению просто пурпурного цвета не хватает :) так было бы понятнее
tetrimer
Есть.
Vort
может, стоит поменять "Proxy error" на "i2pd HTTP proxy error"
Vort
короч сделать как-то бросающимся в глаза тот факт, что это сам i2pd ответил
tetrimer
Мне кажется - стоит поменять 500 на 503.
Vort
ну и это тоже
Vort
но там же разные причины могут быть. надо все проверить
Vort
может, каким-то и 500 соответствует
tetrimer
А где там if () в коде? Там нет вариантов 50X ошибок.
Vort
я говорю о том, что "отвечать всегда 503" может быть тоже неверно
orignal
так добавить код ошибки в SetProxyError
Vort
в GenericProxyError тоже
Vort
а там их дофига
orignal
а главное убрать эти магические числа
orignal
и сделать константами
tetrimer
Вот, по-идее, обращение к лежащему хосту должно выводить на эту строчку:
tetrimer
GenericProxyError(tr("CONNECT error"), tr("Failed to connect")); и отсюда генерировать 503-ю ошибку на экран.
Vort
tetrimer: это другое скорее всего
tetrimer
Там обработка if(stream). Т.е. поднятие соединения.
Vort
браузер скорее всего использует GET, а не CONNECT
tetrimer
Ну вот, например, angie/nginx в случае лежащего за ним сервера - отвечает 502-й ошибкой.
tetrimer
И это - понятнее, чем пятисотая (an unexpected condition was encountered and no more specific message is suitable)
Vort
tetrimer: я вот такое нагугливал: stackoverflow.com/a/49646048
tetrimer
есть же RFC. :)
Vort
специально по прокси?
tetrimer
rfc7231
Vort
так важны же не только сами ошибки, но и то, как их применять в контексте HTTP прокси сервера
tetrimer
Вот, например, перевод: "6.6.1. 500 — Internal Server Error (Внутренняя ошибка сервера)
tetrimer
Код состояния 500 (Внутренняя ошибка сервера) указывает, что сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос."
Vort
поэтому вариант "посмотреть как сделано в каком-то популярном HTTP прокси" очень даже неплох
tetrimer
То есть "сервер жив, но в запрашиваемом коде - ошибка". Так бывает в том же php
tetrimer
А вот это: " 504 — Gateway Timeout (Время ответа сервера истекло)
tetrimer
Код состояния 504 (время ожидания шлюза) указывает на то, что сервер, действуя в качестве шлюза или прокси-сервера, не получил своевременный ответ от вышестоящего сервера, к которому он должен был получить доступ для выполнения �
tetrimer
случай.
Vort
tetrimer: это понятно. но в прокси i2pd разновидностей ошибок штук 20. поправить всего одну - как-то не правильно
Vort
ага, вижу упоминание прокси, хорошо
tetrimer
Ну да - лучше не править ничего.
tetrimer
Кстати, тут 502 - получается не очень корректно: "Код состояния 502 (Bad Gateway) указывает на то, что сервер, выступая в качестве шлюза или прокси-сервера, получил неверный ответ от входящего сервера, к которому он обращался при попытке �
tetrimer
Тут как раз "не получил ответа" - правильнее.
Vort
да, вроде, 502 никто и не предлагал :)
Vort
я сейчас issue на github напишу, для напоминания о проблеме
tetrimer
С http response две проблемы. Несоответствие здесь, и ошибка в http кодах libi2pd/HTTP.cpp, что я выше давал.
tetrimer
"Чтобы два раза не вставать". :)
Vort
тоже иногда так делаю. но правильнее всего - 1 проблема - 1 отчёт
Vort
по второй проблеме это надо разбираться, как эти коды вообще используются. может быть так, что сейчас вообще нету возможности их получить
Vort
по-хорошему, ведь надо каждое изменение тестировать - то есть, понимать, как воспроизвести проблему
Vort
с "Host is down" сценарий воспроизведения понятен. с HTTP.cpp - лично мне - нет
tetrimer
Тут бы уточнить, что текстовое сообщение на экран клиента идет правильное, а вот http код в заголовке страницы - вводит в заблуждение отладчик браузера, который, в свою очередь, вводи в заблуждение чайников, типа меня. :)
tetrimer
Потому, что есть разница "сервер ответил ошибкой" и "сервер не отвечает".
Vort
человеческие ошибки - это отдельная история. это больше вопрос юзабилити
Vort
тут же должен быть код 503, а имеем 500. это плохо независимо от того, ошибётся кто-то из-за этого или нет
tetrimer
Я к тому, что кроме самого кода - ничего в логике править не надо.
orignal
я же говорю убрать магические числа первым делом
orignal
и сделать константы
tetrimer
А чем "магические числа" не константы? Объявить их где-то один раз на воде и потом оперировать только кодами.
tetrimer
А в бусте, или кто-там обрабатывает http-коннекты - нет ли готового справичника кодов?
tetrimer
boost/beast/http/status.hpp
tetrimer
Все там есть...
orignal
есть наверное
orignal
просто хаген так сделал
orignal
только есть ньюанс
orignal
мы beast не используем
tetrimer
Тогда где-то придётся держать аналогичную информацию.
orignal
в каком нибудь хедере