summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-03-12 18:57:37 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-03-12 18:57:37 +0000
commit5d14a87639406b220edaf07088eddc22a7f9b0fe (patch)
tree4b7f16c32bf37413f28ceabf59db100edd10ae11 /hcid
parent75add5651e5dbc49c9c144acceac7e2c32d9bd16 (diff)
Remove the local D-Bus setup
Diffstat (limited to 'hcid')
-rw-r--r--hcid/dbus-service.c10
-rw-r--r--hcid/main.c4
-rw-r--r--hcid/server.c123
-rw-r--r--hcid/server.h7
4 files changed, 12 insertions, 132 deletions
diff --git a/hcid/dbus-service.c b/hcid/dbus-service.c
index df04a325..b6875833 100644
--- a/hcid/dbus-service.c
+++ b/hcid/dbus-service.c
@@ -435,7 +435,7 @@ static gboolean service_startup_timeout(gpointer data)
int service_start(struct service *service, DBusConnection *conn)
{
DBusError derr;
- char *addr, *argv[2], *envp[2], command[PATH_MAX], address[256];
+ char *argv[2], *envp[1], command[PATH_MAX];
if (!dbus_connection_add_filter(conn, service_filter, service, NULL)) {
error("Unable to add signal filter");
@@ -456,13 +456,7 @@ int service_start(struct service *service, DBusConnection *conn)
argv[0] = command;
argv[1] = NULL;
- addr = get_local_server_address();
-
- snprintf(address, sizeof(address) - 1, "BLUETOOTHD_ADDRESS=%s", addr);
- envp[0] = address;
- envp[1] = NULL;
-
- dbus_free(addr);
+ envp[0] = NULL;
if (!g_spawn_async(SERVICEDIR, argv, envp, G_SPAWN_DO_NOT_REAP_CHILD,
service_setup, service, &service->pid, NULL)) {
diff --git a/hcid/main.c b/hcid/main.c
index 3f2a0c76..3276d5c2 100644
--- a/hcid/main.c
+++ b/hcid/main.c
@@ -922,8 +922,6 @@ int main(int argc, char *argv[])
notify_init();
- init_local_server();
-
init_services(CONFIGDIR);
/* Start event processor */
@@ -938,8 +936,6 @@ int main(int argc, char *argv[])
notify_close();
- shutdown_local_server();
-
cleanup_sdp_session();
plugin_cleanup();
diff --git a/hcid/server.c b/hcid/server.c
index 5a6924cb..70bed47a 100644
--- a/hcid/server.c
+++ b/hcid/server.c
@@ -25,129 +25,20 @@
#include <config.h>
#endif
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <sys/stat.h>
+#include <glib.h>
-#include <dbus.h>
-
-#include "dbus-database.h"
-
-#include "logging.h"
#include "server.h"
-static DBusHandlerResult filter_function(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- if (dbus_message_is_signal(msg, DBUS_INTERFACE_LOCAL, "Disconnected") &&
- strcmp(dbus_message_get_path(msg), DBUS_PATH_LOCAL) == 0) {
- debug("Received local disconnected signal");
- name_listener_indicate_disconnect(conn);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static DBusHandlerResult message_handler(DBusConnection *conn,
- DBusMessage *msg, void *data)
-{
- if (strcmp(dbus_message_get_interface(msg), DATABASE_INTERFACE) == 0)
- return database_message(conn, msg, data);
-
- debug("%s -> %s.%s", dbus_message_get_path(msg),
- dbus_message_get_interface(msg), dbus_message_get_member(msg));
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static void unregister_handler(DBusConnection *conn, void *data)
-{
- debug("Unregister local connection %p", conn);
-}
-
-static void handle_connection(DBusServer *server, DBusConnection *conn, void *data)
-{
- DBusObjectPathVTable vtable = { &unregister_handler, &message_handler,
- NULL, NULL, NULL, NULL};
-
- debug("New local connection %p", conn);
-
- dbus_connection_add_filter(conn, filter_function, NULL, NULL);
-
- if (dbus_connection_register_object_path(conn, "/org/bluez",
- &vtable, NULL) == FALSE) {
- error("Can't register local object path");
- return;
- }
-
- dbus_connection_ref(conn);
+static GSList *servers = NULL;
- //dbus_connection_setup_with_g_main(conn, NULL);
- setup_dbus_with_main_loop(conn);
-}
-
-static DBusServer *server = NULL;
-
-char *get_local_server_address(void)
-{
- return dbus_server_get_address(server);
-}
-
-void init_local_server(void)
+int bt_register_server(struct bt_server *server)
{
- const char *ext_only[] = { "EXTERNAL", NULL };
- char *address;
- DBusError err;
- int fd, len;
-
- dbus_error_init(&err);
-
- server = dbus_server_listen("unix:tmpdir=/var/run", &err);
- if (server == NULL) {
- error("Can't create local D-Bus server");
- dbus_error_free(&err);
- return;
- }
-
- address = dbus_server_get_address(server);
-
- info("Created local server at %s", address);
+ servers = g_slist_append(servers, server);
- fd = open("/var/run/bluetoothd_address",
- O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR);
- if (fd < 0) {
- error("Can't create server address file");
- } else {
- len = write(fd, address, strlen(address));
- close(fd);
- }
-
- dbus_free(address);
-
- //dbus_server_setup_with_g_main(server, NULL);
- setup_dbus_server_with_main_loop(server);
-
- dbus_server_set_new_connection_function(server, handle_connection,
- NULL, NULL);
-
- dbus_server_set_auth_mechanisms(server, ext_only);
+ return 0;
}
-void shutdown_local_server(void)
+void bt_unregister_server(struct bt_server *server)
{
- if (server == NULL)
- return;
-
- info("Shutting down local server");
-
- if (unlink("/var/run/bluetoothd_address") < 0)
- error("Can't remove server address file");
-
- dbus_server_disconnect(server);
-
- dbus_server_unref(server);
-
- server = NULL;
+ servers = g_slist_remove(servers, server);
}
diff --git a/hcid/server.h b/hcid/server.h
index 270245d7..fcd440ec 100644
--- a/hcid/server.h
+++ b/hcid/server.h
@@ -21,7 +21,6 @@
*
*/
-void init_local_server(void);
-void shutdown_local_server(void);
-
-char *get_local_server_address(void);
+struct bt_server {
+ const char *uuid;
+};