NetworkManager/src
Thomas Haller e2c8ef45ac core: fix race of blocking autoconnect for no-secrets when a new secret-agent registers
When activation of the connection fails with no-secrets, we block
autoconnect due to that. However, NMPolicy also unblocks such
autoconnect, whenever a new secret-agent registers. The reason
is obviously, that the new secret-agent might be able to provide
the previously missing secrets.

However, there is a race between
  - making the secret request, failing activation and blocking autoconnect
  - new secret-agent registers

If the secret-agent registers after making the request, but before we
block autoconnect, then autoconnect stays blocked.

  [1511468634.5759] device (wlp4s0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
  [1511468634.5772] device (wlp4s0): No agents were available for this request.
  [1511468638.4082] agent-manager: req[0x55ea7e58a5d0, :1.32/org.kde.plasma.networkmanagement/1000]: agent registered
  [1511468638.4082] policy: re-enabling autoconnect for all connections with failed secrets
  [1511468664.6280] device (wlp4s0): state change: need-auth -> failed (reason 'no-secrets', sys-iface-state: 'managed')
  [1511468664.6287] policy: connection 'tuxmobil' now blocked from autoconnect due to no secrets

Note the long timing between making the secret request and the
activation failure. This race already existed before, but now with
WPS push-button method enabled by default, the duraction of the
activation is much longer and the race is easy to hit.

https://bugzilla.gnome.org/show_bug.cgi?id=790571
2017-11-27 15:36:02 +01:00
..
devices core: merge IPv4 and IPv6 versions of nm_active_connection_get_default() 2017-11-27 14:04:11 +01:00
dhcp all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
dns dns: don't stat relative paths when detecting resolved use 2017-11-19 14:29:16 +01:00
dnsmasq logging: configure dnsmasq's logging in shared mode via nm-logging 2017-11-06 12:00:28 +01:00
ndisc ndisc: fix ordering of gateways 2017-11-03 10:44:48 +01:00
platform platform: preserve errno in nm_platform_sysctl_get_int_checked() 2017-11-24 17:06:42 +01:00
ppp core: refactor NMActRequestGetSecretsCallId typedef not to be a pointer to struct 2017-11-24 16:31:29 +01:00
settings core: fix race of blocking autoconnect for no-secrets when a new secret-agent registers 2017-11-27 15:36:02 +01:00
supplicant core,clients: use our own string hashing function nm_str_hash() 2017-10-18 13:05:00 +02:00
systemd systemd: merge branch systemd into master 2017-11-15 13:57:15 +01:00
tests all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
vpn core: refactor NMSettingsConnectionCallId typedef not to be a pointer to struct 2017-11-27 14:04:11 +01:00
main-utils.c all: use nm_close() instead of close() 2017-11-14 15:10:42 +01:00
main-utils.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
main.c config: remove nm_config_data_get_value_cached() 2017-10-31 19:14:07 +01:00
NetworkManagerUtils.c utils: don't assume a device with master won't have IP configuration 2017-10-30 17:38:37 +01:00
NetworkManagerUtils.h manager: simplify searching assumed connection 2017-03-16 18:27:33 +01:00
nm-act-request.c core: merge IPv4 and IPv6 versions of nm_active_connection_get_default() 2017-11-27 14:04:11 +01:00
nm-act-request.h core: refactor NMActRequestGetSecretsCallId typedef not to be a pointer to struct 2017-11-24 16:31:29 +01:00
nm-active-connection.c core: merge IPv4 and IPv6 versions of nm_active_connection_get_default() 2017-11-27 14:04:11 +01:00
nm-active-connection.h core: merge IPv4 and IPv6 versions of nm_active_connection_get_default() 2017-11-27 14:04:11 +01:00
nm-audit-manager.c logging: log device and connection along with the message 2017-03-24 12:42:09 +01:00
nm-audit-manager.h audit: add @args to device logging functions 2017-03-06 10:29:37 +01:00
nm-auth-manager.c logging: log device and connection along with the message 2017-03-24 12:42:09 +01:00
nm-auth-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-auth-subject.c all: use "unsigned long" instead of "long unsigned" 2017-03-14 11:23:46 +01:00
nm-auth-subject.h auth: embed private data NMAuthSubjectPrivate in NMAuthSubject struct 2016-05-12 10:24:36 +02:00
nm-auth-utils.c all: include "nm-utils/nm-hash-utils.h" by default 2017-11-16 11:49:51 +01:00
nm-auth-utils.h all: move NM_AUTH_PERMISSION_* defines to "nm-common-macros.h" header 2016-06-01 19:06:35 +02:00
nm-bus-manager.c all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
nm-bus-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-checkpoint-manager.c core: export checkpoint list over D-Bus 2017-11-09 10:12:15 +01:00
nm-checkpoint-manager.h core: export checkpoint list over D-Bus 2017-11-09 10:12:15 +01:00
nm-checkpoint.c core: track NMActiveConnection in manager with CList 2017-11-27 14:04:11 +01:00
nm-checkpoint.h checkpoint: introduce new flags to better restore previous state 2016-10-24 09:57:18 +02:00
nm-config-data.c core: cache "autoconnect-retries-default" in NMConfigData 2017-11-27 15:21:58 +01:00
nm-config-data.h core: cache "autoconnect-retries-default" in NMConfigData 2017-11-27 15:21:58 +01:00
nm-config.c config: write connectivity=true to internal state file 2017-08-21 12:18:13 +02:00
nm-config.h core: use #define for "autoconnect-retries-default" config 2017-11-27 15:21:57 +01:00
nm-connectivity.c connectivity: fix memory leak 2017-10-10 10:12:42 +02:00
nm-connectivity.h device: add default route penalty only if concheck is enabled 2017-05-04 11:07:40 +02:00
nm-core-utils.c core: replace "dup()" by "fcntl(fd, F_DUPFD_CLOEXEC, 0)" 2017-11-27 14:03:00 +01:00
nm-core-utils.h all: include "nm-utils/nm-hash-utils.h" by default 2017-11-16 11:49:51 +01:00
nm-dcb.c build: don't add subdirectories to include search path but require qualified include 2016-11-21 14:26:37 +01:00
nm-dcb.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-dhcp4-config.c exported-object: use NM_EXPORT_PATH_NUMBERED() macro 2017-01-03 15:40:17 +01:00
nm-dhcp4-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dhcp6-config.c exported-object: use NM_EXPORT_PATH_NUMBERED() macro 2017-01-03 15:40:17 +01:00
nm-dhcp6-config.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-dispatcher.c all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
nm-dispatcher.h core/dispatcher: pass act-request to device dispatcher calls 2017-03-16 18:27:33 +01:00
nm-exported-object.c all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
nm-exported-object.h exported-object: add "path" GObject property to have notify signal 2017-01-25 13:12:08 +01:00
nm-firewall-manager.c firewall: use CList to track pending_calls 2017-05-11 18:26:10 +02:00
nm-firewall-manager.h firewall: merge "started" signal and "available" property 2017-04-21 09:09:01 +02:00
nm-hostname-manager.c core,cli: replace wrong pattern for clearing GError 2017-06-27 09:42:28 +02:00
nm-hostname-manager.h hostname: cache hostname-manager's hostname property 2017-05-12 17:29:33 +02:00
nm-iface-helper.c dhcp: add support for dhcpcanon client 2017-10-30 10:43:10 +01:00
nm-ip4-config.c core: don't reset existing routes when merging IP setting 2017-11-17 13:43:16 +01:00
nm-ip4-config.h core: merge IPv4 and IPv6 version of _nm_ip_config_merge_route_attributes() 2017-11-13 11:35:44 +01:00
nm-ip6-config.c core: don't reset existing routes when merging IP setting 2017-11-17 13:43:16 +01:00
nm-ip6-config.h core: use router preference for IPv6 routes 2017-10-12 10:38:19 +02:00
nm-logging.c logging: log device and connection along with the message 2017-03-24 12:42:09 +01:00
nm-logging.h core: workaround coverity/compiler warning about tautological compare in nm_log_ptr() 2017-10-30 14:41:41 +01:00
nm-manager.c core: merge IPv4 and IPv6 versions of nm_active_connection_get_default() 2017-11-27 14:04:11 +01:00
nm-manager.h core: track NMActiveConnection in manager with CList 2017-11-27 14:04:11 +01:00
nm-netns.c core: rework handling of default-routes and drop NMDefaultRouteManager 2017-09-08 11:11:21 +02:00
nm-netns.h core: rework handling of default-routes and drop NMDefaultRouteManager 2017-09-08 11:11:21 +02:00
nm-pacrunner-manager.c core: support tracking default-route in NMIP4Config/NMIP6Config 2017-09-08 11:11:21 +02:00
nm-pacrunner-manager.h proxy: introduce call-id for clearing pacmanager configuration 2017-04-23 18:12:09 +02:00
nm-policy.c core: fix race of blocking autoconnect for no-secrets when a new secret-agent registers 2017-11-27 15:36:02 +01:00
nm-policy.h policy: add support to configurable hostname mode 2017-03-24 15:18:09 +01:00
nm-proxy-config.c proxy: reorder parts in nm-proxy-config.c and nm-pacrunner-manager.c 2016-10-04 11:58:32 +02:00
nm-proxy-config.h proxy: remove unnecessary APIs 2016-10-04 11:44:44 +02:00
nm-rfkill-manager.c udev: drop libgudev in favor of libudev 2017-03-22 12:41:06 +01:00
nm-rfkill-manager.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-session-monitor.c all: use nm_direct_hash() instead of g_direct_hash() 2017-11-16 11:49:52 +01:00
nm-session-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-sleep-monitor.c all: use nm_close() instead of close() 2017-11-14 15:10:42 +01:00
nm-sleep-monitor.h core: refactor private data in "src" 2016-10-04 09:50:56 +02:00
nm-test-utils-core.h platform: add compare functions for routes with different compare semantics 2017-08-03 18:32:59 +02:00
nm-types.h core: add generic opaque NMIPConfig type 2017-11-08 14:46:31 +01:00
org.freedesktop.NetworkManager.conf dbus: allow firewalld to communicate with NetworkManager 2017-04-21 13:38:21 +02:00