]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2P: Do not use prov_disc_resp() callback for rejected PD
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 8 May 2012 14:02:28 +0000 (17:02 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 8 May 2012 14:02:28 +0000 (17:02 +0300)
Commit 349b213cc8babdc0212938714104f7e28d34b335 added a separate
callback prov_disc_fail() for indicating PD failures, but it left the
Provision Discovery Response handler to call both callbacks in case the
peer rejected the PD. Commit f65a239ba4760cc6e8a169d21a4fcabed444a90b
added ctrl_iface event for PD failures. This combination can result in
two ctrl_iface events in the peer rejecting a PD case. Clean this up by
only indicating the failure event.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

src/p2p/p2p_pd.c

index 7f18766dd72d30d89dc97d6d68299ad9a6b6dcbc..2985e5a968ee3636a5d54266b4c733c9faf6e4c8 100644 (file)
@@ -199,6 +199,7 @@ void p2p_process_prov_disc_resp(struct p2p_data *p2p, const u8 *sa,
        struct p2p_message msg;
        struct p2p_device *dev;
        u16 report_config_methods = 0;
+       int success = 0;
 
        if (p2p_parse(data, len, &msg))
                return;
@@ -267,11 +268,12 @@ void p2p_process_prov_disc_resp(struct p2p_data *p2p, const u8 *sa,
        dev->wps_prov_info = msg.wps_config_methods;
 
        p2p_parse_free(&msg);
+       success = 1;
 
 out:
        dev->req_config_methods = 0;
        p2p->cfg->send_action_done(p2p->cfg->cb_ctx);
-       if (p2p->cfg->prov_disc_resp)
+       if (success && p2p->cfg->prov_disc_resp)
                p2p->cfg->prov_disc_resp(p2p->cfg->cb_ctx, sa,
                                         report_config_methods);
 }