WPS ER: Deinitialize protocol instance with STA after completion
authorJouni Malinen <j@w1.fi>
Sat, 21 Nov 2009 16:39:12 +0000 (18:39 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 21 Nov 2009 16:39:12 +0000 (18:39 +0200)
In addition, remove the WPS ER Enrollee entry 10 seconds after
successful completion of the protocol run.

src/wps/wps_er.c

index bedd60a..c88bee5 100644 (file)
@@ -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);
+               }
        }
 }