cvs commit: src/lib/libc/net res_query.c

Nate Lawson njl at FreeBSD.org
Tue Apr 20 17:56:39 PDT 2004


njl         2004/04/20 17:56:38 PDT

  FreeBSD src repository

  Modified files:
    lib/libc/net         res_query.c 
  Log:
  MFdragonfly:  resolver fix for timeouts on unqualified hostnames
  
    res_search only incremented got_servfail for h_errno == TRY_AGAIN *AND*
    hp->rcode == SERVFAIL.  However, there are cases such as timeouts where
    rcode is not always set to SERVFAIL.  This leads to inconsistent nameserver
    operation during multi-domain and truncated dot searches, especially during
    booting when portions of the network are being brought up simultanious with
    dns lookups.
  
    This patch attempts to correct the problem by unconditionally terminating
    the search if TRY_AGAIN is returned (after res_query has gone through all
    retries and name servers) instead of trying other domain elements in the
    domain seach path.
  
    This patch should fix reported problems (which I can reproduce) with some
    NFS mounts failing during boot.  This occured because mount_nfs thought the
    host name lookup returned a definitive failure using a non-dotted host name
    when, in fact, it timed out on the first part (host.search.domain.name) and
    got a definitive host-not-found response on the second part (host.).
  
    Generally speaking, search path name server timeouts can exceed 60 seconds
    per element and most machines which consistently timeout on earlier portions
    of a search path are effectively non-operational due to the imposed delays.
    It is more important for DNS lookups to return the proper error code then
    to be able to recover a valid lookup in later portions of the search path
    in these situations.
  
  Obtained from:  DragonFly
  MFC after:      3 weeks
  
  Revision  Changes    Path
  1.28      +18 -5     src/lib/libc/net/res_query.c


More information about the cvs-all mailing list