Se ottengo un "Nome o servizio sconosciuto" iniziale (EAI_NONAME), la prossima chiamata a getaddrinfo() sembra andare direttamente al DNS invece di controllare prima la cache (i log nscd non mostrano tentativi di ricerca, tcpdump mostra il traffico al server DNS). Se la prima chiamata riesce a ottenere un indirizzo, da quel momento in poi tutte le chiamate getaddrinfo() andranno prima su nscd, come previsto.utilizzando getaddrinfo() controlla solo la cache nscd la prima volta se DNS scade
Sto compilando contro glibc-2.13 per arm linux. Nel mio rc.d, nscd viene avviato prima del mio demone. nscd è impostato per disabilitare le cache condivise e mantenere una cache dell'host. Sto usando il nscd da busybox (0.47). nsswitch.conf è impostato in modo che l'host controlli cache/files/dns. hosts.conf è impostato per controllare i file/bind.
Il mio demone chiama getaddrinfo().
Ho registri di debug per nscd in esecuzione, e mostrano che il client ha iniziato a leggere la risposta DNS si chiude con un errore "Broken Pipe".
Dopodiché mostrerà i tentativi GAI da altri demoni che tentano di utilizzare la cache (quindi so che non è nscd bloccato o altro), ma il daemon che ha ottenuto EAI_NONAME non contatta mai nscd per eseguire una ricerca nella cache.
Se riavvio il daemon, ottengo lo stesso comportamento, se la prima query DNS scade di nuovo.
C'è qualcosa in glibc che sta invalidando il collegamento del mio demone alla cache? C'è un modo per ricollegare il mio demone alla cache senza riavviarlo (simile a forzare il caricamento di un resolv.conf tramite res_init())?
"* ... c'è un modo per ricollegare il mio demone alla cache senza riavviarlo ... *" hai provato a far sì che il demone chiamasse 'getaddrinfo()' "** really **" spesso. Diciamo 100 ++ volte? Provalo e monitora l'accesso a 'nscd'. Non posso testarlo qui, ma ci potrebbe essere una possibilità che il tuo demone decida di testare nuovamente la connessione 'nscd' e se da quel momento in poi lo utilizzerà. – alk
"* Se riavvio il demone, ottengo lo stesso comportamento ... *" ti stai riferendo al tuo demone qui, non a 'nscd', vero? – alk
Btw: Ho ricevuto l'idea sopra menzionata dall'ispezione delle fonti di eglibc. – alk