#include <errno.h>
#include <arpa/inet.h>
#include <dirent.h>
+
+#include "rpcmisc.h"
#include "misc.h"
#include "statd.h"
#include "notlist.h"
static int
caller_is_localhost(struct svc_req *rqstp)
{
+ struct sockaddr_in *sin = nfs_getrpccaller_in(rqstp->rq_xprt);
struct in_addr caller;
- caller = svc_getcaller(rqstp->rq_xprt)->sin_addr;
+ caller = sin->sin_addr;
if (caller.s_addr != htonl(INADDR_LOOPBACK)) {
note(N_WARNING,
"Call to statd from non-local host %s",
e += sprintf(e, "%02x", 0xff & (argp->priv[i]));
if (e+1-buf != LINELEN) abort();
e += sprintf(e, " %s %s\n", mon_name, my_name);
- write(fd, buf, e-buf);
+ if (write(fd, buf, e-buf) != (e-buf)) {
+ note(N_WARNING, "writing to %s failed: errno %d (%s)",
+ path, errno, strerror(errno));
+ }
}
free(path);
/* Check if we're monitoring anyone. */
- if (!(clnt = rtnl)) {
+ if (rtnl == NULL) {
note(N_WARNING,
"Received SM_UNMON request from %s for %s while not "
"monitoring any hosts.", my_name, argp->mon_name);
return (&result);
}
+ clnt = rtnl;
/*
* OK, we are. Now look for appropriate entry in run-time list.
/* PRC: do the HA callout: */
ha_callout("del-client", mon_name, my_name, -1);
- xunlink(SM_DIR, clnt->dns_name, 1);
+ xunlink(SM_DIR, clnt->dns_name);
nlist_free(&rtnl, clnt);
return (&result);
result.state = MY_STATE;
- if (!(clnt = rtnl)) {
+ if (rtnl == NULL) {
note(N_WARNING, "Received SM_UNMON_ALL request from %s "
"while not monitoring any hosts", my_name);
return (&result);
}
+ clnt = rtnl;
while ((clnt = nlist_gethost(clnt, my_name, 1))) {
if (NL_MY_PROC(clnt) == argp->my_proc &&
temp = NL_NEXT(clnt);
/* PRC: do the HA callout: */
ha_callout("del-client", mon_name, my_name, -1);
- xunlink(SM_DIR, clnt->dns_name, 1);
+ xunlink(SM_DIR, clnt->dns_name);
nlist_free(&rtnl, clnt);
++count;
clnt = temp;