C getaddrinfo () не разрешает имя - PullRequest
0 голосов
/ 12 ноября 2010

У меня есть программа (написанная на C), которая использует getaddrinfo(), и ее первый параметр - это имя хоста, для которого я хочу получить информацию об адресе, скажем, это «домен». В моем /etc/hosts файле на той же машине я вижу, что «домен» должен разрешать 192.168.1.200. Когда я запускаю программу, она каждый раз зависает на этом звонке и не может получить информацию об адресе. Однако, если я заменим «домен» фактическим IP-адресом, он будет работать просто отлично.

Кстати, эта проблема не существовала неделю или около того назад, это новая проблема, которая внезапно подняла свою уродливую голову. Я совершенно уверен, что что-то должно было быть сделано с этой машиной на прошлой неделе, и я попытался проверить это с другими нашими сотрудниками, но они также не знают, почему это произойдет.

Итак, мой вопрос: есть ли у кого-нибудь идеи, что это может внезапно произойти? Что я могу проверить, чтобы убедиться, что оно настроено так, как должно быть? Заранее спасибо.

1 Ответ

1 голос
/ 12 ноября 2010

Вы используете Linux?Я предполагаю, что вы что-то напутали с помощью libnss mess, который glibc использует для маршрутизации всех поисков его имен (имен хостов, имен пользователей, групп и т. Д.), Возможно, из-за неудачного обновления glibc.Попробуйте запустить вашу программу с strace и посмотрите, пытается ли она (и не удается) открыть libnss_* файлы.Также посмотрите в /etc/nsswitch.conf, чтобы убедиться, что строка hosts: гласит hosts: files dns.man nsswitch.conf может быть полезным.

...