Made daemon startup wait for its socket

This commit is contained in:
TechHutTV
2026-05-21 20:07:38 -07:00
parent 2517478d0c
commit d3b703b58f
4 changed files with 39 additions and 7 deletions
+4 -3
View File
@@ -125,9 +125,10 @@ NEOF
echo " wrote $NEC with include_interfaces=\"wt0\""
fi
# Start the daemon, then reload nginx as soon as wt0 appears (so the WebGUI
# binds to the NetBird IP and is reachable from other peers).
/usr/local/emhttp/plugins/netbird/restart.sh
# Start the daemon synchronously (waits for the socket), then reload nginx as
# soon as wt0 appears (so the WebGUI binds to the NetBird IP and is reachable
# from other peers).
/etc/rc.d/rc.netbird start
(
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
if ip -4 addr show wt0 >/dev/null 2>&1; then
@@ -56,6 +56,15 @@ function nb_up_args(array $cfg): array
switch ($action) {
case 'up':
// Ensure the daemon is up (and its socket exists) before connecting,
// so a fresh install can connect from the GUI without a manual start.
if (!Netbird\daemonRunning() || !file_exists('/var/run/netbird.sock')) {
exec('/etc/rc.d/rc.netbird start > /dev/null 2>&1');
for ($i = 0; $i < 20; $i++) {
if (file_exists('/var/run/netbird.sock')) { break; }
usleep(500000);
}
}
[$rc, $out] = Netbird\nb(nb_up_args($cfg));
echo json_encode([
'type' => $rc === 0 ? 'success' : 'error',
@@ -19,7 +19,12 @@ fi
log "Applying settings; restarting daemon."
/etc/rc.d/rc.netbird restart
sleep 2
# Wait for the daemon socket before attempting login.
for _ in $(seq 1 20); do
[ -S /var/run/netbird.sock ] && break
sleep 0.5
done
# If a setup key is provided, attempt non-interactive login on apply.
if [ -n "$SETUP_KEY" ]; then
@@ -27,7 +32,13 @@ if [ -n "$SETUP_KEY" ]; then
[ -n "$MANAGEMENT_URL" ] && UP_ARGS="$UP_ARGS --management-url $MANAGEMENT_URL"
[ -n "$HOSTNAME" ] && UP_ARGS="$UP_ARGS --hostname $HOSTNAME"
[ -n "$PRESHARED_KEY" ] && UP_ARGS="$UP_ARGS --preshared-key $PRESHARED_KEY"
log "Running: netbird $UP_ARGS"
/usr/local/sbin/netbird $UP_ARGS >>/var/log/netbird-utils.log 2>&1 || \
log "netbird up returned non-zero (this is normal if already connected)."
log "Running: netbird up (--setup-key ***)"
OUT=$(/usr/local/sbin/netbird $UP_ARGS 2>&1)
RC=$?
echo "$OUT" >> /var/log/netbird-utils.log
if [ "$RC" -ne 0 ]; then
log "netbird up failed (rc=$RC): $OUT"
else
log "netbird up succeeded."
fi
fi
+11
View File
@@ -48,6 +48,17 @@ start_netbird() {
--log-file "$LOGFILE" \
$EXTRA_ARGS >>"$LOGFILE" 2>&1 &
echo $! > "$PIDFILE"
# Wait for the daemon socket so callers (netbird up, apply) don't race startup.
for _ in $(seq 1 20); do
[ -S /var/run/netbird.sock ] && break
sleep 0.5
done
if [ -S /var/run/netbird.sock ]; then
log "NetBird daemon socket is up."
else
log "WARNING: netbird.sock did not appear within 10s; check $LOGFILE."
fi
}
stop_netbird() {