projects
/
project
/
firewall3.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8eb2ce1
)
Only perform locking for start, stop, restart, reload and flush operations, this...
author
Jo-Philipp Wich
<jow@openwrt.org>
Thu, 14 Mar 2013 14:21:18 +0000
(15:21 +0100)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Thu, 14 Mar 2013 14:21:18 +0000
(15:21 +0100)
main.c
patch
|
blob
|
history
diff --git
a/main.c
b/main.c
index
90ef820
..
8b1649d
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-404,9
+404,6
@@
int main(int argc, char **argv)
state = build_state();
defs = &state->defaults;
state = build_state();
defs = &state->defaults;
- if (!fw3_lock())
- goto out;
-
if (optind >= argc)
{
rv = usage();
if (optind >= argc)
{
rv = usage();
@@
-430,28
+427,50
@@
int main(int argc, char **argv)
}
else if (!strcmp(argv[optind], "start"))
{
}
else if (!strcmp(argv[optind], "start"))
{
- rv = start(state, false);
+ if (fw3_lock())
+ {
+ rv = start(state, false);
+ fw3_unlock();
+ }
}
else if (!strcmp(argv[optind], "stop"))
{
}
else if (!strcmp(argv[optind], "stop"))
{
- rv = stop(state, false, false);
+ if (fw3_lock())
+ {
+ rv = stop(state, false, false);
+ fw3_unlock();
+ }
}
else if (!strcmp(argv[optind], "flush"))
{
}
else if (!strcmp(argv[optind], "flush"))
{
- rv = stop(state, true, false);
+ if (fw3_lock())
+ {
+ rv = stop(state, true, false);
+ fw3_unlock();
+ }
}
else if (!strcmp(argv[optind], "restart"))
{
}
else if (!strcmp(argv[optind], "restart"))
{
- stop(state, true, false);
- free_state(state);
+ if (fw3_lock())
+ {
+ stop(state, true, false);
+ free_state(state);
- state = build_state();
- rv = start(state, false);
+ state = build_state();
+ rv = start(state, false);
+
+ fw3_unlock();
+ }
}
else if (!strcmp(argv[optind], "reload"))
{
}
else if (!strcmp(argv[optind], "reload"))
{
- rv = stop(state, false, true);
- rv = start(state, !rv);
+ if (fw3_lock())
+ {
+ rv = stop(state, false, true);
+ rv = start(state, !rv);
+
+ fw3_unlock();
+ }
}
else if (!strcmp(argv[optind], "network") && (optind + 1) < argc)
{
}
else if (!strcmp(argv[optind], "network") && (optind + 1) < argc)
{
@@
-470,7
+489,5
@@
out:
if (state)
free_state(state);
if (state)
free_state(state);
- fw3_unlock();
-
return rv;
}
return rv;
}