Browse Source

P2P: Process Invitation Request from previously unknown peer

Since this message now includes P2P Device Info attribute, it is
reasonable to learn the peer data and process the message instead of
rejecting the message.
Ardong Chen 14 years ago
parent
commit
ffe98dfb88
1 changed files with 19 additions and 4 deletions
  1. 19 4
      src/p2p/p2p_invitation.c

+ 19 - 4
src/p2p/p2p_invitation.c

@@ -122,12 +122,27 @@ void p2p_process_invitation_req(struct p2p_data *p2p, const u8 *sa,
 		return;
 
 	dev = p2p_get_device(p2p, sa);
-	if (dev == NULL) {
+	if (dev == NULL || (dev->flags & P2P_DEV_PROBE_REQ_ONLY)) {
 		wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG,
-			"P2P: Reject Invitation Request from unknown peer "
+			"P2P: Invitation Request from unknown peer "
 			MACSTR, MAC2STR(sa));
-		status = P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE;
-		goto fail;
+
+		if (p2p_add_device(p2p, sa, rx_freq, 0, data + 1, len - 1)) {
+			wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG,
+				"P2P: Invitation Request add device failed "
+				MACSTR, MAC2STR(sa));
+			status = P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE;
+			goto fail;
+		}
+
+		dev = p2p_get_device(p2p, sa);
+		if (dev == NULL) {
+			wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG,
+				"P2P: Reject Invitation Request from unknown "
+				"peer " MACSTR, MAC2STR(sa));
+			status = P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE;
+			goto fail;
+		}
 	}
 
 	if (!msg.group_id || !msg.channel_list) {