#include "p2p.h"
static GSList *driver_list = NULL;
+static GList *server_list = NULL;
struct p2p_data {
struct near_p2p_driver *driver;
g_free(client_data);
}
+static void free_server_data(gpointer data)
+{
+ struct p2p_data *server_data;
+
+ DBG("");
+
+ server_data = (struct p2p_data *)data;
+
+ if (server_data->watch > 0)
+ g_source_remove(server_data->watch);
+ server_data->watch = 0;
+ g_list_free_full(server_data->client_list, free_client_data);
+
+ DBG("Closing server socket");
+
+ close(server_data->fd);
+}
+
static gboolean p2p_listener_event(GIOChannel *channel, GIOCondition condition,
gpointer user_data)
{
p2p_listener_event,
(gpointer) server_data);
+ server_list = g_list_append(server_list, server_data);
+
return 0;
}
npp_exit();
handover_exit();
+ g_list_free_full(server_list, free_server_data);
+
near_device_driver_unregister(&p2p_driver);
}