diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-11-06 23:59:07 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-11-07 00:13:58 +0100 |
commit | b7484e2a58038c57591457c1439505607bdcd833 (patch) | |
tree | 0d4de763a26ec05e87bdc0ba203a955f19653334 /src | |
parent | 5b84559a76f30755019d6a0e6b2ccc9bbe0b3c56 (diff) |
event: make sure we keep a reference to all events we dispatch while we do so.
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-bus/sd-event.c | 4 | ||||
-rw-r--r-- | src/socket-proxy/socket-proxyd.c | 8 |
2 files changed, 11 insertions, 1 deletions
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; |