Hi Jouni,<br><br><div class="gmail_quote">On Sat, Dec 10, 2011 at 8:51 PM, Jouni Malinen <span dir="ltr"><<a href="mailto:j@w1.fi">j@w1.fi</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br></div><div class="im">
> Let's fill in this address and also clean up WPS PBC sessions<br>
> on WSC process completion if UUID was changed.<br>
<br>
</div>This part did not even compile cleanly.. And well, the patch did not<br>
apply either due to some whitespace damage. Did this miss some changes<br>
since one of the wps_registrar_remove_pbc_session() calls was not<br>
updated with the new argument. I would assume you mean to do something<br>
like this:<br>
<br>
<br>
diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c<br>
index e59edb8..eda1c70 100644<br>
--- a/src/wps/wps_registrar.c<br>
+++ b/src/wps/wps_registrar.c<br>
@@ -310,13 +310,17 @@ static void wps_registrar_add_pbc_session(struct wps_registrar *reg,<br>
<div class="im"><br>
<br>
static void wps_registrar_remove_pbc_session(struct wps_registrar *reg,<br>
- const u8 *uuid_e)<br>
+ const u8 *uuid_e,<br>
+ const u8 *p2p_dev_addr)<br>
{<br>
struct wps_pbc_session *pbc, *prev = NULL, *tmp;<br>
<br>
pbc = reg->pbc_sessions;<br>
while (pbc) {<br>
- if (os_memcmp(pbc->uuid_e, uuid_e, WPS_UUID_LEN) == 0) {<br>
+ if (os_memcmp(pbc->uuid_e, uuid_e, WPS_UUID_LEN) == 0 ||<br>
</div>+ (p2p_dev_addr && !is_zero_ether_addr(reg->p2p_dev_addr) &&<br>
+ os_memcmp(reg->p2p_dev_addr, p2p_dev_addr, ETH_ALEN) ==<br>
+ 0)) {<br>
<div class="im"> if (prev)<br>
prev->next = pbc->next;<br>
else<br>
</div>@@ -945,7 +949,7 @@ void wps_registrar_complete(struct wps_registrar *registrar, const u8 *uuid_e)<br>
{<br>
if (registrar->pbc) {<br>
wps_registrar_remove_pbc_session(registrar,<br>
- uuid_e);<br>
+ uuid_e, NULL);<br>
wps_registrar_pbc_completed(registrar);<br>
} else {<br>
wps_registrar_pin_completed(registrar);<br>
@@ -3047,7 +3051,8 @@ static enum wps_process_res wps_process_wsc_done(struct wps_data *wps,<br>
<div class="im"><br>
if (wps->pbc) {<br>
wps_registrar_remove_pbc_session(wps->wps->registrar,<br>
- wps->uuid_e);<br>
+ wps->uuid_e,<br>
+ wps->p2p_dev_addr);<br>
wps_registrar_pbc_completed(wps->wps->registrar);<br>
} else {<br>
wps_registrar_pin_completed(wps->wps->registrar);<br>
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c<br>
</div>index c2095ea..a1c8791 100644<br>
--- a/wpa_supplicant/p2p_supplicant.c<br>
+++ b/wpa_supplicant/p2p_supplicant.c<br>
@@ -689,7 +689,7 @@ static void p2p_go_configured(void *ctx, void *data)<br>
<div class="HOEnZb"><div class="h5"> }<br>
if (params->wps_method == WPS_PBC)<br>
wpa_supplicant_ap_wps_pbc(wpa_s, params->peer_interface_addr,<br>
- NULL);<br>
+ params->peer_device_addr);<br>
else if (wpa_s->p2p_pin[0])<br>
wpa_supplicant_ap_wps_pin(wpa_s, params->peer_interface_addr,<br>
wpa_s->p2p_pin, NULL, 0);<br><br></div></div></blockquote><div><br></div><div>Right. Sorry about that. I've used the patch I had as an RFC and I totally forgot to check if there were changes to this code since Nov 29, and now I can see that there was the commit on Nov 30 adding one more call to wpa_supplicant_ap_wps_pbc().</div>
<div><br></div><div>So once again sorry for the mess and thanks for taking care of fixing it,</div><div><br></div><div>Thanks,</div><div> Vitaly</div></div>