P2P: Provide local event on GO Neg Req rejection
authorJouni Malinen <jouni.malinen@atheros.com>
Mon, 6 Sep 2010 16:00:43 +0000 (19:00 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 10 Sep 2010 17:30:25 +0000 (10:30 -0700)
If an authorized (p2p_connect used locally) GO Negotiation is
rejected when receiving GO Negotiation Request from the peer,
indicate the failure with a ctrl_interface P2P-GO-NEG-FAILURE
event. Previously, this event was only shown on the peer (i.e.,
the device receiving the GO Negotiation Response with non-zero
Status code).

src/p2p/p2p.c
src/p2p/p2p_go_neg.c

index 1247678..5d45811 100644 (file)
@@ -2070,6 +2070,10 @@ static void p2p_go_neg_resp_failure_cb(struct p2p_data *p2p, int success)
        wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG,
                "P2P: GO Negotiation Response (failure) TX callback: "
                "success=%d", success);
+       if (p2p->go_neg_peer && p2p->go_neg_peer->status != P2P_SC_SUCCESS) {
+               p2p_go_neg_failed(p2p, p2p->go_neg_peer,
+                                 p2p->go_neg_peer->status);
+       }
 }
 
 
index bf36c7a..1e64047 100644 (file)
@@ -580,6 +580,8 @@ void p2p_process_go_neg_req(struct p2p_data *p2p, const u8 *sa,
        }
 
 fail:
+       if (dev)
+               dev->status = status;
        resp = p2p_build_go_neg_resp(p2p, dev, msg.dialog_token, status,
                                     !tie_breaker);
        p2p_parse_free(&msg);