Based on eec6022cf039e62233139000b9e95db943959e48 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Thu, 5 Jun 2014 13:43:30 +0200
Subject: [PATCH] sd-event: restore correct timeout behaviour

---
 src/libsystemd/sd-event/sd-event.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- src/libsystemd/sd-event/sd-event.c
+++ src/libsystemd/sd-event/sd-event.c	2014-06-06 10:26:51.422235695 +0000
@@ -2047,6 +2047,7 @@ _public_ int sd_event_run(sd_event *e, u
         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);
@@ -2084,6 +2085,8 @@ _public_ int sd_event_run(sd_event *e, u
                 goto finish;
         }
 
+        timedout = m == 0;
+
         dual_timestamp_get(&e->timestamp);
 
         for (i = 0; i < m; i++) {
@@ -2123,7 +2126,7 @@ _public_ int sd_event_run(sd_event *e, u
 
         p = event_next_pending(e);
         if (!p) {
-                r = 1;
+                r = !timedout;
                 goto finish;
         }
 
