commit: 92f2fa6fd24ae18ecafeab68ffd72eddc028325f Author: Mike Gilbert <floppym <AT> gentoo <DOT> org> AuthorDate: Wed Apr 18 16:50:39 2018 +0000 Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org> CommitDate: Wed Apr 18 16:50:55 2018 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=92f2fa6f
sys-apps/systemd: backport timesync fix Package-Manager: Portage-2.3.24, Repoman-2.3.6_p81 .../systemd/files/238-timesync-connection.patch | 49 ++++++++++++++++++++++ ...systemd-238-r5.ebuild => systemd-238-r6.ebuild} | 1 + 2 files changed, 50 insertions(+) diff --git a/sys-apps/systemd/files/238-timesync-connection.patch b/sys-apps/systemd/files/238-timesync-connection.patch new file mode 100644 index 00000000000..a48a88e9e68 --- /dev/null +++ b/sys-apps/systemd/files/238-timesync-connection.patch @@ -0,0 +1,49 @@ +From 6d254dba01491b994115ecef8c4017fbe5451606 Mon Sep 17 00:00:00 2001 +From: Yu Watanabe <[email protected]> +Date: Mon, 16 Apr 2018 12:24:36 +0900 +Subject: [PATCH] timesync: establish connection when network become online and + the manager is not connected yet + +This also introduces `manager_is_connected()` helper function, which +returns true when the manager is sending a request, resolving a server +name, or in a poll interval. + +Follow-up for 3e85ec072180b6fbec82d715186985536859a29d. +Fixes #8719. +--- + src/timesync/timesyncd-manager.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c +index cfdc43b0ff2..0c5d3e2d6f7 100644 +--- a/src/timesync/timesyncd-manager.c ++++ b/src/timesync/timesyncd-manager.c +@@ -1036,6 +1036,12 @@ static int manager_network_read_link_servers(Manager *m) { + return r; + } + ++static bool manager_is_connected(Manager *m) { ++ /* Return true when the manager is sending a request, resolving a server name, or ++ * in a poll interval. */ ++ return m->server_socket >= 0 || m->resolve_query || m->event_timer; ++} ++ + static int manager_network_event_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + Manager *m = userdata; + bool changed, connected, online; +@@ -1051,13 +1057,13 @@ static int manager_network_event_handler(sd_event_source *s, int fd, uint32_t re + online = network_is_online(); + + /* check if the client is currently connected */ +- connected = m->server_socket >= 0 || m->resolve_query || m->exhausted_servers; ++ connected = manager_is_connected(m); + + if (connected && !online) { + log_info("No network connectivity, watching for changes."); + manager_disconnect(m); + +- } else if (!connected && online && changed) { ++ } else if ((!connected || changed) && online) { + log_info("Network configuration changed, trying to establish connection."); + + if (m->current_server_address) diff --git a/sys-apps/systemd/systemd-238-r5.ebuild b/sys-apps/systemd/systemd-238-r6.ebuild similarity index 99% rename from sys-apps/systemd/systemd-238-r5.ebuild rename to sys-apps/systemd/systemd-238-r6.ebuild index 6d0ee7602a8..8625668cfff 100644 --- a/sys-apps/systemd/systemd-238-r5.ebuild +++ b/sys-apps/systemd/systemd-238-r6.ebuild @@ -155,6 +155,7 @@ src_prepare() { PATCHES+=( "${FILESDIR}/238-initctl.patch" "${FILESDIR}/238-nspawn-wait.patch" + "${FILESDIR}/238-timesync-connection.patch" ) if ! use vanilla; then
