Thus it will be possible to handle a connection failure properly in the wifi plugin, so it will not request the agent for a retry. --- gsupplicant/gsupplicant.h | 1 + gsupplicant/supplicant.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/gsupplicant/gsupplicant.h b/gsupplicant/gsupplicant.h index 631e846..cc93d32 100644 --- a/gsupplicant/gsupplicant.h +++ b/gsupplicant/gsupplicant.h @@ -325,6 +325,7 @@ bool g_supplicant_peer_is_wps_pin(GSupplicantPeer *peer); bool g_supplicant_peer_is_in_a_group(GSupplicantPeer *peer); GSupplicantInterface *g_supplicant_peer_get_group_interface(GSupplicantPeer *peer); bool g_supplicant_peer_is_client(GSupplicantPeer *peer); +bool g_supplicant_peer_has_requested_connection(GSupplicantPeer *peer); struct _GSupplicantCallbacks { void (*system_ready) (void); diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index 83c6dae..c9c875f 100644 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -235,6 +235,7 @@ struct _GSupplicantPeer { GSList *groups; bool groups_changed; const GSupplicantInterface *current_group_iface; + bool connection_requested; }; struct _GSupplicantGroup { @@ -515,6 +516,8 @@ static void callback_peer_request(GSupplicantPeer *peer) if (!callbacks_pointer->peer_request) return; + peer->connection_requested = true; + callbacks_pointer->peer_request(peer); } @@ -1147,6 +1150,14 @@ bool g_supplicant_peer_is_client(GSupplicantPeer *peer) return false; } +bool g_supplicant_peer_has_requested_connection(GSupplicantPeer *peer) +{ + if (!peer) + return false; + + return peer->connection_requested; +} + static void merge_network(GSupplicantNetwork *network) { GString *str; @@ -2733,6 +2744,8 @@ static void signal_peer_changed(const char *path, DBusMessageIter *iter) callback_peer_changed(peer, G_SUPPLICANT_PEER_GROUP_CHANGED); + if (!g_supplicant_peer_is_in_a_group(peer)) + peer->connection_requested = false; peer->groups_changed = false; } @@ -2825,6 +2838,7 @@ static void signal_group_failure(const char *path, DBusMessageIter *iter) return; callback_peer_changed(peer, G_SUPPLICANT_PEER_GROUP_FAILED); + peer->connection_requested = false; } static void signal_group_started(const char *path, DBusMessageIter *iter) @@ -3018,6 +3032,7 @@ static void signal_group_peer_disconnected(const char *path, DBusMessageIter *it return; callback_peer_changed(peer, G_SUPPLICANT_PEER_GROUP_DISCONNECTED); + peer->connection_requested = false; } static struct { -- 1.8.5.5 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman