event: make sure we keep a reference to all events we dispatch while we do so.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user