[wifi-direct-manager]Add the logic for keeping peer memory in session 48/57848/2
authorYu Jiung <jiung.yu@samsung.com>
Wed, 20 Jan 2016 07:13:17 +0000 (16:13 +0900)
committerYu Jiung <jiung.yu@samsung.com>
Mon, 1 Feb 2016 01:15:54 +0000 (10:15 +0900)
Description : During Provision Discovery, there's the case a peer somtimes
lost by PEER-LOST-EVENT from wpasupplicant. If there's a session and the session
has the pointer for that peer, that pointer won't be avaliable.

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

index d60d730..206344e 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.120
+Version:       1.2.121
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
index cc71b10..ab2164f 100644 (file)
@@ -211,6 +211,8 @@ static void __wfd_process_peer_disappeared(wfd_manager_s *manager, wfd_oem_event
        __WDS_LOG_FUNC_ENTER__;
 
        wifi_direct_client_noti_s noti;
+       wfd_session_s *session = NULL;
+       wfd_device_s *peer = NULL;
 
        if (event == NULL || manager == NULL) {
                WDS_LOGE("Invalid parameter");
@@ -218,6 +220,17 @@ static void __wfd_process_peer_disappeared(wfd_manager_s *manager, wfd_oem_event
                return;
        }
 
+       session = manager->session;
+       if(session != NULL && session->peer != NULL) {
+               peer = session->peer;
+               WDS_LOGD("session peer [" MACSTR "] lost peer ["  MACSTR "]", MAC2STR(peer->dev_addr),
+                                               MAC2STR(event->dev_addr));
+               if(memcmp(peer->dev_addr, event->dev_addr, MACADDR_LEN) == 0) {
+                       WDS_LOGD("peer already in connection");
+                       return;
+               }
+       }
+
        wfd_remove_peer(manager, event->dev_addr);
 
        memset(&noti, 0x0, sizeof(wifi_direct_client_noti_s));