diff options
-rw-r--r-- | wpa_supplicant/ctrl_iface.c | 13 | ||||
-rw-r--r-- | wpa_supplicant/ctrl_iface_unix.c | 7 | ||||
-rw-r--r-- | wpa_supplicant/p2p_supplicant.c | 13 |
3 files changed, 23 insertions, 10 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 480c077..0d8821b 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -3552,12 +3552,6 @@ static int p2p_ctrl_invite_persistent(struct wpa_supplicant *wpa_s, char *cmd) int ht40; id = atoi(cmd); - pos = os_strstr(cmd, " peer="); - if (pos) { - pos += 6; - if (hwaddr_aton(pos, peer)) - return -1; - } ssid = wpa_config_get_network(wpa_s->conf, id); if (ssid == NULL || ssid->disabled != 2) { wpa_printf(MSG_DEBUG, "CTRL_IFACE: Could not find SSID id=%d " @@ -3574,6 +3568,13 @@ static int p2p_ctrl_invite_persistent(struct wpa_supplicant *wpa_s, char *cmd) return -1; } + pos = os_strstr(cmd, " peer="); + if (pos) { + pos += 6; + if (hwaddr_aton(pos, peer)) + return -1; + } + ht40 = os_strstr(cmd, " ht40") != NULL; return wpas_p2p_invite(wpa_s, pos ? peer : NULL, ssid, NULL, freq, diff --git a/wpa_supplicant/ctrl_iface_unix.c b/wpa_supplicant/ctrl_iface_unix.c index 5d81b43..80db27e 100644 --- a/wpa_supplicant/ctrl_iface_unix.c +++ b/wpa_supplicant/ctrl_iface_unix.c @@ -175,7 +175,7 @@ static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx, if (ifend != NULL) *ifend++ = '\0'; else - ifend = ""; + *(ifname - 1) = '\0'; wpa_printf(MSG_DEBUG, "Found %s", ifname); for (wpa_s = wpa_s->global->ifaces; wpa_s; wpa_s = wpa_s->next) { if (os_strcmp(wpa_s->ifname, ifname + 10) == 0) @@ -185,8 +185,9 @@ static void wpa_supplicant_ctrl_iface_receive(int sock, void *eloop_ctx, wpa_printf(MSG_ERROR, "P2P: %s does not exist", ifname); wpa_s = eloop_ctx; } - os_memmove(ifname, ifend, strlen(ifend) + 1); - wpa_printf(MSG_INFO, "wpa_s %p cmd %s", wpa_s, buf); + if (ifend != NULL) + os_memmove(ifname, ifend, strlen(ifend) + 1); + wpa_printf(MSG_INFO, "wpa_s->ifname %s cmd %s", wpa_s ? wpa_s->ifname : "NULL", buf); } #endif /* defined CONFIG_P2P && defined ANDROID_P2P */ reply = wpa_supplicant_ctrl_iface_process(wpa_s, buf, diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 469e383..2cd2e8e 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -1203,7 +1203,6 @@ void wpas_dev_found(void *ctx, const u8 *addr, WFD_DEV_INFO_SIZE); } #endif /* CONFIG_WIFI_DISPLAY */ - wpa_msg(wpa_s, MSG_INFO, P2P_EVENT_DEVICE_FOUND MACSTR " p2p_dev_addr=" MACSTR " pri_dev_type=%s name='%s' config_methods=0x%x " @@ -2199,6 +2198,18 @@ static void wpas_prov_disc_fail(void *ctx, const u8 *peer, return; } +#ifdef ANDROID_P2P + /* If provision discovery failed it is safe to cancel the timer here and + * also do not start the join */ + if (wpa_s->pending_pd_before_join && + (os_memcmp(peer, wpa_s->pending_join_dev_addr, ETH_ALEN) == 0 || + os_memcmp(peer, wpa_s->pending_join_iface_addr, ETH_ALEN) == 0)) { + wpa_s->pending_pd_before_join = 0; + wpa_printf(MSG_DEBUG, "P2P: Do not Start pending " + "join-existing-group operation"); + eloop_cancel_timeout(wpas_p2p_pd_before_join_timeout, wpa_s, NULL); + } +#endif /* ANDROID_P2P */ wpa_msg(wpa_s, MSG_INFO, P2P_EVENT_PROV_DISC_FAILURE " p2p_dev_addr=" MACSTR " status=%d", MAC2STR(peer), status); |