slackware-current/source/n/NetworkManager/patches/dhcpcd.graceful.exit.patch
Patrick J Volkerding 6a20480259 Fri Feb 23 02:27:35 UTC 2024
a/aaa_libraries-15.1-x86_64-26.txz:  Rebuilt.
  Upgraded: libacl.so.1.1.2302, libattr.so.1.1.2502, liblzma.so.5.4.6,
  libpcre2-8.so.0.12.0, libz.so.1.3.1, libcares.so.2.11.0,
  libexpat.so.1.9.0, libffi.so.8.1.4, libglib-2.0.so.0.7800.4,
  libgmodule-2.0.so.0.7800.4, libgobject-2.0.so.0.7800.4,
  libgthread-2.0.so.0.7800.4, libidn.so.12.6.5, libidn2.so.0.4.0,
  libpng16.so.16.41.0, libpsl.so.5.3.5, libtdb.so.1.4.10, libusb-1.0.so.0.4.0.
a/etc-15.1-x86_64-5.txz:  Rebuilt.
  Added UID 214 and GID 214 for avahi.
a/gettext-0.22.5-x86_64-1.txz:  Upgraded.
a/pkgtools-15.1-noarch-9.txz:  Rebuilt.
  setup.services: support rc.avahidaemon and rc.avahidnsconfd.
a/sysvinit-scripts-15.1-noarch-13.txz:  Rebuilt.
  rc.M: start (if executable) rc.avahidaemon and rc.avahidnsconfd.
ap/cups-2.4.7-x86_64-2.txz:  Rebuilt.
  Recompiled against avahi.
ap/cups-filters-1.28.17-x86_64-4.txz:  Rebuilt.
  Recompiled against avahi.
ap/hplip-3.23.12-x86_64-1.txz:  Upgraded.
  Compiled against avahi.
ap/xmltoman-0.6-x86_64-1.txz:  Added.
  This is needed to generate manpages for avahi.
d/distcc-3.4-x86_64-4.txz:  Rebuilt.
  Recompiled against avahi.
d/gettext-tools-0.22.5-x86_64-1.txz:  Upgraded.
l/avahi-20240220_dffd549-x86_64-1.txz:  Added.
  It was either this, or drop (or fork) hplip. We'll enjoy it in the long run.
  Thanks to David Somero for the original build script, and to Robby Workman
  for years of maintenance.
  Signed-off-by: volkerdi
  Acked-by: alienBOB
l/libdaemon-0.14-x86_64-1.txz:  Added.
  This is needed by avahi.
l/pipewire-1.0.3-x86_64-5.txz:  Rebuilt.
  Recompiled against avahi.
l/pulseaudio-17.0-x86_64-3.txz:  Rebuilt.
  Recompiled against avahi.
n/NetworkManager-1.46.0-x86_64-1.txz:  Upgraded.
n/netatalk-3.1.18-x86_64-2.txz:  Rebuilt.
  Recompiled against avahi.
n/samba-4.19.5-x86_64-2.txz:  Rebuilt.
  Recompiled against avahi.
xap/pidgin-2.14.12-x86_64-3.txz:  Rebuilt.
  Recompiled against avahi.
xap/sane-1.2.1-x86_64-3.txz:  Rebuilt.
  Recompiled against avahi.
extra/bash-completion/bash-completion-2.12.0-noarch-1.txz:  Upgraded.
2024-02-23 03:58:34 +01:00

88 lines
3.4 KiB
Diff

--- ./src/core/dhcp/nm-dhcp-client.h.orig 2024-02-22 00:44:13.335158315 -0600
+++ ./src/core/dhcp/nm-dhcp-client.h 2024-02-22 19:41:56.134066083 -0600
@@ -249,7 +249,7 @@
/* Backend helpers for subclasses */
void nm_dhcp_client_stop_existing(const char *pid_file, const char *binary_name);
-void nm_dhcp_client_stop_pid(pid_t pid, const char *iface);
+void nm_dhcp_client_stop_pid(pid_t pid, const char *iface, int sig);
void nm_dhcp_client_start_timeout(NMDhcpClient *self);
--- ./src/core/dhcp/nm-dhcp-dhcpcd.c.orig 2024-02-22 19:41:56.134066083 -0600
+++ ./src/core/dhcp/nm-dhcp-dhcpcd.c 2024-02-22 19:47:18.556073296 -0600
@@ -158,31 +158,17 @@
{
NMDhcpDhcpcd *self = NM_DHCP_DHCPCD(client);
pid_t pid;
- int sig, errsv;
+ int sig;
pid = nm_dhcp_client_get_pid(client);
if (pid > 1) {
sig = release ? SIGALRM : SIGTERM;
_LOGD("sending %s to dhcpcd pid %d", sig == SIGALRM ? "SIGALRM" : "SIGTERM", pid);
- /* dhcpcd-9.x features privilege separation.
- * It's not our job to track all these processes so we rely on dhcpcd
- * to always cleanup after itself.
- * Because it also re-parents itself to PID 1, the process cannot be
- * reaped or waited for.
- * As such, just send the correct signal.
- */
- if (kill(pid, sig) == -1) {
- errsv = errno;
- _LOGE("failed to kill dhcpcd %d:%s", errsv, nm_strerror_native(errsv));
- }
-
- /* When this function exits NM expects the PID to be -1.
- * This means we also need to stop watching the pid.
- * If we need to know the exit status then we need to refactor NM
- * to allow a non -1 to mean we're waiting to exit still.
- */
+ /* We need to remove the watch before stopping the process */
nm_dhcp_client_stop_watch_child(client, pid);
+
+ nm_dhcp_client_stop_pid(pid, nm_dhcp_client_get_iface(client), sig);
}
}
--- ./src/core/dhcp/nm-dhcp-dhclient.c.orig 2024-02-22 00:44:13.335158315 -0600
+++ ./src/core/dhcp/nm-dhcp-dhclient.c 2024-02-22 19:41:56.134066083 -0600
@@ -622,7 +622,7 @@
if (dhclient_start(client, FALSE, TRUE, FALSE, &rpid, NULL)) {
/* Wait a few seconds for the release to happen */
- nm_dhcp_client_stop_pid(rpid, nm_dhcp_client_get_iface(client));
+ nm_dhcp_client_stop_pid(rpid, nm_dhcp_client_get_iface(client), SIGTERM);
}
}
}
--- ./src/core/dhcp/nm-dhcp-client.c.orig 2024-02-22 00:44:13.334158313 -0600
+++ ./src/core/dhcp/nm-dhcp-client.c 2024-02-22 19:41:56.134066083 -0600
@@ -367,14 +367,14 @@
}
void
-nm_dhcp_client_stop_pid(pid_t pid, const char *iface)
+nm_dhcp_client_stop_pid(pid_t pid, const char *iface, int sig)
{
char *name = iface ? g_strdup_printf("dhcp-client-%s", iface) : NULL;
g_return_if_fail(pid > 1);
nm_utils_kill_child_sync(pid,
- SIGTERM,
+ sig,
LOGD_DHCP,
name ?: "dhcp-client",
NULL,
@@ -395,7 +395,7 @@
if (priv->pid > 0) {
/* Clean up the watch handler since we're explicitly killing the daemon */
watch_cleanup(self);
- nm_dhcp_client_stop_pid(priv->pid, priv->config.iface);
+ nm_dhcp_client_stop_pid(priv->pid, priv->config.iface, SIGTERM);
}
priv->pid = -1;
}