From 4e9a8abf9872e8b56afca1b209c1482886961fd3 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 29 Oct 2020 09:08:28 +0100 Subject: [PATCH] firmware: add async reconfigure hook to syslog rc.configure_plugins is likely fixed, but rc.configure_firmware has the same issue so make this more maintanable by moving the async request to the system function and put the former call back with the async flag set. Should fix syslog-ng related package configure hangs with regard to pkg-based bug in recent versions. --- src/etc/inc/system.inc | 13 ++++++++++++- src/etc/rc.configure_firmware | 2 +- src/etc/rc.configure_plugins | 5 +---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc index 2d25dc680..de0529c52 100644 --- a/src/etc/inc/system.inc +++ b/src/etc/inc/system.inc @@ -584,14 +584,25 @@ function system_syslogd_extra_local($logsocket) return exec_safe('-l %s ', $logsocket); } -function system_syslogd_start($verbose = false, $restart = false) +function system_syslogd_start($verbose = false, $restart = false, $async = false) { global $config; + if ($verbose) { echo 'Configuring system logging...'; flush(); } + if ($async) { + configd_run('syslog restart'); + + if ($verbose) { + echo "done.\n"; + } + + return; + } + configd_run('template reload OPNsense/Syslog'); if (empty($config['syslog']['disable_clog'])) { diff --git a/src/etc/rc.configure_firmware b/src/etc/rc.configure_firmware index a05def2c4..0a8dacc49 100755 --- a/src/etc/rc.configure_firmware +++ b/src/etc/rc.configure_firmware @@ -48,7 +48,7 @@ convert_config(true); system_firmware_configure(true); system_trust_configure(true); system_login_configure(true); -system_syslogd_start(true); +system_syslogd_start(true, false, true); /* flush user-facing caches */ (new OPNsense\Core\ACL())->invalidateCache(); diff --git a/src/etc/rc.configure_plugins b/src/etc/rc.configure_plugins index ebe372409..ea92c9f27 100755 --- a/src/etc/rc.configure_plugins +++ b/src/etc/rc.configure_plugins @@ -42,10 +42,7 @@ $script = !empty($argv[1]) ? $argv[1] : 'POST_INSTALL'; /* reload subsystem that may have changed */ if ($script == 'POST_INSTALL') { - echo 'Configuring system logging...'; - flush(); - configd_run("syslog restart"); - echo "done.\n"; + system_syslogd_start(true, false, true); } /* flush user-facing caches */