]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2PS: Notify D-Bus about removal of a stale/empty persistent group
authorJouni Malinen <j@w1.fi>
Fri, 4 Jan 2019 11:18:26 +0000 (13:18 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 4 Jan 2019 11:19:20 +0000 (13:19 +0200)
During P2PS PD Request processing wpa_supplicant removes stale and empty
persistent groups, but it did not notify D-Bus to unregister object. Fix
this by adding the missing notifications.

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/p2p_supplicant.c

index 88eb4e0b242c0ec99cbd27c3043b366bbb1bfcf4..b549103e81d381d01e2dad1325ebed11db4a577d 100644 (file)
@@ -4045,6 +4045,11 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev,
 
                if (persistent_go && !persistent_go->num_p2p_clients) {
                        /* remove empty persistent GO */
+                       wpa_dbg(wpa_s, MSG_DEBUG,
+                               "P2P: Remove empty persistent group id=%d",
+                               persistent_go->id);
+                       wpas_notify_persistent_group_removed(wpa_s,
+                                                            persistent_go);
                        wpa_config_remove_network(wpa_s->conf,
                                                  persistent_go->id);
                }
@@ -4085,6 +4090,10 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev,
                /* Remove stale persistent group */
                if (stale->mode != WPAS_MODE_P2P_GO ||
                    stale->num_p2p_clients <= 1) {
+                       wpa_dbg(wpa_s, MSG_DEBUG,
+                               "P2P: Remove stale persistent group id=%d",
+                               stale->id);
+                       wpas_notify_persistent_group_removed(wpa_s, stale);
                        wpa_config_remove_network(wpa_s->conf, stale->id);
                } else {
                        size_t i;
@@ -4117,6 +4126,11 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev,
                if (persistent_go && s != persistent_go &&
                    !persistent_go->num_p2p_clients) {
                        /* remove empty persistent GO */
+                       wpa_dbg(wpa_s, MSG_DEBUG,
+                               "P2P: Remove empty persistent group id=%d",
+                               persistent_go->id);
+                       wpas_notify_persistent_group_removed(wpa_s,
+                                                            persistent_go);
                        wpa_config_remove_network(wpa_s->conf,
                                                  persistent_go->id);
                        /* Save config */
@@ -4224,6 +4238,10 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev,
 
        if (persistent_go && !persistent_go->num_p2p_clients) {
                /* remove empty persistent GO */
+               wpa_dbg(wpa_s, MSG_DEBUG,
+                       "P2P: Remove empty persistent group id=%d",
+                       persistent_go->id);
+               wpas_notify_persistent_group_removed(wpa_s, persistent_go);
                wpa_config_remove_network(wpa_s->conf, persistent_go->id);
        }