Author: pjd
Date: Tue Jan 10 22:24:57 2012
New Revision: 229944
URL: http://svn.freebsd.org/changeset/base/229944

Log:
  Don't touch pidfiles when running in foreground. Before that change we
  would create an empty pidfile on start and check if it changed on SIGHUP.
  
  MFC after:    3 days

Modified:
  head/sbin/hastd/hastd.c

Modified: head/sbin/hastd/hastd.c
==============================================================================
--- head/sbin/hastd/hastd.c     Tue Jan 10 22:22:35 2012        (r229943)
+++ head/sbin/hastd/hastd.c     Tue Jan 10 22:24:57 2012        (r229944)
@@ -68,6 +68,8 @@ static struct hastd_config *cfg;
 bool sigexit_received = false;
 /* PID file handle. */
 struct pidfh *pfh;
+/* Do we run in foreground? */
+static bool foreground;
 
 /* How often check for hooks running for too long. */
 #define        REPORT_INTERVAL 5
@@ -531,7 +533,7 @@ hastd_reload(void)
        /*
         * Check if pidfile's path has changed.
         */
-       if (strcmp(cfg->hc_pidfile, newcfg->hc_pidfile) != 0) {
+       if (!foreground && strcmp(cfg->hc_pidfile, newcfg->hc_pidfile) != 0) {
                newpfh = pidfile_open(newcfg->hc_pidfile, 0600, &otherpid);
                if (newpfh == NULL) {
                        if (errno == EEXIST) {
@@ -1155,7 +1157,6 @@ main(int argc, char *argv[])
        struct hastd_listen *lst;
        const char *pidfile;
        pid_t otherpid;
-       bool foreground;
        int debuglevel;
        sigset_t mask;
 
@@ -1220,16 +1221,23 @@ main(int argc, char *argv[])
                        pjdlog_exitx(EX_CONFIG, "Pidfile path is too long.");
                }
        }
-       pfh = pidfile_open(cfg->hc_pidfile, 0600, &otherpid);
-       if (pfh == NULL) {
-               if (errno == EEXIST) {
-                       pjdlog_exitx(EX_TEMPFAIL,
-                           "Another hastd is already running, pidfile: %s, 
pid: %jd.",
-                           cfg->hc_pidfile, (intmax_t)otherpid);
-               }
-               /* If we cannot create pidfile for other reasons, only warn. */
-               pjdlog_errno(LOG_WARNING, "Unable to open or create pidfile %s",
-                   cfg->hc_pidfile);
+
+       if (!foreground) {
+               pfh = pidfile_open(cfg->hc_pidfile, 0600, &otherpid);
+               if (pfh == NULL) {
+                       if (errno == EEXIST) {
+                               pjdlog_exitx(EX_TEMPFAIL,
+                                   "Another hastd is already running, pidfile: 
%s, pid: %jd.",
+                                   cfg->hc_pidfile, (intmax_t)otherpid);
+                       }
+                       /*
+                        * If we cannot create pidfile for other reasons,
+                        * only warn.
+                        */
+                       pjdlog_errno(LOG_WARNING,
+                           "Unable to open or create pidfile %s",
+                           cfg->hc_pidfile);
+               }
        }
 
        /*
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to