X-Git-Url: http://dolda2000.com/gitweb/?p=icmp-dn.git;a=blobdiff_plain;f=nss-icmp.c;h=cdf2a6f690da17b92ed9df51a7a2a7bb90b464d7;hp=b9f10139ee04e00869ef52f91cf452bd1ebc140e;hb=f416a8cdca3b44007c0f63e0dc588214ec5ecb36;hpb=15a913c297d12c0a4b14c01437420ac0df8b6675 diff --git a/nss-icmp.c b/nss-icmp.c index b9f1013..cdf2a6f 100644 --- a/nss-icmp.c +++ b/nss-icmp.c @@ -178,9 +178,13 @@ enum nss_status _nss_icmp_gethostbyaddr_r(const void *addr, socklen_t len, int a return(NSS_STATUS_UNAVAIL); } - for(cc = cache; cc != NULL; cc = cc->next) { - if((cc->af == af) && (cc->addrlen == len) && !memcmp(cc->addr, addr, len)) - break; + if(usecache) { + for(cc = cache; cc != NULL; cc = cc->next) { + if((cc->af == af) && (cc->addrlen == len) && !memcmp(cc->addr, addr, len)) + break; + } + } else { + cc = NULL; } if(cc == NULL) { @@ -272,7 +276,8 @@ enum nss_status _nss_icmp_gethostbyaddr_r(const void *addr, socklen_t len, int a } } if(an == 0) { - cachenotfound(addr, len, af); + if(usecache) + cachenotfound(addr, len, af); *h_errnop = TRY_AGAIN; /* XXX: Is this correct? */ return(NSS_STATUS_NOTFOUND); } @@ -311,7 +316,7 @@ enum nss_status _nss_icmp_gethostbyaddr_r(const void *addr, socklen_t len, int a result->h_addrtype = af; result->h_length = len; - if(cc == NULL) + if((cc == NULL) && usecache) updatecache(result); *h_errnop = NETDB_SUCCESS;