afm-urun: Fix infinite loop on start status 74/24474/1
authorJosé Bollo <jose.bollo@iot.bzh>
Wed, 6 May 2020 11:48:17 +0000 (13:48 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Wed, 6 May 2020 11:51:23 +0000 (13:51 +0200)
Ensure that there is no infinite loop when waiting
for the completion of a status.

Bug-AGL: SPEC-3323

Change-Id: I93537e9bbbe8ef357d112bea1cb6201e96d01ebf
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afm-urun.c

index 227fd1d..7f8ad16 100644 (file)
@@ -146,15 +146,18 @@ error:
 
 static const char *wait_state_stable(int isuser, const char *dpath)
 {
-       const char *state;
+       int trial, count;
+       const char *state = NULL;
 
-       for (;;) {
+       count = 10;
+       for (trial = 1 ; trial <= count ; trial++) {
                state = systemd_unit_state_of_dpath(isuser, dpath);
                if (state == NULL || state == SysD_State_Active
                 || state == SysD_State_Failed)
                        return state;
-               /* TODO: sleep */
+               sleep(1);
        }
+       return state;
 }
 
 /*