return Error;
}
+static void __net_client_clear_cb_data(net_event_info_s *client)
+{
+ if (client && client->Datalength > 0) {
+ if (client->Event == NET_EVENT_WIFI_SPECIFIC_SCAN_IND ||
+ client->Event == NET_EVENT_WIFI_BSSID_SCAN_IND ||
+ client->Event == NET_EVENT_WIFI_NETLINK_SCAN_IND) {
+ GSList *bss_info_list = client->Data;
+
+ if (bss_info_list != NULL)
+ g_slist_free_full(bss_info_list, g_free);
+ }
+ g_free(client->Data);
+ }
+ g_free(client);
+}
+
static gboolean __net_client_cb_wifi_idle(gpointer data)
{
net_event_info_s *event_data = (net_event_info_s *)data;
if (NetworkInfo.ClientEventCb_wifi != NULL)
NetworkInfo.ClientEventCb_wifi(event_data, NetworkInfo.user_data_wifi);
- if (event_data->Datalength > 0)
- g_free(event_data->Data);
-
- g_free(event_data);
+ __net_client_clear_cb_data(event_data);
return FALSE;
}
}
id = _net_client_callback_add(__net_client_cb_wifi_idle, (gpointer)client);
- if (!id) {
- if (client->Datalength > 0)
- g_free(client->Data);
-
- g_free(client);
- }
+ if (!id)
+ __net_client_clear_cb_data(client);
}
__NETWORK_FUNC_EXIT__;
src = g_main_context_find_source_by_id(g_main_context_default(), data->id);
if (src) {
+ __net_client_clear_cb_data((net_event_info_s *)data->user_data);
g_source_destroy(src);
cur = managed_idler_list;
} else