At startup there's a race situation where "chronyc waitsync" (and thus
chrony-hotplug) will exit right away because it can't bind to loopback.
This change tries quite hard to make chrony-hotplug wait for loopback to
come up before running chronyc.
Fixes #28434.
Signed-off-by: Florian Wagner <redacted>
PKG_NAME:=chrony
PKG_VERSION:=4.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://chrony-project.org/releases/
#!/bin/sh
+
+# Find interface corresponding to lo device
+IFACE=$(ubus call network.interface dump | \
+ jsonfilter -e '@.interface[@.device="lo"].interface')
+
+# During boot network.interface dump can be empty; try UCI instead
+if [ -z "${IFACE}" ]; then
+ . /lib/functions.sh
+ handle_interface () {
+ local iface="$1"
+ local device
+ config_get device "${iface}" device
+ [ "${device}" = "lo" ] && IFACE=${iface}
+ }
+ config_load network
+ config_foreach handle_interface interface
+fi
+
+[ -z "${IFACE}" ] || \
+ ubus -t 30 wait_for network.interface.${IFACE}
+
# Wait for sync for up to 5 minutes and notify other services
/usr/bin/chronyc waitsync 300 1 0.0 1 || exit 0