]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journal-remote: more handling of sd_event_source_set_enabled failures
authorLuca Boccassi <luca.boccassi@microsoft.com>
Sat, 13 Nov 2021 19:07:59 +0000 (19:07 +0000)
committerLuca Boccassi <luca.boccassi@microsoft.com>
Sat, 13 Nov 2021 19:11:55 +0000 (19:11 +0000)
But avoid clobbering the return value if it works

CID#1465793
CID#1465794

src/journal-remote/journal-remote.c

index 0539d4d0bf4584ca9b34c826ec3432986e634d9b..9fd6a23076c2a3bfb20023c3151ee3a780cb6ee7 100644 (file)
@@ -429,9 +429,14 @@ static int dispatch_raw_source_until_block(sd_event_source *event,
         sd_event_source_ref(event);
 
         r = journal_remote_handle_raw_source(event, source->importer.fd, EPOLLIN, journal_remote_server_global);
-        if (r != 1)
+        if (r != 1) {
+                int k;
+
                 /* No more data for now */
-                sd_event_source_set_enabled(event, SD_EVENT_OFF);
+                k = sd_event_source_set_enabled(event, SD_EVENT_OFF);
+                if (k < 0)
+                        r = k;
+        }
 
         sd_event_source_unref(event);
 
@@ -449,10 +454,15 @@ static int dispatch_raw_source_event(sd_event_source *event,
         assert(source->buffer_event);
 
         r = journal_remote_handle_raw_source(event, fd, EPOLLIN, journal_remote_server_global);
-        if (r == 1)
+        if (r == 1) {
+                int k;
+
                 /* Might have more data. We need to rerun the handler
                  * until we are sure the buffer is exhausted. */
-                sd_event_source_set_enabled(source->buffer_event, SD_EVENT_ON);
+                k = sd_event_source_set_enabled(source->buffer_event, SD_EVENT_ON);
+                if (k < 0)
+                        r = k;
+        }
 
         return r;
 }