aboutsummaryrefslogtreecommitdiffstats
path: root/main/ipset/ipset.initd
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-03-21 12:03:03 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-03-21 12:04:33 +0200
commit727d3b879fa8593da80813e43fbd57e08fb2bc32 (patch)
tree0e38bdb9c80ab770d3d14df1f5fefa2e001ad792 /main/ipset/ipset.initd
parent4b7635b32da60305c8b90644642b6a9996c1cc29 (diff)
downloadaports-727d3b879fa8593da80813e43fbd57e08fb2bc32.tar.bz2
aports-727d3b879fa8593da80813e43fbd57e08fb2bc32.tar.xz
main/ipset: fix race conditions in init script
Diffstat (limited to 'main/ipset/ipset.initd')
-rw-r--r--main/ipset/ipset.initd16
1 files changed, 9 insertions, 7 deletions
diff --git a/main/ipset/ipset.initd b/main/ipset/ipset.initd
index ee1668939b..2678c007e8 100644
--- a/main/ipset/ipset.initd
+++ b/main/ipset/ipset.initd
@@ -95,7 +95,9 @@ reload() {
fi
echo create $new $(set_file $name | head -n 1)
done
+ ) | ipset restore
+ (
for name in $(set_files); do
local new=$name
set_exists _init_$name && new=_init_$name
@@ -105,15 +107,15 @@ reload() {
for name in $swap; do
echo swap $name _init_$name
done
+ ) | ipset restore
- for name in $(set_lists); do
- [ -f $DIR/$name ] || echo destroy $name
- done
+ for name in $(set_lists); do
+ [ -f $DIR/$name ] || echo destroy $name
+ done | ipset restore
- for name in $(sets); do
- [ -f $DIR/$name ] || echo destroy $name
- done
- ) | ipset restore
+ for name in $(sets); do
+ [ -f $DIR/$name ] || echo destroy $name
+ done | ipset restore
eend $STATUS
}