Передача имени хоста длиной более 255 символов в getaddrinfo приводит к ошибке getaddrinfo: сбой выделения памяти, почему? - PullRequest
3 голосов
/ 26 мая 2010

В настоящее время я обновляю наше программное обеспечение для поддержки ipv6, а пока расширяю поля имени хоста / ip до максимального размера имени хоста. В документации Sun кажется, что это может быть до 1025 (netdb.h: #define NI_MAXHOST 1025 - это рекомендуемое определение выделения имени хоста), но когда я передаю имя хоста более 255 в getaddrinfo, я получаю «getaddrinfo не удалось: распределение памяти провал». Я тестирую на коробке Sol10. Идеи?

Ответы [ 2 ]

4 голосов
/ 27 мая 2010

NI_MAXHOST для getnameinfo (), getaddrinfo () использует MAXHOSTNAMELEN. (см. здесь ), и это кажется довольно жестко закодированным - и вы мало что можете с этим поделать.

Точно, почему они отличаются, я не знаю, но смотрите, например. также здесь / здесь для получения некоторой информации о максимальной длине имени хоста.

0 голосов
/ 27 мая 2010

У вас нет выбора: это ограничение в 255 символов является стандартным. Позвольте мне процитировать RFC 1123 , раздел 2.1:

Программное обеспечение хоста ДОЛЖНО обрабатывать имена хостов длиной до 63 символов и ДОЛЖЕН обрабатывать имена хостов длиной до 255 символов.

...