diff options
| -rw-r--r-- | hcid/Makefile.am | 2 | ||||
| -rw-r--r-- | hcid/dbus-common.c | 1 | ||||
| -rw-r--r-- | hcid/dbus-hci.c | 14 | ||||
| -rw-r--r-- | hcid/dbus-test.c | 714 | ||||
| -rw-r--r-- | hcid/dbus-test.h | 29 | 
5 files changed, 3 insertions, 757 deletions
| diff --git a/hcid/Makefile.am b/hcid/Makefile.am index cf586ed2..9ecd1f97 100644 --- a/hcid/Makefile.am +++ b/hcid/Makefile.am @@ -17,7 +17,7 @@ libhciserver_a_SOURCES = hcid.h security.c storage.c \  	adapter.h adapter.c device.h device.c plugin.h plugin.c \  	dbus-common.c dbus-common.h dbus-error.c dbus-error.h \  	dbus-database.c dbus-database.h dbus-security.c dbus-security.h \ -	dbus-service.c dbus-service.h dbus-test.c dbus-test.h \ +	dbus-service.c dbus-service.h \  	dbus-hci.h dbus-hci.c dbus-sdp.c dbus-sdp.h \  	telephony.h telephony.c agent.h agent.c diff --git a/hcid/dbus-common.c b/hcid/dbus-common.c index c4874e16..f4d59556 100644 --- a/hcid/dbus-common.c +++ b/hcid/dbus-common.c @@ -56,7 +56,6 @@  #include "dbus-service.h"  #include "dbus-database.h"  #include "dbus-security.h" -#include "dbus-test.h"  #include "dbus-sdp.h"  #include "dbus-common.h" diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 0efd1205..679170ff 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -54,7 +54,6 @@  #include "glib-helper.h"  #include "dbus-common.h"  #include "dbus-error.h" -#include "dbus-test.h"  #include "dbus-service.h"  #include "dbus-security.h"  #include "agent.h" @@ -540,11 +539,6 @@ int hcid_dbus_register_device(uint16_t id)  		goto failed;  	} -	if (!test_init(connection, path)) { -		error("Test interface init failed"); -		goto failed; -	} -  	/*  	 * Send the adapter added signal  	 */ @@ -1341,7 +1335,7 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local)  	if (!dbus_connection_get_object_user_data(connection, path,  							(void *) &adapter)) {  		error("Getting %s path data failed!", path); -		goto done; +		return;  	}  	/* Out of range verification */ @@ -1384,7 +1378,7 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local)  	 */  	if (!found_device_req_name(adapter)) -		goto done; /* skip - there is name to resolve */ +		return;		/* skip - there is name to resolve */  	if (adapter->discov_active) {  		if (hcid_dbus_use_experimental()) { @@ -1426,10 +1420,6 @@ void hcid_dbus_inquiry_complete(bdaddr_t *local)  		/* reset the discover type for standard inquiry only */  		adapter->discov_type &= ~STD_INQUIRY;  	} - -done: -	/* Proceed with any queued up audits */ -	process_audits_list(path);  }  void hcid_dbus_periodic_inquiry_start(bdaddr_t *local, uint8_t status) diff --git a/hcid/dbus-test.c b/hcid/dbus-test.c deleted file mode 100644 index 87d106a3..00000000 --- a/hcid/dbus-test.c +++ /dev/null @@ -1,714 +0,0 @@ -/* - * - *  BlueZ - Bluetooth protocol stack for Linux - * - *  Copyright (C) 2006-2007  Nokia Corporation - *  Copyright (C) 2004-2008  Marcel Holtmann <marcel@holtmann.org> - * - * - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> -#include <errno.h> -#include <stdlib.h> -#include <sys/param.h> - -#include <bluetooth/bluetooth.h> -#include <bluetooth/l2cap.h> -#include <bluetooth/sdp.h> - -#include <glib.h> -#include <dbus/dbus.h> -#include <gdbus.h> - -#include "hcid.h" -#include "dbus-common.h" -#include "adapter.h" -#include "dbus-hci.h" -#include "dbus-error.h" -#include "error.h" -#include "dbus-test.h" - -#define L2INFO_TIMEOUT (2 * 1000) - -enum { -	AUDIT_STATE_MTU = 0, -	AUDIT_STATE_FEATURES -}; - -struct audit { -	bdaddr_t peer; -	bdaddr_t local; - -	/* We need to store the path instead of a pointer to the data -	 * because by the time the audit is processed the adapter -	 * might have gotten removed. Storing only the path allows us to -	 * detect this scenario */ -	char adapter_path[PATH_MAX]; - -	char *requestor; -	DBusConnection *conn; - -	GIOChannel *io; -	guint io_id; - -	guint timeout; - -	int state; - -	uint16_t mtu_result; -	uint16_t mtu; - -	uint16_t mask_result; -	uint32_t mask; - -	guint listener_id; -}; - -static GSList *audits = NULL; - -static gboolean l2raw_connect_complete(GIOChannel *io, GIOCondition cond, -					struct audit *audit); - -static struct audit *audit_new(DBusConnection *conn, DBusMessage *msg, -				bdaddr_t *peer, bdaddr_t *local) -{ -	struct audit *audit; -	const char *path; -	const char *requestor; - -	path = dbus_message_get_path(msg); -	requestor = dbus_message_get_sender(msg); - -	audit = g_new0(struct audit, 1); - -	audit->requestor = g_strdup(requestor); - -	bacpy(&audit->peer, peer); -	bacpy(&audit->local, local); -	strncpy(audit->adapter_path, path, sizeof(audit->adapter_path) - 1); -	audit->conn = dbus_connection_ref(conn); - -	return audit; -} - -static void audit_free(struct audit *audit) -{ -	g_free(audit->requestor); -	dbus_connection_unref(audit->conn); -	g_free(audit); -} - -static void send_audit_status(struct audit *audit, const char *name) -{ -	char addr[18], *addr_ptr = addr; - -	ba2str(&audit->peer, addr); - -	dbus_connection_emit_signal(audit->conn, audit->adapter_path, -					TEST_INTERFACE, name, -					DBUS_TYPE_STRING, &addr_ptr, -					DBUS_TYPE_INVALID); -} - -static void audit_requestor_exited(void *user_data) -{ -	struct audit *audit = user_data; - -	debug("AuditRemoteDevice requestor exited"); - -	audits = g_slist_remove(audits, audit); -	if (audit->io) { -		struct adapter *adapter = NULL; - -		send_audit_status(audit, "AuditRemoteDeviceComplete"); - -		dbus_connection_get_object_user_data(audit->conn, -							audit->adapter_path, -							(void *) &adapter); -		if (adapter) -			bacpy(&adapter->agents_disabled, BDADDR_ANY); - -		g_io_channel_close(audit->io); -	} -	if (audit->timeout) -		g_source_remove(audit->timeout); -	audit_free(audit); -} - -int audit_addr_cmp(const void *a, const void *b) -{ -	const struct audit *audit = a; -	const bdaddr_t *addr = b; - -	return bacmp(&audit->peer, addr); -} - -static gboolean audit_in_progress(void) -{ -	GSList *l; - -	for (l = audits; l != NULL; l = l->next) { -		struct audit *audit = l->data; -		if (audit->io) -			return TRUE; -	} - -	return FALSE; -} - -static gboolean l2raw_input_timer(struct audit *audit) -{ -	error("l2raw_input_timer: Timed out while waiting for input"); - -	send_audit_status(audit, "AuditRemoteDeviceComplete"); - -	g_io_channel_close(audit->io); -	audits = g_slist_remove(audits, audit); -	g_dbus_remove_watch(audit->conn, audit->listener_id); -	audit_free(audit); - -	return FALSE; -} - -static void handle_mtu_response(struct audit *audit, const l2cap_info_rsp *rsp) -{ -	audit->mtu_result = btohs(rsp->result); - -	switch (audit->mtu_result) { -	case 0x0000: -		audit->mtu = btohs(bt_get_unaligned((uint16_t *) rsp->data)); -		debug("Connectionless MTU size is %d", audit->mtu); -		break; -	case 0x0001: -		debug("Connectionless MTU is not supported"); -		break; -	} -} - -static void handle_features_response(struct audit *audit, const l2cap_info_rsp *rsp) -{ -	audit->mask_result = btohs(rsp->result); - -	switch (audit->mask_result) { -	case 0x0000: -		audit->mask = btohl(bt_get_unaligned((uint32_t *) rsp->data)); -		debug("Extended feature mask is 0x%04x", audit->mask); -		if (audit->mask & 0x01) -			debug("  Flow control mode"); -		if (audit->mask & 0x02) -			debug("  Retransmission mode"); -		if (audit->mask & 0x04) -			debug("  Bi-directional QoS"); -		break; -	case 0x0001: -		debug("Extended feature mask is not supported"); -		break; -	} -} - -static gboolean l2raw_data_callback(GIOChannel *io, GIOCondition cond, struct audit *audit) -{ -	unsigned char buf[48]; -	l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; -	l2cap_info_req *req = (l2cap_info_req *) (buf + L2CAP_CMD_HDR_SIZE); -	l2cap_info_rsp *rsp = (l2cap_info_rsp *) (buf + L2CAP_CMD_HDR_SIZE); -	int sk, ret, expected; - -	if (cond & G_IO_NVAL) { -		g_io_channel_unref(io); -		return FALSE; -	} - -	if (cond & (G_IO_ERR | G_IO_HUP)) -		goto failed; - -	sk = g_io_channel_unix_get_fd(io); - -	memset(buf, 0, sizeof(buf)); - -	if (audit->state == AUDIT_STATE_MTU) -		expected = L2CAP_CMD_HDR_SIZE + L2CAP_INFO_RSP_SIZE + 2; -	else -		expected = L2CAP_CMD_HDR_SIZE + L2CAP_INFO_RSP_SIZE + 4; - -	ret = recv(sk, buf, expected, 0); -	if (ret < 0) { -		error("Can't receive info response: %s (%d)", strerror(errno), errno); -		goto failed; -	} - -	if (ret < L2CAP_CMD_HDR_SIZE) { -		error("Too little data for l2cap response"); -		goto failed; -	} - -	if (cmd->code != L2CAP_INFO_RSP) -		return TRUE; - -	if (ret < L2CAP_CMD_HDR_SIZE + L2CAP_INFO_RSP_SIZE) { -		error("Too little data for l2cap info response"); -		goto failed; -	} - -	switch (audit->state) { -	case AUDIT_STATE_MTU: -		if (rsp->type != htobs(0x0001)) -			return TRUE; - -		if (audit->timeout) { -			g_source_remove(audit->timeout); -			audit->timeout = 0; -		} - -		handle_mtu_response(audit, rsp); - -		memset(buf, 0, sizeof(buf)); -		cmd->code  = L2CAP_INFO_REQ; -		cmd->ident = 43; -		cmd->len   = htobs(2); -		req->type  = htobs(0x0002); - -		if (send(sk, buf, L2CAP_CMD_HDR_SIZE + L2CAP_INFO_REQ_SIZE, 0) < 0) { -			error("Can't send info request:", strerror(errno), errno); -			goto failed; -		} - -		audit->timeout = g_timeout_add(L2INFO_TIMEOUT, (GSourceFunc) -						l2raw_input_timer, audit); - -		audit->state = AUDIT_STATE_FEATURES; - -		return TRUE; - -	case AUDIT_STATE_FEATURES: -		if (rsp->type != htobs(0x0002)) -			return TRUE; - -		if (audit->timeout) { -			g_source_remove(audit->timeout); -			audit->timeout = 0; -		} - -		handle_features_response(audit, rsp); -		break; -	} - -	write_l2cap_info(&audit->local, &audit->peer, -				audit->mtu_result, audit->mtu, -				audit->mask_result, audit->mask); - -failed: -	if (audit->timeout) { -		g_source_remove(audit->timeout); -		audit->timeout = 0; -	} - -	send_audit_status(audit, "AuditRemoteDeviceComplete"); - -	g_io_channel_close(io); -	g_io_channel_unref(io); -	audits = g_slist_remove(audits, audit); -	g_dbus_remove_watch(audit->conn, audit->listener_id); - -	process_audits_list(audit->adapter_path); - -	audit_free(audit); - -	return FALSE; -} - -static gboolean l2raw_connect_complete(GIOChannel *io, GIOCondition cond, struct audit *audit) -{ -	unsigned char buf[48]; -	l2cap_cmd_hdr *cmd = (l2cap_cmd_hdr *) buf; -	l2cap_info_req *req = (l2cap_info_req *) (buf + L2CAP_CMD_HDR_SIZE); -	socklen_t len; -	int sk, ret; -	struct adapter *adapter = NULL; - -	if (cond & G_IO_NVAL) { -		g_io_channel_unref(io); -		return FALSE; -	} - -	dbus_connection_get_object_user_data(audit->conn, audit->adapter_path, -						(void *) &adapter); -	if (adapter) -		bacpy(&adapter->agents_disabled, BDADDR_ANY); - -	if (cond & (G_IO_ERR | G_IO_HUP)) { -		error("Error on raw l2cap socket"); -		goto failed; -	} - -	sk = g_io_channel_unix_get_fd(io); - -	len = sizeof(ret); -	if (getsockopt(sk, SOL_SOCKET, SO_ERROR, &ret, &len) < 0) { -		error("Can't get socket error: %s (%d)", strerror(errno), errno); -		goto failed; -	} - -	if (ret != 0) { -		error("l2raw_connect failed: %s (%d)", strerror(ret), ret); -		goto failed; -	} - -	debug("AuditRemoteDevice: connected"); - -	/* Send L2CAP info request */ -	memset(buf, 0, sizeof(buf)); -	cmd->code  = L2CAP_INFO_REQ; -	cmd->ident = 42; -	cmd->len   = htobs(2); -	req->type  = htobs(0x0001); - -	if (send(sk, buf, L2CAP_CMD_HDR_SIZE + L2CAP_INFO_REQ_SIZE, 0) < 0) { -		error("Can't send info request: %s (%d)", strerror(errno), errno); -		goto failed; -	} - -	audit->timeout = g_timeout_add(L2INFO_TIMEOUT, (GSourceFunc) -			l2raw_input_timer, audit); - -	audit->io_id = g_io_add_watch(audit->io, -					G_IO_IN | G_IO_NVAL | G_IO_HUP | G_IO_ERR, -					(GIOFunc) l2raw_data_callback, audit); - -	return FALSE; - -failed: -	send_audit_status(audit, "AuditRemoteDeviceFailed"); - -	g_io_channel_close(io); -	g_io_channel_unref(io); -	audits = g_slist_remove(audits, audit); -	g_dbus_remove_watch(audit->conn, audit->listener_id); -	audit_free(audit); - -	return FALSE; -} - -static DBusHandlerResult audit_remote_device(DBusConnection *conn, -						DBusMessage *msg, void *data) -{ -	DBusMessage *reply; -	DBusError err; -	bdaddr_t peer, local; -	const char *address; -	struct audit *audit; -	struct adapter *adapter = data; -	gboolean queue; - -	dbus_error_init(&err); -	dbus_message_get_args(msg, &err, -				DBUS_TYPE_STRING, &address, -				DBUS_TYPE_INVALID); -	if (dbus_error_is_set(&err)) { -		error("Can't extract message arguments:%s", err.message); -		dbus_error_free(&err); -		return error_invalid_arguments(conn, msg, NULL); -	} - -	if (check_address(address) < 0) -		return error_invalid_arguments(conn, msg, NULL); - -	str2ba(address, &peer); -	str2ba(adapter->address, &local); - -	pending_remote_name_cancel(adapter); - -	if (adapter->bonding) -		return error_bonding_in_progress(conn, msg); - -	if (g_slist_find_custom(adapter->pin_reqs, &peer, pin_req_cmp)) -		return error_bonding_in_progress(conn, msg); - -	if (!read_l2cap_info(&local, &peer, NULL, NULL, NULL, NULL)) -		return error_audit_already_exists(conn, msg); - -	reply = dbus_message_new_method_return(msg); -	if (!reply) -		return DBUS_HANDLER_RESULT_NEED_MEMORY; - -	/* Just return if an audit for the same device is already queued */ -	if (g_slist_find_custom(audits, &peer, audit_addr_cmp)) -		return send_message_and_unref(conn, reply); - -	if (adapter->discov_active || (adapter->pdiscov_active && !adapter->pinq_idle)) -		queue = TRUE; -	else -		queue = audit_in_progress(); - -	audit = audit_new(conn, msg, &peer, &local); -	if (!audit) { -		dbus_message_unref(reply); -		return DBUS_HANDLER_RESULT_NEED_MEMORY; -	} - -	if (!queue) { -		int sk; - -		sk = l2raw_connect(adapter->address, &peer); -		if (sk < 0) { -			audit_free(audit); -			dbus_message_unref(reply); -			return error_connection_attempt_failed(conn, msg, 0); -		} - -		bacpy(&adapter->agents_disabled, &peer); - -		audit->io = g_io_channel_unix_new(sk); -		audit->io_id = g_io_add_watch(audit->io, -						G_IO_OUT | G_IO_NVAL | G_IO_HUP | G_IO_ERR, -						(GIOFunc) l2raw_connect_complete, audit); -	} - -	audit->listener_id = g_dbus_add_disconnect_watch(conn, -						dbus_message_get_sender(msg), -						audit_requestor_exited, audit, -						NULL); - -	audits = g_slist_append(audits, audit); - -	return send_message_and_unref(conn, reply); -} - -static DBusHandlerResult cancel_audit_remote_device(DBusConnection *conn, -						DBusMessage *msg, void *data) -{ -	struct adapter *adapter = data; -	DBusMessage *reply; -	DBusError err; -	const char *address; -	bdaddr_t peer, local; -	GSList *l; -	struct audit *audit; - -	dbus_error_init(&err); -	dbus_message_get_args(msg, &err, -				DBUS_TYPE_STRING, &address, -				DBUS_TYPE_INVALID); -	if (dbus_error_is_set(&err)) { -		error("Can't extract message arguments:%s", err.message); -		dbus_error_free(&err); -		return error_invalid_arguments(conn, msg, NULL); -	} - -	if (check_address(address) < 0) -		return error_invalid_arguments(conn, msg, NULL); - -	str2ba(address, &peer); -	str2ba(adapter->address, &local); - -	l = g_slist_find_custom(audits, &peer, audit_addr_cmp); -	if (!l) -		return error_not_in_progress(conn, msg, "Audit not in progress"); - -	audit = l->data; - -	/* Check that the audit wasn't for another adapter */ -	if (bacmp(&audit->local, &local)) -		return error_not_in_progress(conn, msg, "Audit not in progress"); - -	if (strcmp(audit->requestor, dbus_message_get_sender(msg))) -		return error_not_authorized(conn, msg); - -	if (audit->io) { -		send_audit_status(audit, "AuditRemoteDeviceComplete"); -		bacpy(&adapter->agents_disabled, BDADDR_ANY); -		g_io_channel_close(audit->io); -	} -	if (audit->timeout) -		g_source_remove(audit->timeout); - -	audits = g_slist_remove(audits, audit); -	g_dbus_remove_watch(audit->conn, audit->listener_id); -	audit_free(audit); - -	reply = dbus_message_new_method_return(msg); -	if (!reply) -		return DBUS_HANDLER_RESULT_NEED_MEMORY; - -	return send_message_and_unref(conn, reply); -} - -static DBusHandlerResult get_l2cap_feature_mask(DBusConnection *conn, -						DBusMessage *msg, void *data) -{ -	struct adapter *adapter = data; -	DBusMessage *reply; -	DBusError err; -	const char *address; -	bdaddr_t peer, local; -	uint32_t mask; -	uint16_t result; - -	dbus_error_init(&err); -	dbus_message_get_args(msg, &err, -				DBUS_TYPE_STRING, &address, -				DBUS_TYPE_INVALID); -	if (dbus_error_is_set(&err)) { -		error("Can't extract message arguments:%s", err.message); -		dbus_error_free(&err); -		return error_invalid_arguments(conn, msg, NULL); -	} - -	if (check_address(address) < 0) -		return error_invalid_arguments(conn, msg, NULL); - -	str2ba(address, &peer); -	str2ba(adapter->address, &local); - -	if (read_l2cap_info(&local, &peer, NULL, NULL, &result, &mask) < 0) -		return error_not_available(conn, msg); - -	if (result) -		return error_not_supported(conn, msg); - -	reply = dbus_message_new_method_return(msg); -	if (!reply) -		return DBUS_HANDLER_RESULT_NEED_MEMORY; - -	dbus_message_append_args(reply, DBUS_TYPE_UINT32, &mask, -					DBUS_TYPE_INVALID); - -	return send_message_and_unref(conn, reply); -} - -static DBusHandlerResult get_l2cap_mtu_size(DBusConnection *conn, -						DBusMessage *msg, void *data) -{ -	struct adapter *adapter = data; -	DBusMessage *reply; -	DBusError err; -	const char *address; -	bdaddr_t peer, local; -	uint16_t result, mtu; - -	dbus_error_init(&err); -	dbus_message_get_args(msg, &err, -				DBUS_TYPE_STRING, &address, -				DBUS_TYPE_INVALID); -	if (dbus_error_is_set(&err)) { -		error("Can't extract message arguments:%s", err.message); -		dbus_error_free(&err); -		return error_invalid_arguments(conn, msg, NULL); -	} - -	if (check_address(address) < 0) -		return error_invalid_arguments(conn, msg, NULL); - -	str2ba(address, &peer); -	str2ba(adapter->address, &local); - -	if (read_l2cap_info(&local, &peer, &result, &mtu, NULL, NULL) < 0) -		return error_not_available(conn, msg); - -	if (result) -		return error_not_supported(conn, msg); - -	reply = dbus_message_new_method_return(msg); -	if (!reply) -		return DBUS_HANDLER_RESULT_NEED_MEMORY; - -	dbus_message_append_args(reply, DBUS_TYPE_UINT16, &mtu, -					DBUS_TYPE_INVALID); - -	return send_message_and_unref(conn, reply); -} - -static DBusMethodVTable test_methods[] = { -	{ "AuditRemoteDevice",		audit_remote_device, -		"s",	""	}, -	{ "CancelAuditRemoteDevice",	cancel_audit_remote_device, -		"s",	""	}, -	{ "GetL2capFeatureMask",	get_l2cap_feature_mask, -		"s",	"u"	}, -	{ "GetL2capMtuSize",		get_l2cap_mtu_size, -		"s",	"q"	}, -	{ NULL, NULL, NULL, NULL } -}; - -dbus_bool_t test_init(DBusConnection *conn, const char *path) -{ -	if (!hcid_dbus_use_experimental()) -		return TRUE; - -	return dbus_connection_register_interface(conn, path, TEST_INTERFACE, -							test_methods, -							NULL, NULL); -} - -void process_audits_list(const char *adapter_path) -{ -	GSList *l, *next; - -	for (l = audits; l != NULL; l = next) { -		struct adapter *adapter; -		struct audit *audit; -		int sk; - -		audit = l->data; -		next = l->next; - -		if (strcmp(adapter_path, audit->adapter_path)) -			continue; - -		if (audit->io) -			return; - -		adapter = NULL; - -		dbus_connection_get_object_user_data(audit->conn, -							audit->adapter_path, -							(void *) &adapter); - -		if (!adapter) { -			audits = g_slist_remove(audits, audit); -			g_dbus_remove_watch(audit->conn, audit->listener_id); -			audit_free(audit); -			continue; -		} - -		if (adapter->discov_active || (adapter->pdiscov_active -					&& !adapter->pinq_idle)) -			continue; - -		sk = l2raw_connect(adapter->address, &audit->peer); -		if (sk < 0) { -			send_audit_status(audit, "AuditRemoteDeviceFailed"); -			audits = g_slist_remove(audits, audit); -			g_dbus_remove_watch(audit->conn, audit->listener_id); -			audit_free(audit); -			continue; -		} - -		bacpy(&adapter->agents_disabled, &audit->peer); - -		audit->io = g_io_channel_unix_new(sk); -		audit->io_id = g_io_add_watch(audit->io, -						G_IO_OUT | G_IO_NVAL | G_IO_HUP | G_IO_ERR, -						(GIOFunc) l2raw_connect_complete, audit); -		return; -	} -} diff --git a/hcid/dbus-test.h b/hcid/dbus-test.h deleted file mode 100644 index d08a8f65..00000000 --- a/hcid/dbus-test.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * - *  BlueZ - Bluetooth protocol stack for Linux - * - *  Copyright (C) 2006-2007  Nokia Corporation - *  Copyright (C) 2004-2008  Marcel Holtmann <marcel@holtmann.org> - * - * - *  This program is free software; you can redistribute it and/or modify - *  it under the terms of the GNU General Public License as published by - *  the Free Software Foundation; either version 2 of the License, or - *  (at your option) any later version. - * - *  This program is distributed in the hope that it will be useful, - *  but WITHOUT ANY WARRANTY; without even the implied warranty of - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *  GNU General Public License for more details. - * - *  You should have received a copy of the GNU General Public License - *  along with this program; if not, write to the Free Software - *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA - * - */ - -#define TEST_INTERFACE "org.bluez.Test" - -dbus_bool_t test_init(DBusConnection *conn, const char *path); - -void process_audits_list(const char *adapter_path); | 
