[PATCH v2 09/42] vpn-provider: Transition to CONNECT state with agentless VPNs
Jussi Laakkonen <[email protected]> Wed, 13 Aug 2025 18:01:41 +0300
| Newsgroups | dev.linux.lists.connman |
|---|---|
| Message-ID | <[email protected]> |
Set to transition to CONNECT state immediately after ASSOCIATION state
after initializing connection procedure with a VPN if it does not use
VPN agent. This is done to accommodate the full state machine
transitions as the VPN agent, when success, will do the transition but
when VPN agent is not used the transition would be required to be done
by the plugin.
---
vpn/vpn-provider.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/vpn/vpn-provider.c b/vpn/vpn-provider.c
index 56040e65..b21e9e61 100644
--- a/vpn/vpn-provider.c
+++ b/vpn/vpn-provider.c
@@ -1653,8 +1653,19 @@ int __vpn_provider_connect(struct vpn_provider *provider, DBusMessage *msg)
} else
return -EOPNOTSUPP;
- if (err == -EINPROGRESS)
- vpn_provider_set_state(provider, VPN_PROVIDER_STATE_ASSOCIATION);
+ if (err == -EINPROGRESS) {
+ vpn_provider_set_state(provider,
+ VPN_PROVIDER_STATE_ASSOCIATION);
+
+ /*
+ * If the VPN does not use VPN agent do direct transition to
+ * connect in order to support the complete state machine.
+ */
+ if (provider->driver && provider->driver->uses_vpn_agent &&
+ !provider->driver->uses_vpn_agent(provider))
+ vpn_provider_set_state(provider,
+ VPN_PROVIDER_STATE_CONNECT);
+ }
return err;
}
--
2.39.5