From: Alexey Vissarionov 2:5020/545 04 Jun 2021 11:22 +0300
To: Evgeny Chevtaev 2:5010/275
Subject: listen и IPv6
Доброго времени суток, Evgeny! 04 Jun 2021 13:03:26, ты -> Nil A: NA>> Ещё надо бы увеличить буфер для адреса, а то IPv6 адреса могут быть NA>> длинными, особенно если ещё порт указать. NA>> - char addr[42]; EC> Видимо, расчёт был такой, что 42 - это 8 групп по 4 символа, EC> разделённых 7 двоеточиями, в 2 квадратных скобках и в конце \0. ;) EC> А порт забыли. + uint8_t addr[48]; Не надо использовать char для байтов. Да, уже сейчас. А uint16_t в 5 десятичных цифр заведомо укладывается. -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... Не рой другому яму - перебьешь свой кабель
From: Evgeny Chevtaev 2:5010/275 04 Jun 2021 11:03 +0300
To: Nil A 2:5015/46
Subject: listen и IPv6
Hi Nil! Friday June 04 2021 06:47, Nil A wrote to Evgeny Chevtaev: EC>> Если указывать в квадратных скобках, то пытается ресолвить: EC>> ? 04 Jun 05:17:21 [1767] servmgr getaddrinfo: Name does not EC>> resolve (8) NA> Мой getaddrinfo() из линксового glibc отбраковывает адрес указанный NA> вместе со скобочками []. Я не знаю, как у других это работает. NA> Далее идёт мой патч, который выкидывает скобочки из адреса IPv6, и в NA> таком виде у меня getaddrinfo() работает как ожидается. Во, с этим патчем заработало! NA> Ещё надо бы увеличить буфер для адреса, а то IPv6 адреса могут быть NA> длинными, особенно если ещё порт указать. NA> - char addr[42]; Видимо, расчёт был такой, что 42 - это 8 групп по 4 символа, разделённых 7 двоеточиями, в 2 квадратных скобках и в конце \0. ;) А порт забыли. With best regards, Evgeny
From: Nil A 2:5015/46 04 Jun 2021 06:59 +0300
To: Evgeny Chevtaev 2:5010/275
Subject: listen и IPv6
Hello, Evgeny! Friday June 04 2021 05:29, from Evgeny Chevtaev -> All: EC> Кто-нибудь знает, в каком виде в директиве listen указывать EC> IPv6-адрес? Это я про конфиг эхотага, конечно же... В директиве listen адрес IPv6 пишется в квадратных скобках [], и также опционально можно задать порт через двоеточие. EC> Если указывать как есть, то он считает, что всё после первого EC> двоеточия есть порт: Поэтому парсер binkd конфига и ищет '[', чтобы понять, что это IPv6, в котором двоеточие является частью адреса. EC> Если указывать в квадратных скобках, то пытается ресолвить: EC> ? 04 Jun 05:17:21 [1767] servmgr getaddrinfo: Name does not resolve EC> (8) Мой getaddrinfo() из линксового glibc отбраковывает адрес указанный вместе со скобочками []. Я не знаю, как у других это работает. Далее идёт мой патч, который выкидывает скобочки из адреса IPv6, и в таком виде у меня getaddrinfo() работает как ожидается. -+- a/readcfg.c +++ b/readcfg.c @@ -1650,12 +1650,14 @@ static int read_listen (KEYWORD *key, int wordcount, char **words) new_entry.port[0] = '\0'; if (words[i][0] == '[') { /* IPv6 */ - p = strchr(words[i], ']'); - if (p && p[1] == ':') + strncpy(new_entry.addr, words[i]+1, sizeof(new_entry.addr)); + new_entry.addr[sizeof(new_entry.addr)-1] = '\0'; + p = strchr(new_entry.addr, ']'); + if (p) { - snprintf(new_entry.port, sizeof(new_entry.port), "%s", p + 2); - p = strchr(new_entry.addr, ']'); - if (p) p[1] = '\0'; + p[0] = '\0'; + if (p[1] == ':') + snprintf(new_entry.port, sizeof(new_entry.port), "%s", p + 2); } } else if ((p = strchr(words[i], ':')) != NULL) { Ещё надо бы увеличить буфер для адреса, а то IPv6 адреса могут быть длинными, особенно если ещё порт указать. -+- a/readcfg.h +++ b/readcfg.h @@ -54,7 +54,7 @@ struct akachain struct listenchain { struct listenchain *next; - char addr[42]; + char addr[256]; char port[MAXSERVNAME + 1]; }; #if defined(WITH_ZLIB) || defined(WITH_BZLIB2) Best Regards, Nil
From: Nil A 2:5015/46 04 Jun 2021 06:47 +0300
To: Evgeny Chevtaev 2:5010/275
Subject: listen и IPv6
Hello, Evgeny! Friday June 04 2021 05:29, from Evgeny Chevtaev -> All: EC> Кто-нибудь знает, в каком виде в директиве listen указывать EC> IPv6-адрес? Это я про конфиг эхотага, конечно же... В директиве listen адрес IPv6 пишется в квадратных скобках [], и также опционально можно задать порт через двоеточие. EC> Если указывать как есть, то он считает, что всё после первого EC> двоеточия есть порт: Поэтому парсер binkd конфига и ищет '[', чтобы понять, что это IPv6, в котором двоеточие является частью адреса. EC> Если указывать в квадратных скобках, то пытается ресолвить: EC> ? 04 Jun 05:17:21 [1767] servmgr getaddrinfo: Name does not resolve EC> (8) Мой getaddrinfo() из линксового glibc отбраковывает адрес указанный вместе со скобочками []. Я не знаю, как у других это работает. Далее идёт мой патч, который выкидывает скобочки из адреса IPv6, и в таком виде у меня getaddrinfo() работает как ожидается. -+- a/readcfg.c +++ b/readcfg.c @@ -1650,12 +1650,13 @@ static int read_listen (KEYWORD *key, int wordcount, char **words) new_entry.port[0] = '\0'; if (words[i][0] == '[') { /* IPv6 */ - p = strchr(words[i], ']'); - if (p && p[1] == ':') + strncpy(new_entry.addr, words[i]+1, sizeof(new_entry.addr)); + p = strchr(new_entry.addr, ']'); + if (p) { - snprintf(new_entry.port, sizeof(new_entry.port), "%s", p + 2); - p = strchr(new_entry.addr, ']'); - if (p) p[1] = '\0'; + p[0] = '\0'; + if (p[1] == ':') + snprintf(new_entry.port, sizeof(new_entry.port), "%s", p + 2); } } else if ((p = strchr(words[i], ':')) != NULL) { Ещё надо бы увеличить буфер для адреса, а то IPv6 адреса могут быть длинными, особенно если ещё порт указать. -+- a/readcfg.h +++ b/readcfg.h @@ -54,7 +54,7 @@ struct akachain struct listenchain { struct listenchain *next; - char addr[42]; + char addr[256]; char port[MAXSERVNAME + 1]; }; #if defined(WITH_ZLIB) || defined(WITH_BZLIB2) Best Regards, Nil
From: Evgeny Chevtaev 2:5010/275 04 Jun 2021 03:29 +0300
To: All
Subject: listen и IPv6
Hi All! Кто-нибудь знает, в каком виде в директиве listen указывать IPv6-адрес? Это я про конфиг эхотага, конечно же... Если указывать как есть, то он считает, что всё после первого двоеточия есть порт: ? 04 Jun 04:56:50 [915] e2c0:574:5555:f1d0:2:5010:275: incorrect port (getaddrinfo: Service was not recognized for socket type) ? 04 Jun 04:56:50 [915] e2c0:574:5555:f1d0:2:5010:275: bad port number Если указывать в квадратных скобках, то пытается ресолвить: ? 04 Jun 05:17:21 [1767] servmgr getaddrinfo: Name does not resolve (8) Пока что прописал в hosts буквенное имя для адреса и сказал слушать его. With best regards, Evgeny
From: Alexander Kruglikov 2:5053/58 23 Apr 2021 14:19 +0300
To: Michael Dukelsky 2:5020/1042
Subject: segfault
Привет, Michael! *** Ответ на сообщение из CarbonArea (Мыльце для меня). 23 апр 21 13:44, Michael Dukelsky писал(а) к Alexander Kruglikov: MD>>> Внезапно binkd начал падать при любом изменении конфига. У меня MD>>> перлхуком подключён nodelist.pl. AK>> У меня такое было. Вылечилось добавлением AK>> rescan-delay 10 AK>> в конфиг. (workaround by 2:5023/24) MD> Это у меня в конфиге уже было прописано. Сделал 20 вместо 10 - MD> помогло. Спасибо. Пожалуйста! У меня было rescan-delay 5 - так же падало, поставил 10 - перестало падать. Дело было году в 2018м, следовательно OS была CentOS 6, скорее всего. С наилучшими пожеланиями, Alexander.
From: Michael Dukelsky 2:5020/1042 23 Apr 2021 13:44 +0300
To: Alexander Kruglikov 2:5053/58
Subject: segfault
Привет, Alexander! 23 April 2021 13:43, Alexander Kruglikov послал(а) письмо к Michael Dukelsky: MD>> Внезапно binkd начал падать при любом изменении конфига. У меня MD>> перлхуком подключён nodelist.pl. Binkd 1.1a-110 (May 26 2020 MD>> 13:09:14/Linux) Compilation flags: gcc, zlib, bzlib2, perl, MD>> https, ntlm, bwlim. MD>> Facilities: fts5004 ipv6 AK> У меня такое было. Вылечилось добавлением AK> rescan-delay 10 AK> в конфиг. (workaround by 2:5023/24) Это у меня в конфиге уже было прописано. Сделал 20 вместо 10 - помогло. Спасибо. Желаю успехов, Alexander! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Alexander Kruglikov 2:5053/58 23 Apr 2021 12:43 +0300
To: Michael Dukelsky 2:5020/1042
Subject: segfault
Привет, Michael! 23 апр 21 11:37, Michael Dukelsky писал(а) к All: MD> Внезапно binkd начал падать при любом изменении конфига. У меня MD> перлхуком подключён nodelist.pl. Binkd 1.1a-110 (May 26 2020 MD> 13:09:14/Linux) Compilation flags: gcc, zlib, bzlib2, perl, https, MD> ntlm, bwlim. MD> Facilities: fts5004 ipv6 У меня такое было. Вылечилось добавлением rescan-delay 10 в конфиг. (workaround by 2:5023/24) С наилучшими пожеланиями, Alexander.
From: Michael Dukelsky 2:5020/1042 23 Apr 2021 11:37 +0300
To: All
Subject: segfault
Привет, All! Внезапно binkd начал падать при любом изменении конфига. У меня перлхуком подключён nodelist.pl. Binkd 1.1a-110 (May 26 2020 13:09:14/Linux) Compilation flags: gcc, zlib, bzlib2, perl, https, ntlm, bwlim. Facilities: fts5004 ipv6 Лог binkd: + 23 Apr 01:10:41 [52432] Reloading configuration... - 23 Apr 01:10:41 [52432] Nodelist ~/fido/etc/nodelist/Z2DAILY.113 parsed, 1056 IP-nodes processed (0 sec) 23 Apr 01:10:41 [52432] previous config is no longer in use, unloading - 23 Apr 01:10:41 [52432] servmgr listen on *:binkp + 23 Apr 01:10:41 [52433] Reloading configuration... - 23 Apr 01:10:41 [52433] Nodelist ~/fido/etc/nodelist/Z2DAILY.113 parsed, 1056 IP-nodes processed (0 sec) 23 Apr 01:10:41 [52433] previous config is no longer in use, unloading ! 23 Apr 01:10:41 [52432] client manager (pid=52433) exited by signal 11 ! 23 Apr 01:10:41 [58698] got signal #15. ! 23 Apr 01:10:41 [63314] got signal #15. ! 23 Apr 01:10:41 [64092] got signal #15. В /var/log/messages: Apr 23 01:10:41 f1042 kernel: binkd[52433]: segfault at 7f4fbf9e9050 ip 00007f4fbee534bc sp 00007ffe38b265f0 error 4 in libc-2.17.so[7f4fbedd3000+1c4000] Здесь падение произошло при обновлении нодлиста, но любое изменение в конфиге приводит к такому же результату. Если отключить перлхук, падения прекращаются. Перлхук подключён давно, падений раньше не было. OS - CentOS 7.9.2009, Perl 5.16.3. Желаю успехов, All! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Dmitry Afanasiev 2:5030/1340 28 Mar 2021 11:38 +0300
To: Alexey Fayans 2:5030/1997@fidonet
Subject: Binkd 1.1a112 binaries for Win32, Win64, OS/2, DOS
Hi, Alexey! At 11 Mar 21 08:33:07, Alexey Fayans wrote to Alexey Vissarionov: AV>> УМВР. Из дискуссии я пока понял только то, что у кого-то недоступен AV>> немецкий сервер, а у кого-то недоступны московские. AF> Ты как-то очень странно следишь за дискуссией. Hесколько человек AF> подтвердили, что 3 из 4 DNS стабильно недоступны. Подтверждаю, ns[123] не отвечают по UDP на порту 53. MATPOCKuH