summaryrefslogtreecommitdiff
path: root/apmd/apmd-3.2.2/debian.patch
diff options
context:
space:
mode:
Diffstat (limited to 'apmd/apmd-3.2.2/debian.patch')
-rw-r--r--apmd/apmd-3.2.2/debian.patch54
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);