return 0; /* go on, dispatch to user callback */
}
-static int mark_post_sources_pending(sd_event *e) {
+static int maybe_mark_post_sources_pending(EventSourceType t, sd_event *e) {
sd_event_source *z;
int r;
+ if (t == SOURCE_POST)
+ return 0;
+
SET_FOREACH(z, e->post_sources) {
if (event_source_is_offline(z))
continue;
return r;
}
- if (s->type != SOURCE_POST) {
- /* If we execute a non-post source, let's mark all post sources as pending. */
- r = mark_post_sources_pending(s->event);
- if (r < 0)
- return r;
- }
+ /* If we execute a non-post source, let's mark all post sources as pending. */
+ r = maybe_mark_post_sources_pending(s->type, s->event);
+ if (r < 0)
+ return r;
if (s->type == SOURCE_MEMORY_PRESSURE) {
r = source_memory_pressure_initiate_dispatch(s);
s->dispatching = false;
- if (saved_type != SOURCE_POST) {
- /* More post sources might have been added while executing the callback, let's make sure
- * those are marked pending as well. */
- r = mark_post_sources_pending(saved_event);
- if (r < 0)
- return r;
- }
+ /* More post sources might have been added while executing the callback, let's make sure
+ * those are marked pending as well. */
+ r = maybe_mark_post_sources_pending(saved_type, saved_event);
+ if (r < 0)
+ return r;
finish:
if (r < 0) {