X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fmountd%2Fcache.c;h=3a166419e4e7892cce9970da192b95e5de9f24ec;hp=96492b8f5b467ec55ddc408eeb798339a8ce47f0;hb=e7c106f6008ab11558e595585fb72872b21ae624;hpb=e09fbc8933961a0a774217ef32d73da373ddc670 diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index 96492b8..3a16641 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -67,6 +67,8 @@ void auth_unix_ip(FILE *f) if (inet_aton(ipaddr, &addr)==0) return; + auth_reload(); + /* addr is a valid, interesting address, find the domain name... */ client = client_compose(addr); @@ -138,6 +140,8 @@ void nfsd_fh(FILE *f) break; } + auth_reload(); + /* Now determine export point for this fsid/domain */ for (i=0 ; i < MCL_MAXTYPES; i++) { for (exp = exportlist[i]; exp; exp = exp->m_next) { @@ -236,6 +240,8 @@ void nfsd_export(FILE *f) if (qword_get(&cp, path, strlen(lbuf)) <= 0) goto out; + auth_reload(); + /* now find flags for this export point in this domain */ for (i=0 ; i < MCL_MAXTYPES; i++) { for (exp = exportlist[i]; exp; exp = exp->m_next) { @@ -376,6 +382,7 @@ cache_get_filehandle(nfs_export *exp, int len, char *p) FILE *f = fopen("/proc/fs/nfsd/filehandle", "r+"); char buf[200]; char *bp = buf; + int failed; static struct nfs_fh_len fh; if (!f) @@ -388,7 +395,9 @@ cache_get_filehandle(nfs_export *exp, int len, char *p) qword_printint(f, len); qword_eol(f); - if (fgets(buf, sizeof(buf), f) == NULL) + failed = (fgets(buf, sizeof(buf), f) == NULL); + fclose(f); + if (failed) return NULL; memset(fh.fh_handle, 0, sizeof(fh.fh_handle)); fh.fh_size = qword_get(&bp, fh.fh_handle, NFS3_FHSIZE);