forked from freifunk-franken/firmware
71 lines
2.0 KiB
Diff
71 lines
2.0 KiB
Diff
From 8b91b906261348642731731ca94532d8b3455f2c Mon Sep 17 00:00:00 2001
|
|
From: Gui Iribarren <gui@altermundi.net>
|
|
Date: Fri, 13 Dec 2013 16:05:26 -0300
|
|
Subject: [PATCH] alfred: workaround race condition when batmanif is not ready
|
|
at boot time
|
|
|
|
Wait up to 30 seconds during init.d script on boot, so that batmanif can
|
|
come up. If the timeout is reached, the init.d script refuses to start
|
|
alfred and related daemons.
|
|
|
|
This prevents an alfred crash when it would start during early boot, before
|
|
batmanif is available. Instead, alfred is started as soon as batmanif appears,
|
|
if that happens during the 30-second window.
|
|
|
|
Signed-off-by: Gui Iribarren <gui@altermundi.net>
|
|
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
|
|
|
|
Conflicts:
|
|
alfred/Makefile
|
|
Signed-off-by: Tim Niemeyer <tim.niemeyer@mastersword.de>
|
|
---
|
|
alfred/files/alfred.init | 18 +++++++++++++++++-
|
|
1 file changed, 17 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/alfred/files/alfred.init b/alfred/files/alfred.init
|
|
index e52a7bd..cdb4fff 100755
|
|
--- a/alfred/files/alfred.init
|
|
+++ b/alfred/files/alfred.init
|
|
@@ -16,6 +16,7 @@ pid_file_alfred="/var/run/alfred.pid"
|
|
pid_file_vis="/var/run/vis.pid"
|
|
enable=0
|
|
vis_enable=0
|
|
+batmanif=""
|
|
SERVICE_DAEMONIZE=1
|
|
SERVICE_WRITE_PID=1
|
|
|
|
@@ -23,7 +24,7 @@ alfred_start()
|
|
{
|
|
local args=""
|
|
local section="$1"
|
|
- local disabled interface mode batmanif
|
|
+ local disabled interface mode
|
|
|
|
# check if section is disabled
|
|
config_get_bool disabled "$section" disabled 0
|
|
@@ -62,6 +63,21 @@ start()
|
|
if [ "$enable" = "0" ]; then
|
|
exit 0
|
|
fi
|
|
+
|
|
+ mesh_dir="/sys/class/net/$batmanif/mesh/"
|
|
+ if ! [ -d "$mesh_dir" ] ; then
|
|
+ timeout=30
|
|
+ echo "${initscript}: waiting $timeout secs for $batmanif interface..."
|
|
+ for i in $(seq $timeout); do
|
|
+ sleep 1
|
|
+ [ -d "$mesh_dir" ] && break
|
|
+ if [ $i == $timeout ] ; then
|
|
+ echo "${initscript}: $batmanif not detected, alfred not starting."
|
|
+ exit 1
|
|
+ fi
|
|
+ done
|
|
+ fi
|
|
+
|
|
echo "${initscript}: starting alfred"
|
|
SERVICE_PID_FILE="$pid_file_alfred"
|
|
service_start /usr/sbin/alfred ${alfred_args}
|
|
--
|
|
2.1.4
|
|
|