diff options
Diffstat (limited to 'plugins/bluetooth.c')
-rw-r--r-- | plugins/bluetooth.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c index 45cc3194..f759a902 100644 --- a/plugins/bluetooth.c +++ b/plugins/bluetooth.c @@ -206,7 +206,7 @@ static void pan_connect_cb(DBusMessage *message, void *user_data) DBusMessageIter iter; pan = g_hash_table_lookup(networks, path); - if (!pan) { + if (!pan || !pan->network) { DBG("network already removed"); return; } @@ -218,6 +218,7 @@ static void pan_connect_cb(DBusMessage *message, void *user_data) if (strcmp(dbus_error, "org.bluez.Error.AlreadyConnected") != 0) { + connman_network_set_associating(pan->network, false); connman_network_set_error(pan->network, CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL); return; @@ -272,7 +273,7 @@ static void pan_disconnect_cb(DBusMessage *message, void *user_data) struct bluetooth_pan *pan; pan = g_hash_table_lookup(networks, path); - if (!pan) { + if (!pan || !pan->network) { DBG("network already removed"); return; } @@ -337,6 +338,7 @@ static void pan_create_nap(struct bluetooth_pan *pan) { struct connman_device *device; const char* role; + const char *adapter; role = proxy_get_role(pan->btdevice_proxy); if (!role) { @@ -344,8 +346,12 @@ static void pan_create_nap(struct bluetooth_pan *pan) return; } - device = g_hash_table_lookup(devices, - proxy_get_string(pan->btdevice_proxy, "Adapter")); + adapter = proxy_get_string(pan->btdevice_proxy, "Adapter"); + + if (!adapter) + return; + + device = g_hash_table_lookup(devices, adapter); if (!device || !connman_device_get_powered(device)) return; @@ -713,12 +719,16 @@ static bool tethering_create(const char *path, DBG("path %s bridge %s", path, bridge); - if (!bridge) - return -EINVAL; + if (!bridge) { + g_free(tethering); + return false; + } proxy = g_dbus_proxy_new(client, path, "org.bluez.NetworkServer1"); - if (!proxy) + if (!proxy) { + g_free(tethering); return false; + } tethering->technology = technology; tethering->bridge = g_strdup(bridge); |