2009-06-11 6 views

Répondre

2

Pas vraiment une réponse, mais utiliser getaddrinfo(3) à la place :)
En ce qui concerne nscd est, voici de la page de manuel nscd.conf(5):

 
enable-cache service <yes|no> 
    Enables or disables the specified service cache. 

Vous devez savoir ce que le service correct pour DNS est.

+1

le service serait "hosts" – hayalci

+0

Merci, cela fait longtemps que je n'ai pas joué avec ceux-ci :) –

+0

Merci pour le getaddrinfo() - il semble qu'il ne soit pas mis en cache par nscd en effet (au moins dans la page man)? Je préfère ne pas désactiver le cache du tout, car il est seulement nécessaire pour une application particulière. – SyBer

1

ne pas utiliser nscd? :)

Sérieusement, si vous comptez sur gethostbyname(), vous pouvez utiliser libresolv et appeler res_gethostbyname() à la place.

Bien que cela soit considéré comme une faille de sécurité par djb au moins :)

Pensez à utiliser la djbdns client library. Très sécurisé, rapide et solide.

+0

Merci pour le conseil, mais il semble un peu vieux (2001)? En outre, toute idée si la bibliothèque de niveau d'en-tête, ou les bibliothèques peuvent être statiques? – SyBer

+0

Oui c'est vieux, mais très solide. Cependant, je ne connais pas le niveau d'en-tête/lien statique, mais la source est dans le domaine public, donc vous pouvez l'expérimenter. –

+0

Et, ce n'est pas plus vieux que gethostbyname() :) –

0

Je ne pense pas que gethostbyname cache vraiment les entrées. C'est probablement votre DNS-cache lui-même.

+0

En fait, il utilise le cache nscd. Le problème avec ceci a causé quand l'IP change - il prend beaucoup de temps (10 min par défaut) le nscd actualise le cache et essaie de le résoudre à nouveau. – SyBer

1

Appelez res_init() avant gethostbyname(). Il semble ok.

Questions connexes