diff options
Diffstat (limited to 'apmd/apmd-3.2.2/debian.patch')
-rw-r--r-- | apmd/apmd-3.2.2/debian.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/apmd/apmd-3.2.2/debian.patch b/apmd/apmd-3.2.2/debian.patch index e69de29bb2..d49e524bbd 100644 --- a/apmd/apmd-3.2.2/debian.patch +++ b/apmd/apmd-3.2.2/debian.patch @@ -0,0 +1,54 @@ +--- apmd-3.2.2.orig/apmd.c ++++ apmd-3.2.2/apmd.c +@@ -343,7 +343,7 @@ + /* parent */ + int status, retval; + ssize_t len; +- time_t time_limit; ++ time_t countdown; + + if (pid < 0) { + /* Couldn't fork */ +@@ -356,8 +356,9 @@ + /* Capture the child's output, if any, but only until it terminates */ + close(fds[1]); + fcntl(fds[0], F_SETFL, O_RDONLY|O_NONBLOCK); +- time_limit = time(0) + proxy_timeout; ++ countdown = proxy_timeout; + do { ++ countdown -= 1; + while ((len = read(fds[0], line, sizeof(line)-1)) > 0) { + line[len] = 0; + APMD_SYSLOG(LOG_INFO, "+ %s", line); +@@ -372,16 +373,16 @@ + goto proxy_done; + } + +- sleep(1); ++ while (sleep(1) > 0) ; + } while ( +- (time(0) < time_limit) ++ (countdown >= 0) + || (proxy_timeout < 0) + ); + + APMD_SYSLOG(LOG_NOTICE, "Proxy has been running more than %d seconds; killing it", proxy_timeout); + + kill(pid, SIGTERM); +- time_limit = time(0) + 5; ++ countdown = 5; + do { + retval = waitpid(pid, &status, WNOHANG); + if (retval == pid) +@@ -392,9 +393,9 @@ + goto proxy_done; + } + +- sleep(1); ++ while (sleep(1) > 0) ; + +- } while (time(0) < time_limit); ++ } while (countdown >= 0); + + kill(pid, SIGKILL); + status = __W_EXITCODE(0, SIGKILL); |