Diff between 7b168fc40b96a7f18bf8f7d61ea07ab516e148cb and 12464916d39fa88f2ade96ccbc1d8efd6ea37789

Changed Files

File Additions Deletions Status
src/adapter.c +2 -80 modified
src/adapter.h +0 -1 modified
src/agent.c +0 -7 modified
src/agent.h +0 -1 modified
src/hcid.h +0 -1 modified
src/main.c +0 -9 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index 14b3874..b216a28 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -440,22 +440,6 @@ static void trigger_passive_scanning(struct btd_adapter *adapter);
 static bool set_mode(struct btd_adapter *adapter, uint16_t opcode,
 							uint8_t mode);
 
-static void update_pairable(struct btd_adapter *adapter)
-{
-	if (main_opts.always_pairable)
-		return;
-
-	if ((adapter->current_settings & MGMT_SETTING_DISCOVERABLE) &&
-						agent_default_available()) {
-		if (!(adapter->current_settings & MGMT_SETTING_PAIRABLE) &&
-						agent_default_available())
-			set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
-	} else {
-		if (adapter->current_settings & MGMT_SETTING_PAIRABLE)
-			set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x00);
-	}
-}
-
 static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
 {
 	uint32_t changed_mask;
@@ -497,7 +481,6 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
 	if (changed_mask & MGMT_SETTING_DISCOVERABLE) {
 		g_dbus_emit_property_changed(dbus_conn, adapter->path,
 					ADAPTER_INTERFACE, "Discoverable");
-		update_pairable(adapter);
 		store_adapter_info(adapter);
 	}
 
@@ -620,13 +603,6 @@ static void trigger_pairable_timeout(struct btd_adapter *adapter)
 	if (!(adapter->current_settings & MGMT_SETTING_PAIRABLE))
 		return;
 
-	/*
-	 * If pairable is tied to connectable & discoverable then we
-	 * don't have a separate pairable timeout.
-	 */
-	if (!main_opts.always_pairable)
-		return;
-
 	if (adapter->pairable_timeout > 0)
 		g_timeout_add_seconds(adapter->pairable_timeout,
 					pairable_timeout_handler, adapter);
@@ -2137,13 +2113,6 @@ static void property_set_discoverable_timeout(
 
 	g_dbus_pending_property_success(id);
 
-	if (!main_opts.always_pairable) {
-		adapter->pairable_timeout = value;
-		g_dbus_emit_property_changed(dbus_conn, adapter->path,
-						ADAPTER_INTERFACE,
-						"PairableTimeout");
-	}
-
 	store_adapter_info(adapter);
 
 	g_dbus_emit_property_changed(dbus_conn, adapter->path,
@@ -2159,9 +2128,6 @@ static gboolean property_get_pairable(const GDBusPropertyTable *property,
 {
 	struct btd_adapter *adapter = user_data;
 
-	if (!main_opts.always_pairable)
-		return property_get_discoverable(property, iter, user_data);
-
 	return property_get_mode(adapter, MGMT_SETTING_PAIRABLE, iter);
 }
 
@@ -2171,11 +2137,6 @@ static void property_set_pairable(const GDBusPropertyTable *property,
 {
 	struct btd_adapter *adapter = user_data;
 
-	if (!main_opts.always_pairable) {
-		property_set_discoverable(property, iter, id, user_data);
-		return;
-	}
-
 	property_set_mode(adapter, MGMT_SETTING_PAIRABLE, iter, id);
 }
 
@@ -2186,9 +2147,6 @@ static gboolean property_get_pairable_timeout(
 	struct btd_adapter *adapter = user_data;
 	dbus_uint32_t value = adapter->pairable_timeout;
 
-	if (!main_opts.always_pairable)
-		return property_get_discoverable_timeout(property, iter, user_data);
-
 	dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &value);
 
 	return TRUE;
@@ -2201,11 +2159,6 @@ static void property_set_pairable_timeout(const GDBusPropertyTable *property,
 	struct btd_adapter *adapter = user_data;
 	dbus_uint32_t value;
 
-	if (!main_opts.always_pairable) {
-		property_set_discoverable_timeout(property, iter, id, user_data);
-		return;
-	}
-
 	dbus_message_iter_get_basic(iter, &value);
 
 	adapter->pairable_timeout = value;
@@ -3182,22 +3135,6 @@ bool btd_adapter_get_pairable(struct btd_adapter *adapter)
 	return false;
 }
 
-void adapter_set_pairable(struct btd_adapter *adapter, bool enable)
-{
-	bool current = (adapter->current_settings & MGMT_SETTING_PAIRABLE);
-
-	if (main_opts.always_pairable)
-		return;
-
-	if (current == enable)
-		return;
-
-	if (enable && !(adapter->current_settings & MGMT_SETTING_DISCOVERABLE))
-		return;
-
-	set_mode(adapter, MGMT_OP_SET_PAIRABLE, enable ? 0x01 : 0x00);
-}
-
 bool btd_adapter_get_powered(struct btd_adapter *adapter)
 {
 	if (adapter->current_settings & MGMT_SETTING_POWERED)
@@ -7094,12 +7031,8 @@ static void read_info_complete(uint8_t status, uint16_t length,
 			!(adapter->current_settings & MGMT_SETTING_LE))
 		set_mode(adapter, MGMT_OP_SET_LE, 0x01);
 
-	if (main_opts.always_pairable) {
-		if (!(adapter->current_settings & MGMT_SETTING_PAIRABLE))
-			set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
-	} else {
-		update_pairable(adapter);
-	}
+	if (!(adapter->current_settings & MGMT_SETTING_PAIRABLE))
+		set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
 
 	if (!kernel_conn_control)
 		set_mode(adapter, MGMT_OP_SET_CONNECTABLE, 0x01);
@@ -7308,17 +7241,6 @@ static void read_version_complete(uint8_t status, uint16_t length,
 		abort();
 	}
 
-	/*
-	 * Pre-1.7 mgmt kernel versions don't support outgoing pairing
-	 * with pairable set to false, so we must always keep pairable
-	 * as true.
-	 */
-	if (MGMT_VERSION(mgmt_version, mgmt_revision) < MGMT_VERSION(1, 7) &&
-						!main_opts.always_pairable) {
-		info("Enabling AlwaysPairable because of old kernel");
-		main_opts.always_pairable = TRUE;
-	}
-
 	DBG("sending read supported commands command");
 
 	/*
diff --git a/src/adapter.h b/src/adapter.h
index 923885c..6801fee 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -75,7 +75,6 @@ struct btd_adapter *adapter_find(const bdaddr_t *sba);
 struct btd_adapter *adapter_find_by_id(int id);
 void adapter_foreach(adapter_cb func, gpointer user_data);
 
-void adapter_set_pairable(struct btd_adapter *adapter, bool enable);
 bool btd_adapter_get_pairable(struct btd_adapter *adapter);
 bool btd_adapter_get_powered(struct btd_adapter *adapter);
 bool btd_adapter_get_connectable(struct btd_adapter *adapter);
diff --git a/src/agent.c b/src/agent.c
index 3e6b925..9ab1c8b 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -152,8 +152,6 @@ static void set_io_cap(struct btd_adapter *adapter, gpointer user_data)
 		io_cap = IO_CAPABILITY_NOINPUTNOOUTPUT;
 
 	adapter_set_io_capability(adapter, io_cap);
-
-	adapter_set_pairable(adapter, agent ? true : false);
 }
 
 static bool add_default_agent(struct agent *agent)
@@ -260,11 +258,6 @@ void agent_unref(struct agent *agent)
 	g_free(agent);
 }
 
-bool agent_default_available(void)
-{
-	return !queue_isempty(default_agents);
-}
-
 struct agent *agent_get(const char *owner)
 {
 	struct agent *agent;
diff --git a/src/agent.h b/src/agent.h
index de6db2c..1e46920 100644
--- a/src/agent.h
+++ b/src/agent.h
@@ -36,7 +36,6 @@ typedef void (*agent_passkey_cb) (struct agent *agent, DBusError *err,
 struct agent *agent_ref(struct agent *agent);
 void agent_unref(struct agent *agent);
 
-bool agent_default_available(void);
 struct agent *agent_get(const char *owner);
 
 int agent_authorize_service(struct agent *agent, const char *path,
diff --git a/src/hcid.h b/src/hcid.h
index 5956124..6040c71 100644
--- a/src/hcid.h
+++ b/src/hcid.h
@@ -29,7 +29,6 @@ struct main_opts {
 	uint16_t	autoto;
 	uint32_t	pairto;
 	uint32_t	discovto;
-	gboolean	always_pairable;
 	gboolean	reverse_sdp;
 	gboolean	name_resolv;
 	gboolean	debug_keys;
diff --git a/src/main.c b/src/main.c
index 5ec1ab3..e6bac6e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -201,14 +201,6 @@ static void parse_config(GKeyFile *config)
 
 	DBG("parsing main.conf");
 
-	boolean = g_key_file_get_boolean(config, "General",
-						"AlwaysPairable", &err);
-	if (err) {
-		DBG("%s", err->message);
-		g_clear_error(&err);
-	} else
-		main_opts.always_pairable = boolean;
-
 	val = g_key_file_get_integer(config, "General",
 						"DiscoverableTimeout", &err);
 	if (err) {
@@ -300,7 +292,6 @@ static void init_defaults(void)
 	memset(&main_opts, 0, sizeof(main_opts));
 	main_opts.name = g_strdup_printf("BlueZ %s", VERSION);
 	main_opts.class = 0x000000;
-	main_opts.always_pairable = FALSE;
 	main_opts.pairto = DEFAULT_PAIRABLE_TIMEOUT;
 	main_opts.discovto = DEFAULT_DISCOVERABLE_TIMEOUT;
 	main_opts.reverse_sdp = TRUE;