X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=blobdiff_plain;f=proto-shell.c;h=0131e190a010447672b8df96b12274c8d91d4563;hp=f32a32f193a37e02f1e7a9fd1e0d5c0df194f008;hb=fd7d5b43d85b2e3bb2eee98644bca833c6202048;hpb=f33922cf7fbd23d56e8aeb591d2841e0856fa164 diff --git a/proto-shell.c b/proto-shell.c index f32a32f..0131e19 100644 --- a/proto-shell.c +++ b/proto-shell.c @@ -506,9 +506,11 @@ proto_shell_update_link(struct proto_shell_state *state, struct blob_attr *data, interface_update_complete(state->proto.iface); - if (!keep) - state->proto.proto_event(&state->proto, IFPEV_UP); - state->sm = S_IDLE; + if ((state->sm != S_SETUP_ABORT) && (state->sm != S_TEARDOWN)) { + if (!keep) + state->proto.proto_event(&state->proto, IFPEV_UP); + state->sm = S_IDLE; + } return 0; } @@ -578,7 +580,7 @@ proto_shell_kill_command(struct proto_shell_state *state, struct blob_attr **tb) signal = SIGTERM; if (state->proto_task.uloop.pending) { - if (signal == SIGTERM) + if (signal == SIGTERM || signal == SIGKILL) state->proto_task_killed = true; kill(state->proto_task.uloop.pid, signal); }