From: Lennart Poettering Date: Wed, 6 Nov 2013 22:59:07 +0000 (+0100) Subject: event: make sure we keep a reference to all events we dispatch while we do so. X-Git-Tag: v209~1597 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b7484e2a58038c57591457c1439505607bdcd833;hp=5b84559a76f30755019d6a0e6b2ccc9bbe0b3c56;p=elogind.git event: make sure we keep a reference to all events we dispatch while we do so. --- diff --git a/src/libsystemd-bus/sd-event.c b/src/libsystemd-bus/sd-event.c index 9c641c9a8..97e6db289 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 1c64c0e2e..12d58d440 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;