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