diff --git a/src/adapter.c b/src/adapter.c
index 14b3874..b216a28 100644
--- a/src/adapter.c
+++ b/src/adapter.c
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;
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);
}
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);
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,
{
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);
}
{
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);
}
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;
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;
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)
!(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);
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
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
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)
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
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
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
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) {
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;