git: 9306d0449ba6 - main - ctld: Simplify pidfile rename handling in conf::apply

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 18 May 2026 19:51:15 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=9306d0449ba6fffadf08d5ab61aea596369e03f4

commit 9306d0449ba6fffadf08d5ab61aea596369e03f4
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-05-18 19:49:57 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-05-18 19:49:57 +0000

    ctld: Simplify pidfile rename handling in conf::apply
    
    Explicitly copy the pidfile path from the initial configuration file
    to the kernel-derived configuration to avoid having to check if the
    old path is empty as a special case in conf::apply().
    
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D56533
---
 usr.sbin/ctld/ctld.cc | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/usr.sbin/ctld/ctld.cc b/usr.sbin/ctld/ctld.cc
index 24b02a936670..9bdf15976911 100644
--- a/usr.sbin/ctld/ctld.cc
+++ b/usr.sbin/ctld/ctld.cc
@@ -1973,22 +1973,14 @@ conf::apply(struct conf *oldconf)
 		log_init(conf_debug);
 	}
 
-	/*
-	 * Rename the pidfile if the pathname changes.  On startup,
-	 * oldconf created via conf_new_from_kernel will not contain a
-	 * valid pidfile_path.
-	 */
-	if (!oldconf->conf_pidfile_path.empty()) {
-		if (oldconf->conf_pidfile_path != conf_pidfile_path) {
-			/* pidfile has changed.  rename it */
-			log_debugx("moving pidfile to %s",
+	/* Rename the pidfile if the pathname changes. */
+	if (oldconf->conf_pidfile_path != conf_pidfile_path) {
+		log_debugx("moving pidfile to %s", conf_pidfile_path.c_str());
+		if (rename(oldconf->conf_pidfile_path.c_str(),
+		    conf_pidfile_path.c_str()) != 0) {
+			log_err(1, "renaming pidfile %s -> %s",
+			    oldconf->conf_pidfile_path.c_str(),
 			    conf_pidfile_path.c_str());
-			if (rename(oldconf->conf_pidfile_path.c_str(),
-				conf_pidfile_path.c_str()) != 0) {
-				log_err(1, "renaming pidfile %s -> %s",
-				    oldconf->conf_pidfile_path.c_str(),
-				    conf_pidfile_path.c_str());
-			}
 		}
 	}
 
@@ -2748,6 +2740,9 @@ main(int argc, char **argv)
 		newconf->set_debug(debug);
 	}
 
+	/* Reuse the pidfile path from the configuration file. */
+	oldconf->set_pidfile_path(newconf->pidfile_path());
+
 	if (!newconf->add_pports(kports))
 		log_errx(1, "Error associating physical ports; exiting");