diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2008-03-12 18:57:37 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2008-03-12 18:57:37 +0000 | 
| commit | 5d14a87639406b220edaf07088eddc22a7f9b0fe (patch) | |
| tree | 4b7f16c32bf37413f28ceabf59db100edd10ae11 | |
| parent | 75add5651e5dbc49c9c144acceac7e2c32d9bd16 (diff) | |
Remove the local D-Bus setup
| -rw-r--r-- | hcid/dbus-service.c | 10 | ||||
| -rw-r--r-- | hcid/main.c | 4 | ||||
| -rw-r--r-- | hcid/server.c | 123 | ||||
| -rw-r--r-- | hcid/server.h | 7 | 
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; +}; | 
