Многоадресная передача UDP повреждается после обновления ядра

ls использование программы isatty() знать, является ли fd 1 tty или чем-то еще (канал, файл, и т.д. …). От man 3 isatty:

int isatty(int fd);

ОПИСАНИЕ
isatty() функционируйте тесты ли fd открытый дескриптор файла, относящийся к терминалу


Updade: строка 1538 в ls.c от coreutils (пересмотр мерзавца 43a987e1):

  if (isatty (STDOUT_FILENO))
    {
      format = many_per_line;
      /* See description of qmark_funny_chars, above.  */
      qmark_funny_chars = true;
    }

(many_per_line должно быть самодокументированным.)

3
06.10.2011, 13:58
2 ответа

После 15 часов отладки я нашел проблему: программа попыталась отправить чрезвычайно большие пакеты, где часто размер, переданный sendto, превышал максимальный позволенный размер для пакетов UDP 2^16 байты. Теперь я добавил некоторую логику, которые устанавливают максимальный размер пакета, переданный sendto к 50 000, и все работает снова. Действительно странно, что это ранее работало с более старым ядром и Windows XP и 7 вообще.

2
27.01.2020, 21:29

Сравните .config от 2.6.11 и 2.6.15. Мое предположение - то, что на Вашем новом ядре Вы имеете CONFIG_IP_MULTICAST=n (или возможно m). Это должно быть y.

0
27.01.2020, 21:29
  • 1
    Нет, это установлено на 'y' в обоих. крон –  fschmitt 06.09.2011, 09:41

Теги

Похожие вопросы