mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 17:19:20 +00:00
dhcp: fix shutdown not work by SIGTERM while bind9 enable threads
In https://source.isc.org/git/bind9.git, since the following commit applied: ... commit b99bfa184bc9375421b5df915eea7dfac6a68a99 Author: Evan Hunt <each@isc.org> Date: Wed Apr 10 13:49:57 2013 -0700 [master] unify internal and export libraries 3550. [func] Unified the internal and export versions of the BIND libraries, allowing external clients to use the same libraries as BIND. [RT #33131] ... (git show b99bfa184bc9375421b5df915eea7dfac6a68a99 -- ./lib/isc/unix/app.c) In this commit, if bind9 enable threads(ISC_PLATFORM_USETHREADS), it blocks signal SIGHUP, SIGINT and SIGTERM in isc__app_ctxstart. Which caused dhclient/dhcpd could not be stopped by SIGTERM. It caused systemd's reboot hung which send SIGTERM by default. (From OE-Core rev: 7d3e734481e5d400d03ffd0a12669913fd264c5f) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
39f74e11fd
commit
a731d879a7
+81
@@ -0,0 +1,81 @@
|
||||
From e8c30bac53f8baeb80f87b445f42259cc8984fb5 Mon Sep 17 00:00:00 2001
|
||||
From: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
Date: Wed, 12 Jul 2017 03:05:13 -0400
|
||||
Subject: [PATCH] Moved the call to isc_app_ctxstart() to not get signal block
|
||||
by all threads
|
||||
|
||||
Signed-off-by: Francis Dupont <fdupont@isc.org>
|
||||
|
||||
In https://source.isc.org/git/bind9.git, since the following
|
||||
commit applied:
|
||||
...
|
||||
commit b99bfa184bc9375421b5df915eea7dfac6a68a99
|
||||
Author: Evan Hunt <each@isc.org>
|
||||
Date: Wed Apr 10 13:49:57 2013 -0700
|
||||
|
||||
[master] unify internal and export libraries
|
||||
|
||||
3550. [func] Unified the internal and export versions of the
|
||||
BIND libraries, allowing external clients to use
|
||||
the same libraries as BIND. [RT #33131]
|
||||
...
|
||||
(git show b99bfa184bc9375421b5df915eea7dfac6a68a99 -- ./lib/isc/unix/app.c)
|
||||
|
||||
In this commit, if bind9 enable threads(ISC_PLATFORM_USETHREADS),
|
||||
it blocks signal SIGHUP, SIGINT and SIGTERM in isc__app_ctxstart.
|
||||
Which caused dhclient/dhcpd could not be stopped by SIGTERM.
|
||||
|
||||
It caused systemd's reboot hung which send SIGTERM by default.
|
||||
|
||||
Upstream-Status: Backport [https://source.isc.org/git/dhcp.git]
|
||||
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
---
|
||||
omapip/isclib.c | 25 +++++++++++++++----------
|
||||
1 file changed, 15 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/omapip/isclib.c b/omapip/isclib.c
|
||||
index 13f0d3e..4af04b6 100644
|
||||
--- a/omapip/isclib.c
|
||||
+++ b/omapip/isclib.c
|
||||
@@ -185,16 +185,6 @@ dhcp_context_create(int flags,
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
- result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
|
||||
- if (result != ISC_R_SUCCESS)
|
||||
- return (result);
|
||||
- dhcp_gbl_ctx.actx_started = ISC_TRUE;
|
||||
-
|
||||
- /* Not all OSs support suppressing SIGPIPE through socket
|
||||
- * options, so set the sigal action to be ignore. This allows
|
||||
- * broken connections to fail gracefully with EPIPE on writes */
|
||||
- handle_signal(SIGPIPE, SIG_IGN);
|
||||
-
|
||||
result = isc_taskmgr_createinctx(dhcp_gbl_ctx.mctx,
|
||||
dhcp_gbl_ctx.actx,
|
||||
1, 0,
|
||||
@@ -217,6 +207,21 @@ dhcp_context_create(int flags,
|
||||
result = isc_task_create(dhcp_gbl_ctx.taskmgr, 0, &dhcp_gbl_ctx.task);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
+
|
||||
+ result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
|
||||
+ if (result != ISC_R_SUCCESS)
|
||||
+ return (result);
|
||||
+ dhcp_gbl_ctx.actx_started = ISC_TRUE;
|
||||
+
|
||||
+ /* Not all OSs support suppressing SIGPIPE through socket
|
||||
+ * options, so set the sigal action to be ignore. This allows
|
||||
+ * broken connections to fail gracefully with EPIPE on writes */
|
||||
+ handle_signal(SIGPIPE, SIG_IGN);
|
||||
+
|
||||
+ /* Reset handlers installed by isc_app_ctxstart()
|
||||
+ * to default for control-c and kill */
|
||||
+ handle_signal(SIGINT, SIG_DFL);
|
||||
+ handle_signal(SIGTERM, SIG_DFL);
|
||||
}
|
||||
|
||||
#if defined (NSUPDATE)
|
||||
--
|
||||
2.8.1
|
||||
|
||||
@@ -10,6 +10,7 @@ SRC_URI += "file://dhcp-3.0.3-dhclient-dbus.patch;striplevel=0 \
|
||||
file://tweak-to-support-external-bind.patch \
|
||||
file://remove-dhclient-script-bash-dependency.patch \
|
||||
file://build-shared-libs.patch \
|
||||
file://Moved-the-call-to-isc_app_ctxstart-to-not-get-signal.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "2b5e5b2fa31c2e27e487039d86f83d3f"
|
||||
|
||||
Reference in New Issue
Block a user