summaryrefslogtreecommitdiff
path: root/debian/patches/06_509015_better_delays.dpatch
blob: 64ddb6e09ad763b2ca9a9eff9548943d75faeb1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#! /bin/sh /usr/share/dpatch/dpatch-run
## 06_509015_better_delays.dpatch by Michel Lespinasse <walken@zoy.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Don't wait for more than specified delays, fix for #509015

@DPATCH@
diff -urNad ifplugd-0.28~/src/ifplugd.c ifplugd-0.28/src/ifplugd.c
--- ifplugd-0.28~/src/ifplugd.c	2008-09-30 17:48:51.000000000 +0530
+++ ifplugd-0.28/src/ifplugd.c	2009-03-02 12:05:11.000000000 +0530
@@ -468,6 +468,14 @@
         tv.tv_sec = polltime;
         tv.tv_usec = 0;
         
+        if (t) {
+            int delay = t - time(NULL);
+            if (delay < 0)
+                tv.tv_sec = 0;
+            else if (delay < tv.tv_sec)
+                tv.tv_sec = delay;
+        }
+
         if (select(FD_SETSIZE, &qfds, NULL, NULL, &tv) < 0) {
             if (errno == EINTR)
                 continue;
@@ -573,7 +581,7 @@
             }
         }
 
-        if (t && t < time(NULL)) {
+        if (t && t <= time(NULL)) {
             t = 0;
 
             if (action(status) < 0)