From e0b3b3cb77d66e54cded20cc106719c60ad96509 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Fri, 12 Feb 2010 12:38:14 +0200 Subject: [PATCH] WPS: Fix AP operation with internal Registrar when ER is also active Ignore the pending WPS message from ER (PutWLANReseponse action) if the internal Registrar has already sent out M2. --- src/wps/wps_i.h | 1 + src/wps/wps_registrar.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wps/wps_i.h b/src/wps/wps_i.h index e036176d7..e3a51412b 100644 --- a/src/wps/wps_i.h +++ b/src/wps/wps_i.h @@ -104,6 +104,7 @@ struct wps_data { u16 config_error; int ext_reg; + int int_reg; struct wps_credential *new_ap_settings; diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c index db20c7da0..30283fe7f 100644 --- a/src/wps/wps_registrar.c +++ b/src/wps/wps_registrar.c @@ -1357,6 +1357,7 @@ static struct wpabuf * wps_build_m2(struct wps_data *wps) return NULL; } + wps->int_reg = 1; wps->state = RECV_M3; return msg; } @@ -1557,7 +1558,7 @@ struct wpabuf * wps_registrar_get_msg(struct wps_data *wps, struct wpabuf *msg; #ifdef CONFIG_WPS_UPNP - if (wps->wps->wps_upnp) { + if (!wps->int_reg && wps->wps->wps_upnp) { struct upnp_pending_message *p, *prev = NULL; if (wps->ext_reg > 1) wps_registrar_free_pending_m2(wps->wps);