summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libsystemd-bus/sd-event.c4
-rw-r--r--src/socket-proxy/socket-proxyd.c8
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;