Vsevolod
V после аксепта вновь получившийся сокет не наследует O_NONBLOCK от listening сокета
Vsevolod
(и это дико бесит, например)
🐙 Antony
А при чем сдесь селект, парень ты не понимаешь сути моего вопроса.
Скиньте больше кода. Вы recv вызываете случаем не на полученном из accept сокете?
Vsevolod
в линуксе есть accept4 и SOCK_NONBLOCK
V.
(и это дико бесит, например)
Странно, много примеров было в нете где типо работает, есть обход?
Vsevolod
но это, разумеется, непортируемо
Vsevolod
обход простой - ставить сразу после accept O_NONBLOCK через отдельный fcntl
🐙 Antony
обход простой - ставить сразу после accept O_NONBLOCK через отдельный fcntl
+1 остальные опции тоже надо ставит отдельно
Vsevolod
угу, особенно CLOEXEC
Vsevolod
на новый, конечно
Vsevolod
новый сокет - новые флаги
V.
угу, особенно CLOEXEC
Тогда вопрос, есть ссылка на развернутое описание всех флагов параметров для fcntl?
Vsevolod
https://github.com/nginx/nginx/blob/41d8ea8c8d268555d3cbd8dd2ab32dcc06658209/src/event/ngx_event_accept.c#L63
Vsevolod
для setsockopt еще приходится смотреть конкретный SO level
Vsevolod
man unix, man tcp, man udp и man socket :\
Vsevolod
ах, и man 7 ip
Vsevolod
для чудной опции V6_V6ONLY, за которую авторов ipv6 стека надо бы оскопить
Berkus
отскопить
Крылатый
оскопить
V.
для чудной опции V6_V6ONLY, за которую авторов ipv6 стека надо бы оскопить
Как то нагородили всего -_-, я как весь стэк под МК писал как то попроще было.
Vsevolod
да, ipv6 вообще хорошо характеризуется этим словом: "нагородили"
V.
да, ipv6 вообще хорошо характеризуется этим словом: "нагородили"
Есть ведь поговорка, если прога не юзерфрендли то должна быть хоть девелопер френдли...
Vsevolod
бгг, адрес, который может разделяться точками, а может двоеточиями. а еще бывает порт, но об этом, когда составляли драфт забыли. вообще, ipv6 был как раз идеей замены концепции порта концепцией отдельного ip для каждого соединения. но склалось так, как склалось, и парсить это говно невозможно корректно: где-то применяются [ip]:port, где-то просто считается, что если у нас :\d+$, то это порт, а если что-либо другое - то НЕ ПОРТ
Vsevolod
ну и прочие безобразия
V.
ну и прочие безобразия
Видел сие, нет что б просто добавить пару октетов к ипв4
🦥Alex Fails
Вчера был приятно удивлён существованием vcpkg
Так мы в чате эту штуку уже месяца два обсуждаем, вон @crackedmind в нее контрибьютит даж
Vsevolod
@berkus есть!
Vsevolod
@berkus a.f.1.d. .... .0
Berkus
@berkus есть!
какой пиздец
🦥Alex Fails
Да
🦥Alex Fails
Поэтому парсить IPv6 в compile time сложно
Berkus
ну на точечки можно забить и парсить только каноничный вариант
Vsevolod
а потом к тебе в гитхабик придет очередной психический и начнет с пеной у рта доказывать, что рфц, стандарты, ко-ко-ко, кудах-тах-тах
Vsevolod
но это все ерунда
Vsevolod
хуже, когда ты пытаешься сконнектиться с каким-то хостом, и выясняется, что в системе вроде бы есть ipv6, но только link-local
🦥Alex Fails
https://tools.ietf.org/html/draft-main-ipaddr-text-rep-02#section-3.2
Vsevolod
и вот тогда начинается реальная жопа
Anton
ipv6 не нужен _
Vsevolod
с happy eyeballs и дрочью с рейсами
Anton
его придумали инопланетяне
Vsevolod
его придумали учоные
Vsevolod
а учоных в инженерные решения пускать нельзя ни под каким предлогом
🦥Alex Fails
Да
🦥Alex Fails
Vsevolod
дык
Vsevolod
там еще есть одна смешная штука
🦥Alex Fails
Dead::f00d::192.168.0.2
Vsevolod
v6 mapped v4 адреса
🦥Alex Fails
Да
Vsevolod
ага!
Anton
ну надо просто нейросетку чтобы парсить это говно )
Berkus
Optionally, the least-significant two pieces may instead be represented in IPv4 address textual format (the <IPv4address> production given above)
Berkus
то есть оно ipv4-in-ipv6 так типа эмулирует, оок
Aleksandr
ipv6 не нужен _
А для интернета вещей?
Anton
а вещи все за натом держать
Vsevolod
нет, лучше голой жопой в интернет
Anton
очень надо чтобы твой контроллер отопления был виден всему миру )
Anton
в -40 а ты на работе
Vsevolod
идея ipv6 была как раз в том, чтобы убрать нужду в портах - потому что это реально костыль
Aleksander
каждой переменной по ipv6 адресу?
Berkus
Dead::f00d::192.168.0.2
я вот не могу понять интерпретацию вот этого For general-purpose use, common practice is to ... to represent IPv4-compatible and IPv4-mapped addresses using the embedded IPv4 address representation. embedded это какой, как ты написал или все таки hex-ом?
Berkus
ага, вроде бы dead::f00d:192.168.0.2 это embedded
Vsevolod
ну, к ipv4 тоже есть претензии в этом плане
Vsevolod
ping 0xCEBF9E37
Vsevolod
в винде сработает и ping 0x9A3F0800CEBF9E37
🦥Alex Fails
записать ип одним числом
Vsevolod
ping 206.12557879
Vsevolod
так тоже можно
Vsevolod
или так ping 000000316.00277.000236.067
Vsevolod
или вариации всего вышеперечисленного
FailsBot
Vsevolod shrugs
Vitaliy ◀️TriΔng3l▶️
ping 0xc0.0250.1 🙈
Vitaliy ◀️TriΔng3l▶️
хм
Vitaliy ◀️TriΔng3l▶️
с отрицательными не работает(
Vsevolod
надо на винде проверять, он там что угодно резолвит, даже небо, даже Аллаха