P2P: Process Invitation Request from previously unknown peer
authorArdong Chen <ardongchen@atheros.com>
Mon, 6 Sep 2010 15:10:55 +0000 (18:10 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 10 Sep 2010 17:30:25 +0000 (10:30 -0700)
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.

src/p2p/p2p_invitation.c

index c309fe1..052690b 100644 (file)
@@ -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) {