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