event: make sure we keep a reference to all events we dispatch while we do so.
This commit is contained in:
parent
5b84559a76
commit
b7484e2a58
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue