]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/statd/svc_run.c
Define and use HIAVE_IFADDRS_H
[nfs-utils.git] / utils / statd / svc_run.c
index e2d7c975df91a7014e55de09277ac833d0558f76..67bb05cccfed5a486f8e294a5f575a3c961b2b43 100644 (file)
  * This is the RPC server side idle loop.
  * Wait for input, call server program.
  */
-#include "config.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <errno.h>
 #include <time.h>
 #include "statd.h"
@@ -88,6 +92,9 @@ my_svc_run(void)
                if (svc_stop)
                        return;
                if (re_notify) {
+                       change_state();
+                       dprintf(N_DEBUG, "Notifying...(new state %d)",
+                                                               MY_STATE);
                        notify_hosts();
                        re_notify = 0;
                }
@@ -107,7 +114,9 @@ my_svc_run(void)
                                                        tv.tv_sec);
                        selret = select(FD_SETSIZE, &readfds,
                                (void *) 0, (void *) 0, &tv);
-               } else {
+               } else if (run_mode & MODE_NOTIFY_ONLY)
+                       return;
+               else {
                        dprintf(N_DEBUG, "Waiting for client connections.");
                        selret = select(FD_SETSIZE, &readfds,
                                (void *) 0, (void *) 0, (struct timeval *) 0);
@@ -118,7 +127,8 @@ my_svc_run(void)
                        if (errno == EINTR || errno == ECONNREFUSED
                         || errno == ENETUNREACH || errno == EHOSTUNREACH)
                                continue;
-                       note(N_ERROR, "my_svc_run() - select: %m");
+                       note(N_ERROR, "my_svc_run() - select: %s",
+                               strerror (errno));
                        return;
 
                case 0: