hfp_ag_bluez5: Create a hash to store connections
authorPaulo Borges <paulo.borges@openbossa.org>
Fri, 19 Apr 2013 22:19:03 +0000 (19:19 -0300)
committerDenis Kenzior <denkenz@gmail.com>
Mon, 22 Apr 2013 08:53:42 +0000 (03:53 -0500)
We need to store active connections so we can disconnect them at
RequestDisconnect().

When we remove a connection from the hash, we also close it.

plugins/hfp_ag_bluez5.c

index c171c87..bbced26 100644 (file)
 static guint modemwatch_id;
 static GList *modems;
 static GHashTable *sim_hash = NULL;
+static GHashTable *connection_hash;
+
+static void connection_destroy(gpointer data)
+{
+       int fd = GPOINTER_TO_INT(data);
+
+       DBG("fd %d", fd);
+
+       close(fd);
+}
 
 static DBusMessage *profile_new_connection(DBusConnection *conn,
                                                DBusMessage *msg, void *data)
@@ -251,6 +261,9 @@ static int hfp_ag_init(void)
        modemwatch_id = __ofono_modemwatch_add(modem_watch, NULL, NULL);
        __ofono_modem_foreach(call_modemwatch, NULL);
 
+       connection_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                       g_free, connection_destroy);
+
        return 0;
 }
 
@@ -262,6 +275,8 @@ static void hfp_ag_exit(void)
        g_dbus_unregister_interface(conn, HFP_AG_EXT_PROFILE_PATH,
                                                BLUEZ_PROFILE_INTERFACE);
 
+       g_hash_table_destroy(connection_hash);
+
        g_list_free(modems);
        g_hash_table_foreach_remove(sim_hash, sim_watch_remove, NULL);
        g_hash_table_destroy(sim_hash);