status/network: Sync active connections again on connection-added

NetworkManagers NmClient has a bug for wireguard connections where the
notify::active-connections and connection-added are emitted in the wrong order:
When a wireguard connection gets activated, notify::active-connections is
emitted first, then connection-added happens.

We currently expect these signals to emitted in the correct order, so our VPN
toggle is not actually updated when a wireguard connection is established.

Until this bug is fixed in NetworkManager, work it around by calling
_syncActiveConnections() manually after we see ::connection-added.

NM issue: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1483

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6656
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3219>
This commit is contained in:
Jonas Dreßler 2024-03-01 17:24:37 +01:00
parent 1e882ba8dc
commit 723c0a6e61

View File

@ -1597,6 +1597,10 @@ class NMVpnToggle extends NMToggle {
'activation-failed', () => this.emit('activation-failed'), 'activation-failed', () => this.emit('activation-failed'),
this); this);
this._addItem(connection, item); this._addItem(connection, item);
// FIXME: NM is emitting "connection-added" after "notify::active-connections",
// so we need to sync connections here once again.
this._syncActiveConnections();
} }
_removeConnection(connection) { _removeConnection(connection) {