extern void cache_open(void);
extern struct nfs_fh_len *cache_get_filehandle(nfs_export *exp, int len, char *p);
-extern void cache_export(nfs_export *exp);
+extern int cache_export(nfs_export *exp);
extern void my_svc_run(void);
*/
struct nfs_fh_len *fh;
- cache_export(exp);
+ if (cache_export(exp)) {
+ *error = NFSERR_ACCES;
+ return NULL;
+ }
fh = cache_get_filehandle(exp, v3?64:32, p);
if (fh == NULL)
*error = NFSERR_ACCES;
get_exportlist(void)
{
static exports elist = NULL;
+ static time_t etime = 0;
+ time_t atime;
struct exportnode *e, *ne;
struct groupnode *g, *ng, *c, **cp;
nfs_export *exp;
int i;
- if (!auth_reload() && elist)
+ atime = auth_reload();
+ if (elist && atime == etime)
return elist;
+ etime = atime;
+
for (e = elist; e != NULL; e = ne) {
ne = e->ex_next;
for (g = e->ex_groups; g != NULL; g = ng) {