6in4: fix update timeout
The recent rework of the 6in4 endpoint update broke the retry mechanism. Rework the timeout handling and make the update status more verbose. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44327 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
c48a26ef7e
commit
5eb79fdc7b
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=6in4
|
PKG_NAME:=6in4
|
||||||
PKG_VERSION:=19
|
PKG_VERSION:=20
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,19 @@
|
||||||
init_proto "$@"
|
init_proto "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proto_6in4_update() {
|
||||||
|
sh -c '
|
||||||
|
local timeout=5
|
||||||
|
|
||||||
|
(while [ $((timeout--)) -gt 0 ]; do
|
||||||
|
sleep 1
|
||||||
|
kill -0 $$ || exit 0
|
||||||
|
done; kill -9 $$) 2>/dev/null &
|
||||||
|
|
||||||
|
exec "$@"
|
||||||
|
' "$1" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
proto_6in4_setup() {
|
proto_6in4_setup() {
|
||||||
local cfg="$1"
|
local cfg="$1"
|
||||||
local iface="$2"
|
local iface="$2"
|
||||||
|
@ -97,13 +110,20 @@ proto_6in4_setup() {
|
||||||
local try=0
|
local try=0
|
||||||
local max=3
|
local max=3
|
||||||
|
|
||||||
while [ $((++try)) -le $max ]; do
|
(
|
||||||
( exec $urlget $urlget_opts "$url" | logger -t "$link" ) &
|
set -o pipefail
|
||||||
local pid=$!
|
while [ $((++try)) -le $max ]; do
|
||||||
( sleep 20; kill $pid 2>/dev/null ) &
|
if proto_6in4_update $urlget $urlget_opts "$url" 2>&1 | \
|
||||||
wait $pid && break
|
sed -e 's,^Killed$,timeout,' -e "s,^,update $try/$max: ," | \
|
||||||
sleep 20;
|
logger -t "$link";
|
||||||
done
|
then
|
||||||
|
logger -t "$link" "updated"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
logger -t "$link" "update failed"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue