At PeerDisconnected peer entry should be removed from group member list. 80/58380/2
authorNishant Chaprana <n.chaprana@samsung.com>
Sat, 30 Jan 2016 09:56:36 +0000 (15:26 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Fri, 12 Feb 2016 05:56:43 +0000 (11:26 +0530)
Because peer entry has been updated in group member list at PeerJoined event.
So that entry should be deleted when PeerDisconnected is received.

Change-Id: I0ef3d0ea3d8dbb0554abbe5796bf753dc8ed738d
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
packaging/wifi-direct-manager.spec
src/wifi-direct-event.c

index e83985c..ca25e88 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.127
+Version:       1.2.128
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
index 77ddae8..aa1184f 100644 (file)
@@ -1193,17 +1193,6 @@ static void __wfd_process_sta_disconnected(wfd_manager_s *manager, wfd_oem_event
                        noti.event = WIFI_DIRECT_CLI_EVENT_DISCONNECTION_IND;
                noti.error = WIFI_DIRECT_ERROR_NONE;
                g_snprintf(noti.param1, MACSTR_LEN, MACSTR, MAC2STR(peer_addr));
-               /* If there is no member, GO should be destroyed */
-#ifdef TIZEN_TV
-               /* If GO is Auto GO, then it should not be removed when no member left */
-               if (!group->member_count && (wfd_group_is_autonomous(group) == FALSE)) {
-#else /* TIZEN_TV */
-               if (!group->member_count) {
-#endif /* TIZEN_TV */
-                       wfd_oem_destroy_group(manager->oem_ops, group->ifname);
-                       wfd_destroy_group(manager, group->ifname);
-                       wfd_peer_clear_all(manager);
-               }
        } else if (manager->state == WIFI_DIRECT_STATE_DISCONNECTING) {
                noti.event = WIFI_DIRECT_CLI_EVENT_DISCONNECTION_RSP;
                noti.error = WIFI_DIRECT_ERROR_NONE;
@@ -1214,6 +1203,7 @@ static void __wfd_process_sta_disconnected(wfd_manager_s *manager, wfd_oem_event
                        manager->local->dev_role == WFD_DEV_ROLE_GO) {
                if (WFD_PEER_STATE_CONNECTED == peer->state) {
                        WDS_LOGD("Peer is already Connected !!!");
+                       wfd_group_remove_member(group, peer_addr);
                        noti.event = WIFI_DIRECT_CLI_EVENT_DISASSOCIATION_IND;
                        noti.error = WIFI_DIRECT_ERROR_NONE;
                } else if (WFD_PEER_STATE_CONNECTING == peer->state) {
@@ -1241,6 +1231,18 @@ static void __wfd_process_sta_disconnected(wfd_manager_s *manager, wfd_oem_event
                wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
        }
 
+       /* If there is no member, GO should be destroyed */
+#ifdef TIZEN_TV
+       /* If GO is Auto GO, then it should not be removed when no member left */
+       if (!group->member_count && (wfd_group_is_autonomous(group) == FALSE)) {
+#else /* TIZEN_TV */
+       if (!group->member_count) {
+#endif /* TIZEN_TV */
+               wfd_oem_destroy_group(manager->oem_ops, group->ifname);
+               wfd_destroy_group(manager, group->ifname);
+               wfd_peer_clear_all(manager);
+       }
+
        wfd_destroy_session(manager);
 
        __WDS_LOG_FUNC_EXIT__;