summaryrefslogtreecommitdiff
path: root/plugins/bluetooth.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/bluetooth.c')
-rw-r--r--plugins/bluetooth.c24
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);