int res = 0;
wfd_group_s *group = (wfd_group_s*) manager->group;
- if (group && group->role == WFD_DEV_ROLE_GC &&
- event->event_id == WFD_OEM_EVENT_PROV_DISC_REQ) {
+ if (group && group->role == WFD_DEV_ROLE_GC) {
WDS_LOGD("Device has GC role - ignore this provision request");
__WDS_LOG_FUNC_EXIT__;
return;
}
}
- if (peer)
+ if (peer) {
+ if (WFD_PEER_STATE_DISCOVERED < peer->state)
+ {
+ WDS_LOGD("Peer already connected/connecting, ignore this provision request");
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
peer->state = WFD_PEER_STATE_CONNECTING;
+ }
res = wfd_session_process_event(manager, event);
if (res < 0)