OberonCore
https://forum.oberoncore.ru/

Предлагаю поправку CommTCP
https://forum.oberoncore.ru/viewtopic.php?f=23&t=6649
Страница 1 из 1

Автор:  adimetrius [ Пятница, 21 Август, 2020 11:48 ]
Заголовок сообщения:  Предлагаю поправку CommTCP

Коллеги,

насколько мне известно, ОДЗ номеров TCP-портов 0..65535. Однако PROCEDURE CommTCP.NewStream проверяет номер порта только на >= 0. А если номер порта > 65535, поток все равно благополучно создается, но ессно порт там абы какой.

Предлагаю усилить проверку:
было:
Код:
IF ok & (portnr >= 0) THEN   (* only non-negative port numbers are legal *)

сделать:
Код:
IF ok & (portnr >= 0) & (portnr < 65536) THEN   (* portnr ∈ 0..65535 *)

В продолжении процедуры уже есть грамотная обработка ошибок, если порт некорректный - возникает ошибка invalidLocalAdr.

Автор:  Александр Ильин [ Пятница, 21 Август, 2020 12:18 ]
Заголовок сообщения:  Re: Предлагаю поправку CommTCP

Предлагаю также использовать идиоматический порядок записи при проверке вхождения в диапазон:
Код:
IF ok & (0 <= portnr) & (portnr <= 65535) THEN

(тогда и комментарий в исходнике не нужен).

Автор:  adimetrius [ Пятница, 21 Август, 2020 16:58 ]
Заголовок сообщения:  Re: Предлагаю поправку CommTCP

Ага

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/