[PATCH 3/5] alfred: fix boot up
Tim Niemeyer
tim.niemeyer at mastersword.de
So Okt 11 21:35:29 CEST 2015
Signed-off-by: Tim Niemeyer <tim.niemeyer at mastersword.de>
---
...around-race-condition-when-batmanif-is-no.patch | 70 ++++++++++++++++++++++
buildscript | 3 +-
2 files changed, 72 insertions(+), 1 deletion(-)
create mode 100644 build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch
diff --git a/build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch b/build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch
new file mode 100644
index 0000000..3aa67f5
--- /dev/null
+++ b/build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch
@@ -0,0 +1,70 @@
+From 8b91b906261348642731731ca94532d8b3455f2c Mon Sep 17 00:00:00 2001
+From: Gui Iribarren <gui at 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 at altermundi.net>
+Signed-off-by: Simon Wunderlich <sw at simonwunderlich.de>
+
+Conflicts:
+ alfred/Makefile
+Signed-off-by: Tim Niemeyer <tim.niemeyer at 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
+
diff --git a/buildscript b/buildscript
index d4a65bd..62ced64 100755
--- a/buildscript
+++ b/buildscript
@@ -25,7 +25,8 @@ OPENWRT_OLDPACKAGES=(openwrt_oldpackages
ROUTING=(routing
https://github.com/openwrt-routing/packages.git
44318d05898069300ce2ad6eb05eb40f232e7123
- ../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch)
+ ../../../build_patches/0001-batman-adv-no-rebroadcast-option.patch
+ ../../../build_patches/0002-alfred-workaround-race-condition-when-batmanif-is-no.patch)
ROUTING_PKGS="kmod-batman-adv alfred"
FASTD=(fastd
--
2.1.4
Mehr Informationen über die Mailingliste franken-dev