script: Launch script with correct action if last script call is terminated
authorHans Dedecker <hans.dedecker@technicolor.com>
Tue, 26 Jan 2016 08:20:33 +0000 (09:20 +0100)
committerHans Dedecker <hans.dedecker@technicolor.com>
Tue, 26 Jan 2016 09:43:35 +0000 (10:43 +0100)
Actions launched as resume will be used in a next script_call
if the new action is not marked as resume even when the previous
script run was already terminated.
This behavior is particular visible when a RA is received as
the script will run with action bound and not ra-updated
resulting into a wan6 interface down/up transition

src/script.c

index 3d313cf4964e6ab2479a51c0ba062174258a7de7..f272c190afdaa3eb07a20c6c8c9a001557b717de 100644 (file)
@@ -353,13 +353,15 @@ static void s46_to_env(enum odhcp6c_state state, const uint8_t *data, size_t len
 void script_call(const char *status, int delay, bool resume)
 {
        time_t now = odhcp6c_get_milli_time() / 1000;
+       bool running_script = false;
 
        if (running) {
                kill(running, SIGTERM);
                delay -= now - started;
+               running_script = true;
        }
 
-       if (resume || !action[0])
+       if (resume || !running_script || !action[0])
                strncpy(action, status, sizeof(action) - 1);
 
        pid_t pid = fork();