chiark / gitweb /
sd-event: restore correct timeout behaviour
authorLennart Poettering <lennart@poettering.net>
Thu, 5 Jun 2014 11:43:30 +0000 (13:43 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 5 Jun 2014 11:50:35 +0000 (13:50 +0200)
src/libsystemd/sd-event/sd-event.c

index c48fa37e89cd341b5e74a5027c1d52d93791f90b..53f1904d3de828dcf56b62bcdb81bcdd42423361 100644 (file)
@@ -2180,6 +2180,7 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
         unsigned ev_queue_max;
         sd_event_source *p;
         int r, i, m;
+        bool timedout;
 
         assert_return(e, -EINVAL);
         assert_return(!event_pid_changed(e), -ECHILD);
@@ -2226,6 +2227,8 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
                 goto finish;
         }
 
+        timedout = m == 0;
+
         dual_timestamp_get(&e->timestamp);
         e->timestamp_boottime = now(CLOCK_BOOTTIME);
 
@@ -2278,7 +2281,7 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) {
 
         p = event_next_pending(e);
         if (!p) {
-                r = 1;
+                r = !timedout;
                 goto finish;
         }