@ -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
(
set -o pipefail
while [ $(( + + try)) -le $max ] ; do
while [ $(( + + try)) -le $max ] ; do
( exec $urlget $urlget_opts " $url " | logger -t " $link " ) &
if proto_6in4_update $urlget $urlget_opts " $url " 2>& 1 | \
local pid = $!
sed -e 's,^Killed$,timeout,' -e " s,^,update $try / $max : , " | \
( sleep 20; kill $pid 2>/dev/null ) &
logger -t " $link " ;
wait $pid && break
then
sleep 20;
logger -t " $link " "updated"
return 0
fi
sleep 5
done
done
logger -t " $link " "update failed"
)
}
}
}
}