Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Dec 2025 09:54:02 +0000
From:      Alex Dupre <ale@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 96e139a7a40b - main - devel/apache-commons-daemon: fix bugs in PID handling
Message-ID:  <694bb83a.47786.2d4e7907@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by ale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=96e139a7a40b2eadd78ac673c7741de5aec7af8d

commit 96e139a7a40b2eadd78ac673c7741de5aec7af8d
Author:     Alex Dupre <ale@FreeBSD.org>
AuthorDate: 2025-12-24 09:52:58 +0000
Commit:     Alex Dupre <ale@FreeBSD.org>
CommitDate: 2025-12-24 09:53:57 +0000

    devel/apache-commons-daemon: fix bugs in PID handling
---
 devel/apache-commons-daemon/Makefile               |  1 +
 .../files/patch-native_jsvc-unix.c                 | 50 +++++++++++++++++++---
 2 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/devel/apache-commons-daemon/Makefile b/devel/apache-commons-daemon/Makefile
index 1ab02ad7f0c8..a2b026a2a2af 100644
--- a/devel/apache-commons-daemon/Makefile
+++ b/devel/apache-commons-daemon/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	commons-daemon
 DISTVERSION=	1.5.1
+PORTREVISION=	1
 CATEGORIES=	devel java
 MASTER_SITES=	https://archive.apache.org/dist/commons/daemon/source/:src \
 		https://archive.apache.org/dist/commons/daemon/binaries/:bin
diff --git a/devel/apache-commons-daemon/files/patch-native_jsvc-unix.c b/devel/apache-commons-daemon/files/patch-native_jsvc-unix.c
index 8b2486ff416f..15f5dfe86db5 100644
--- a/devel/apache-commons-daemon/files/patch-native_jsvc-unix.c
+++ b/devel/apache-commons-daemon/files/patch-native_jsvc-unix.c
@@ -1,6 +1,33 @@
---- native/jsvc-unix.c.orig	2025-01-06 00:00:00 UTC
+--- native/jsvc-unix.c.orig	2025-12-11 12:00:00 UTC
 +++ native/jsvc-unix.c
-@@ -731,18 +731,13 @@ static int wait_child(arg_data *args, int pid)
+@@ -608,11 +608,12 @@ retry:
+                 return 122;
+             }
+         }
+-        lseek(fd, SEEK_SET, 0);
+-        pidf = fdopen(fd, "r+");
+-        fprintf(pidf, "%d\n", (int)getpid());
+-        fflush(pidf);
+-        fclose(pidf);
++        char buf[32];
++        int len = snprintf(buf, sizeof(buf), "%d\n", (int)getpid());
++        lseek(fd, 0, SEEK_SET);
++        ftruncate(fd, 0);
++        write(fd, buf, len);
++        fsync(fd);
+         if (lockf(fd, F_ULOCK, 0)) {
+             log_error("check_pid: Failed to unlock PID file [%s] with file descriptor [%d] after reading due to [%d]",
+                     args->pidf, fd, errno);
+@@ -673,7 +674,7 @@ static int get_pidf(arg_data *args, bool quiet)
+     int i;
+     char buff[80];
+ 
+-    fd = open(args->pidf, O_RDONLY, 0);
++    fd = open(args->pidf, O_RDWR, 0);
+     if (!quiet)
+         log_debug("get_pidf: %d in %s", fd, args->pidf);
+     if (fd < 0) {
+@@ -755,18 +756,13 @@ static int wait_child(arg_data *args, int pid)
   */
  static int wait_child(arg_data *args, int pid)
  {
@@ -21,7 +48,16 @@
      while (count > 0) {
          sleep(1);
          /* check if the controler is still running */
-@@ -781,7 +776,6 @@ static int wait_child(arg_data *args, int pid)
+@@ -778,7 +774,7 @@ static int wait_child(arg_data *args, int pid)
+         }
+ 
+         /* check if the pid file process exists */
+-        fd = open(args->pidf, O_RDONLY);
++        fd = open(args->pidf, O_RDWR);
+         if (fd < 0 && havejvm) {
+             /* something has gone wrong the JVM has stopped */
+             return 1;
+@@ -812,7 +808,6 @@ static int wait_child(arg_data *args, int pid)
                  }
              }
          }
@@ -29,7 +65,7 @@
          count--;
      }
      /* It takes more than the wait time to start,
-@@ -915,11 +909,11 @@ static int child(arg_data *args, home_data *data, uid_
+@@ -946,11 +941,11 @@ static int child(arg_data *args, home_data *data, uid_
      create_tmp_file(args);
      while (!stopping) {
  #if defined(OSD_POSIX)
@@ -43,7 +79,7 @@
  #endif
          if (doreopen) {
              doreopen = false;
-@@ -938,7 +932,7 @@ static int child(arg_data *args, home_data *data, uid_
+@@ -969,7 +964,7 @@ static int child(arg_data *args, home_data *data, uid_
          return 6;
  
      if (doreload == true)
@@ -52,7 +88,7 @@
      else
          ret = 0;
  
-@@ -1348,10 +1342,10 @@ static int run_controller(arg_data *args, home_data *d
+@@ -1385,10 +1380,10 @@ static int run_controller(arg_data *args, home_data *d
              if (args->vers != true && args->chck != true && status != 122)
                  remove_pid_file(args, pid);
  
@@ -65,7 +101,7 @@
                      if (args->restarts == 0) {
                          log_debug("Service failure, restarts disabled");
                          return 1;
-@@ -1363,7 +1357,7 @@ static int run_controller(arg_data *args, home_data *d
+@@ -1400,7 +1395,7 @@ static int run_controller(arg_data *args, home_data *d
                      log_debug("Reloading service");
                      restarts++;
                      /* prevent looping */


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?694bb83a.47786.2d4e7907>