Parcourir la source

WPS ER: Deinitialize protocol instance with STA after completion

In addition, remove the WPS ER Enrollee entry 10 seconds after
successful completion of the protocol run.
Jouni Malinen il y a 15 ans
Parent
commit
11ff95783e
1 fichiers modifiés avec 12 ajouts et 0 suppressions
  1. 12 0
      src/wps/wps_er.c

+ 12 - 0
src/wps/wps_er.c

@@ -832,6 +832,18 @@ static void wps_er_sta_process(struct wps_er_sta *sta, struct wpabuf *msg,
 		struct wpabuf *next = wps_get_msg(sta->wps, &op_code);
 		if (next)
 			wps_er_sta_send_msg(sta, next);
+	} else {
+		wpa_printf(MSG_DEBUG, "WPS ER: Protocol run %s with the "
+			   "enrollee (res=%d)",
+			   res == WPS_DONE ? "succeeded" : "failed", res);
+		wps_deinit(sta->wps);
+		sta->wps = NULL;
+		if (res == WPS_DONE) {
+			/* Remove the STA entry after short timeout */
+			eloop_cancel_timeout(wps_er_sta_timeout, sta, NULL);
+			eloop_register_timeout(10, 0, wps_er_sta_timeout, sta,
+					       NULL);
+		}
 	}
 }