Browse Source

P2P: Provide local event on GO Neg Req rejection

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).
Jouni Malinen 14 years ago
parent
commit
fbe7027239
2 changed files with 6 additions and 0 deletions
  1. 4 0
      src/p2p/p2p.c
  2. 2 0
      src/p2p/p2p_go_neg.c

+ 4 - 0
src/p2p/p2p.c

@@ -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);
+	}
 }
 
 

+ 2 - 0
src/p2p/p2p_go_neg.c

@@ -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);