git: 7bad3c3e5f1c - main - ctld: Write the pidfile once after forking

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 05 Feb 2025 19:55:38 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=7bad3c3e5f1c8b4d9e620bb2943299d4a30f3c86

commit 7bad3c3e5f1c8b4d9e620bb2943299d4a30f3c86
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-02-05 19:53:14 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-02-05 19:55:16 +0000

    ctld: Write the pidfile once after forking
    
    Don't rewrite the pidfile each time main_loop is called.
    
    PR:             284282
    Reported by:    asomers
    Reviewed by:    asomers
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D48768
---
 usr.sbin/ctld/ctld.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/usr.sbin/ctld/ctld.c b/usr.sbin/ctld/ctld.c
index 06307d6cdd9a..3b48d33b5966 100644
--- a/usr.sbin/ctld/ctld.c
+++ b/usr.sbin/ctld/ctld.c
@@ -2381,7 +2381,7 @@ handle_connection(struct portal *portal, int fd,
 }
 
 static void
-main_loop(struct conf *conf, bool dont_fork)
+main_loop(bool dont_fork)
 {
 	struct kevent kev;
 	struct portal *portal;
@@ -2393,8 +2393,6 @@ main_loop(struct conf *conf, bool dont_fork)
 #endif
 	int error, client_fd;
 
-	pidfile_write(conf->conf_pidfh);
-
 	for (;;) {
 		if (sighup_received || sigterm_received || timed_out())
 			return;
@@ -2762,12 +2760,14 @@ main(int argc, char **argv)
 	conf_delete(oldconf);
 	oldconf = NULL;
 
+	pidfile_write(newconf->conf_pidfh);
+
 	/* Schedule iSNS update */
 	if (!TAILQ_EMPTY(&newconf->conf_isns))
 		set_timeout((newconf->conf_isns_period + 2) / 3, false);
 
 	for (;;) {
-		main_loop(newconf, dont_daemonize);
+		main_loop(dont_daemonize);
 		if (sighup_received) {
 			sighup_received = false;
 			log_debugx("received SIGHUP, reloading configuration");