Modify the logic to add peer to group 70/73870/1
authorYu Jiung <jiung.yu@samsung.com>
Fri, 10 Jun 2016 00:55:09 +0000 (09:55 +0900)
committerYu Jiung <jiung.yu@samsung.com>
Fri, 10 Jun 2016 01:10:51 +0000 (10:10 +0900)
Description : When a P2P peer device join the group as GC
after group negotiation, sometimes Connected event is occured
several times. To prevent this, cease to add peer to group when
there's any problem

Change-Id: Ibb814a5090855b8ff3c729a5ff7cc4b9556b0da8
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
packaging/wifi-direct-manager.spec
plugin/wpasupplicant/ctrl_iface_dbus/wfd-plugin-wpasupplicant.c
src/wifi-direct-event.c
src/wifi-direct-peer.c

index 4f355cd..c63353c 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          wifi-direct-manager
 Summary:       Wi-Fi Direct manger
-Version:       1.2.169
+Version:       1.2.170
 Release:       1
 Group:      Network & Connectivity/Wireless
 License:    Apache-2.0
index f08c36e..e6c34cd 100755 (executable)
@@ -897,9 +897,7 @@ void __ws_extract_group_details(const char *key, GVariant *value, void *user_dat
                return;
        }
 
-#ifdef TIZEN_FEATURE_IP_OVER_EAPOL
        wfd_oem_group_data_s *group = (wfd_oem_group_data_s *)event->edata;
-#endif /* TIZEN_FEATURE_IP_OVER_EAPOL */
 #if defined(TIZEN_DEBUG_DBUS_VALUE)
        CHECK_KEY_VALUE(key, value);
 #endif /* TIZEN_DEBUG_DBUS_VALUE */
@@ -4149,7 +4147,7 @@ int ws_disconnect(unsigned char *peer_addr, int is_iface_addr)
        memset(&params, 0x0, sizeof(dbus_method_param_s));
 
        dbus_set_method_param(&params, "RemoveClient", g_pd->iface_path, g_dbus);
-       builder = g_variant_builder_new(G_VARIANT_TYPE ("a{sv}"));
+       builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
 
        if (is_iface_addr) {
                char peer_mac_str[WS_MACSTR_LEN] = {'\0', };
@@ -4163,12 +4161,12 @@ int ws_disconnect(unsigned char *peer_addr, int is_iface_addr)
 
                g_snprintf(peer_path, DBUS_OBJECT_PATH_MAX, "%s/Peers/"
                                COMPACT_MACSTR, g_pd->iface_path, MAC2STR(peer_addr));
-               g_variant_builder_add (builder, "{sv}", "peer",
+               g_variant_builder_add(builder, "{sv}", "peer",
                                g_variant_new_object_path(peer_path));
        }
 
-       value = g_variant_new ("(a{sv})", builder);
-       g_variant_builder_unref (builder);
+       value = g_variant_new("(a{sv})", builder);
+       g_variant_builder_unref(builder);
 
        params.params = value;
 #if defined(TIZEN_DEBUG_DBUS_VALUE)
index 3ef8179..0fbc0bc 100755 (executable)
@@ -961,7 +961,7 @@ static void __wfd_process_sta_connected(wfd_manager_s *manager, wfd_oem_event_s
        if (ISZEROMACADDR(event->dev_addr)) {
                WDS_LOGD("Legacy Peer Connected [Peer: " MACSTR "]", MAC2STR(event->intf_addr));
 
-               peer = wfd_peer_find_by_dev_addr(manager, event->intf_addr);
+               peer = wfd_peer_find_by_addr(manager, event->intf_addr);
                if (!peer) {
                        WDS_LOGI("Add legacy peer");
                        peer = wfd_add_peer(manager, event->intf_addr, "LEGACY-PEER");
@@ -972,10 +972,15 @@ static void __wfd_process_sta_connected(wfd_manager_s *manager, wfd_oem_event_s
                        }
                }
 
+               if (wfd_group_add_member(group, peer->dev_addr) == -1) {
+                       WDS_LOGE("Failed to add Legacy peer.");
+                       __WDS_LOG_FUNC_EXIT__;
+                       return;
+               }
+
                memcpy(peer->intf_addr, event->intf_addr, MACADDR_LEN);
                peer->state = WFD_PEER_STATE_CONNECTED;
                peer->is_legacy = TRUE;
-               wfd_group_add_member(group, peer->dev_addr);
 
                g_snprintf(peer_mac_address, MACSTR_LEN, MACSTR, MAC2STR(peer->dev_addr));
                wfd_manager_dbus_emit_signal(WFD_MANAGER_MANAGE_INTERFACE,
index 66000e5..c7c4ee5 100644 (file)
@@ -159,9 +159,8 @@ int wfd_update_peer(void *data, wfd_device_s *peer)
                return -1;
        }
        g_strlcpy(peer->dev_name, oem_dev->dev_name, DEV_NAME_LEN + 1);
-#ifndef CTRL_IFACE_DBUS
-       memcpy(peer->intf_addr, oem_dev->intf_addr, MACADDR_LEN);
-#endif /* CTRL_IFACE_DBUS */
+       if (!ISZEROMACADDR(oem_dev->intf_addr))
+               memcpy(peer->intf_addr, oem_dev->intf_addr, MACADDR_LEN);
        memcpy(peer->go_dev_addr, oem_dev->go_dev_addr, MACADDR_LEN);
        peer->channel = oem_dev->channel;
        peer->dev_role = oem_dev->dev_role;