Fix incorrect handling of STA CONNECTED event 75/196075/1
authorShagun Garg <shagun1.garg@samsung.com>
Fri, 21 Dec 2018 08:02:07 +0000 (13:32 +0530)
committerShagun Garg <shagun1.garg@samsung.com>
Fri, 21 Dec 2018 08:05:52 +0000 (13:35 +0530)
Mobile is not able to create wifi-direct connection with TV after multiple trials
This is observed when previously simultaneous connection has been requested for two devices (speaker and mobile).
Issue :
1. There is a  previously created session for mobile when sta_connected is received for speaker.
2. Incorrect device is added as member in group and "connection" signal is sent for wrong device.
Solution :
1. Previously created session for mobile should be destroyed in case Session->peer->dev_addr and event->dev_addr are not matched in wfd_event_sta_connected()

Change-Id: Icf4af67d653e0bc23faffe2d32ec455de3e70c04
Signed-off-by: Shagun Garg <shagun1.garg@samsung.com>
packaging/wifi-direct-manager.spec
src/wifi-direct-event.c [changed mode: 0644->0755]

index ecdde59..61c1924 100644 (file)
@@ -6,7 +6,7 @@
 
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.271
+Version:       1.2.272
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
old mode 100644 (file)
new mode 100755 (executable)
index 161e8be..eb5eb54
@@ -1036,6 +1036,15 @@ void wfd_event_sta_connected(wfd_oem_event_s *event)
        wfd_device_s *peer = NULL;
        char peer_mac_address[MACSTR_LEN+1] = {0, };
 
+       if(session) {
+               WDS_LOGD("peer->dev addr : [" MACSTR "]", MAC2STR(session->peer->dev_addr));
+               WDS_LOGD("event->dev addr : [" MACSTR "]", MAC2STR(event->dev_addr));
+               if (session->peer && memcmp(event->dev_addr, session->peer->dev_addr, MACADDR_LEN)) {
+                       WDS_LOGE("Session Device and connected device do not match.Destroy previous session.");
+                       wfd_destroy_session(manager);
+               }
+       }
+
        if (ISZEROMACADDR(event->dev_addr)) {
                WDS_LOGD("Legacy Peer Connected [Peer: " MACSTR "]", MAC2STR(event->intf_addr));