Updated to hostap_2_6
[mech_eap.git] / libeap / src / wps / wps_upnp.c
index 44318e0..0c458c6 100644 (file)
@@ -1082,6 +1082,7 @@ upnp_wps_get_iface(struct upnp_wps_device_sm *sm, void *priv)
 void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv)
 {
        struct upnp_wps_device_interface *iface;
+       struct upnp_wps_peer *peer;
 
        if (!sm)
                return;
@@ -1102,8 +1103,13 @@ void upnp_wps_device_deinit(struct upnp_wps_device_sm *sm, void *priv)
                                            iface->wps->registrar);
        dl_list_del(&iface->list);
 
-       if (iface->peer.wps)
-               wps_deinit(iface->peer.wps);
+       while ((peer = dl_list_first(&iface->peers, struct upnp_wps_peer,
+                                    list))) {
+               if (peer->wps)
+                       wps_deinit(peer->wps);
+               dl_list_del(&peer->list);
+               os_free(peer);
+       }
        os_free(iface->ctx->ap_pin);
        os_free(iface->ctx);
        os_free(iface);
@@ -1141,6 +1147,7 @@ upnp_wps_device_init(struct upnp_wps_device_ctx *ctx, struct wps_context *wps,
        }
        wpa_printf(MSG_DEBUG, "WPS UPnP: Init interface instance %p", iface);
 
+       dl_list_init(&iface->peers);
        iface->ctx = ctx;
        iface->wps = wps;
        iface->priv = priv;