From b7484e2a58038c57591457c1439505607bdcd833 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 6 Nov 2013 23:59:07 +0100 Subject: event: make sure we keep a reference to all events we dispatch while we do so. --- src/libsystemd-bus/sd-event.c | 4 ++++ src/socket-proxy/socket-proxyd.c | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/libsystemd-bus/sd-event.c b/src/libsystemd-bus/sd-event.c index 9c641c9a8e..97e6db289b 100644 --- a/src/libsystemd-bus/sd-event.c +++ b/src/libsystemd-bus/sd-event.c @@ -1614,6 +1614,8 @@ static int source_dispatch(sd_event_source *s) { return r; } + sd_event_source_ref(s); + switch (s->type) { case SOURCE_IO: @@ -1645,6 +1647,8 @@ static int source_dispatch(sd_event_source *s) { break; } + sd_event_source_unref(s); + return r; } diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c index 1c64c0e2e5..12d58d4406 100644 --- a/src/socket-proxy/socket-proxyd.c +++ b/src/socket-proxy/socket-proxyd.c @@ -338,7 +338,7 @@ static int connection_enable_event_sources(Connection *c, sd_event *event) { r = 0; if (r < 0) { - log_error("Failed to set up server event source: %s", strerror(-r)); + log_error("Failed to set up client event source: %s", strerror(-r)); return r; } @@ -434,6 +434,12 @@ static int add_connection_socket(Context *context, sd_event *event, int fd) { log_error("Failed to add connection socket: %s", strerror(-r)); goto fail; } + + r = sd_event_source_set_enabled(c->client_event_source, SD_EVENT_ONESHOT); + if (r < 0) { + log_error("Failed to enable oneshot event source: %s", strerror(-r)); + goto fail; + } } else { log_error("Failed to connect to remote host: %m"); goto fail; -- cgit v1.2.3-54-g00ecf