firmware/build_patches/0002-alfred-workaround-race...

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