chiark / gitweb /
properly recognize successfull scripts
authorLennart Poettering <lennart@poettering.net>
Wed, 27 Jan 2010 04:32:31 +0000 (05:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 27 Jan 2010 04:32:31 +0000 (05:32 +0100)
service.c
socket.c

index cef94175fb495acec755a4a07f051425f3449105..ae7fc36a5c4bedd54ac35516443316139e139c0f 100644 (file)
--- a/service.c
+++ b/service.c
@@ -739,7 +739,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
         assert(s);
         assert(pid >= 0);
 
-        success = code == CLD_EXITED || status == 0;
+        success = code == CLD_EXITED && status == 0;
         s->failure = s->failure || !success;
 
         if (s->main_pid == pid) {
@@ -806,6 +806,8 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
                         /* No further commands for this step, so let's
                          * figure out what to do next */
 
+                        log_debug("%s got final SIGCHLD for state %s", unit_id(u), state_string_table[s->state]);
+
                         switch (s->state) {
 
                         case SERVICE_START_PRE:
index cbddcaa77d880adc43acedbda9bd3fc999df05c0..fb622a667fe34e46ba6b62103f60ffb386f20def 100644 (file)
--- a/socket.c
+++ b/socket.c
@@ -626,7 +626,7 @@ static void socket_sigchld_event(Unit *u, pid_t pid, int code, int status) {
         assert(s);
         assert(pid >= 0);
 
-        success = code == CLD_EXITED || status == 0;
+        success = code == CLD_EXITED && status == 0;
         s->failure = s->failure || !success;
 
         assert(s->control_pid == pid);
@@ -645,7 +645,7 @@ static void socket_sigchld_event(Unit *u, pid_t pid, int code, int status) {
                 /* No further commands for this step, so let's figure
                  * out what to do next */
 
-                log_debug("%s finished with state %s", unit_id(u), state_string_table[s->state]);
+                log_debug("%s got final SIGCHLD for state %s", unit_id(u), state_string_table[s->state]);
 
                 switch (s->state) {