getaddrinfo () постоянно завершается ошибкой с EAI_AGAIN - PullRequest
1 голос
/ 21 февраля 2012

В моем коде я использую код следующим образом.

do
{
    r = getaddrinfo(host, service, &hints, ret);
}
while (r == EAI_AGAIN);

при непрерывном сбое тестирования getaddrinfo (), поэтому цикл не завершается должным образом.

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

Также, пожалуйста, дайте мне знать, по каким причинам «EAI_AGAIN» возвращается при вызове getaddrinfo ().

1 Ответ

0 голосов
/ 29 ноября 2017

Вот, по общему признанию, дикое предположение.

Мы также наблюдаем это в одноядерной встраиваемой системе со слабым энергопотреблением.

Я предполагаю (в нашем случае dnsmasq) работает в отдельном процессе, и по любой причине (возможно, потому что мыбегаем кругами, гоняясь за хвостами) у него недостаточно ресурсов (cpu / ram / ...), чтобы выполнить свою работу.

Дикая догадка при решении может заключаться в том, чтобы усыпить этот замкнутый цикл и позволить магии кеширования DNS на ресурсах, необходимых для его работы, работать.

Я дам вам знать, еслиэто работает.

...