Destroy session first, and destroy group later 47/139547/3
authorJiung Yu <jiung.yu@samsung.com>
Wed, 19 Jul 2017 09:05:59 +0000 (18:05 +0900)
committerJiung Yu <jiung.yu@samsung.com>
Wed, 19 Jul 2017 09:14:11 +0000 (18:14 +0900)
Description: In wfd_destroy_group, memory of peers which are member of
group is freed. In wfd_destroy_session, the peer is need to check
whether a session is completed or not. So, if we use wfd_destroy_group
first, wfd_destroy_session couldn't be used.

Change-Id: Ied2e68a18c829b5ea36e86191888116ac86f5da0
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
packaging/wifi-direct-manager.spec
src/wifi-direct-event.c
src/wifi-direct-group.c
src/wifi-direct-manager.c
src/wifi-direct-session.c

index 16b805d7b1765bb2883d4386d9409e299f90f492..dd5d4b68788b904cc0db8ecc7c111500ab88d29a 100644 (file)
@@ -8,7 +8,7 @@
 
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.236
+Version:       1.2.237
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
index 2061df240008804dd7e000ebe09010f097964359..d60a363ee1fb1fa906f4ac5b0b0e620f220f80b3 100644 (file)
@@ -142,8 +142,8 @@ void wfd_event_deactivated(wfd_oem_event_s *event)
                                     "Deactivation",
                                     g_variant_new("(i)", WIFI_DIRECT_ERROR_NONE));
 
-       wfd_destroy_group(manager);
        wfd_destroy_session(manager);
+       wfd_destroy_group(manager);
        wfd_peer_clear_all(manager);
        wfd_local_reset_data(manager);
 
@@ -594,8 +594,8 @@ void wfd_event_go_neg_fail(wfd_oem_event_s *event)
        wfd_state_set(manager, WIFI_DIRECT_STATE_ACTIVATED);
        wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
 
-       wfd_destroy_group(manager);
        wfd_destroy_session(manager);
+       wfd_destroy_group(manager);
        manager->local->dev_role = WFD_DEV_ROLE_NONE;
        __WDS_LOG_FUNC_EXIT__;
        return;
@@ -924,8 +924,8 @@ void wfd_event_group_destroyed(wfd_oem_event_s *event)
 
        wfd_state_set(manager, WIFI_DIRECT_STATE_ACTIVATED);
        wfd_util_set_wifi_direct_state(WIFI_DIRECT_STATE_ACTIVATED);
-       wfd_destroy_group(manager);
        wfd_destroy_session(manager);
+       wfd_destroy_group(manager);
        manager->local->dev_role = WFD_DEV_ROLE_NONE;
 
        __WDS_LOG_FUNC_EXIT__;
index d0b3d7f6bdaf2c4cda71a171bd61419be742b1c1..28d92863f1169d8424b85ae82348d281f64fbf42 100644 (file)
@@ -274,7 +274,7 @@ int wfd_destroy_group(void *data)
        temp = g_list_first(group->members);
        while (temp && count < group->member_count) {
                member = temp->data;
-               WDS_LOGD("%dth member[%s] will be removed", count, member->dev_name);
+               WDS_LOGD("%dth member[%p: %s] will be removed", count, member, member->dev_name);
                g_free(member);
                member = NULL;
                temp = g_list_next(temp);
index 95e555f8bdded210f10781861ce3d71577a93dd4..40b52ea732074e54cd96eed94ca373281d2ed6ff 100644 (file)
@@ -730,8 +730,8 @@ int wfd_manager_deactivate(wfd_manager_s *manager)
 
        manager->req_wps_mode = WFD_WPS_MODE_PBC;
 
-       wfd_destroy_group(manager);
        wfd_destroy_session(manager);
+       wfd_destroy_group(manager);
        wfd_peer_clear_all(manager);
        wfd_local_reset_data(manager);
 
index b4d59c5330c84b1520359bf52b15cd3bbd07d466..17580484c6e05ac10fd837a963b576f623311fac 100644 (file)
@@ -274,6 +274,7 @@ int wfd_destroy_session(void *data)
        }
        wfd_session_timer(session, 0);
        peer = session->peer;
+       WDS_LOGD("peer :%p", peer);
 
        if (peer) {
                if (session->state == SESSION_STATE_COMPLETED)