Only disconnect the specific service if asked for it
[connman] / src / service.c
index bfc09ba..789cc9d 100644 (file)
@@ -379,13 +379,8 @@ static DBusMessage *disconnect_service(DBusConnection *conn,
        }
 
        if (service->network != NULL) {
-               struct connman_device *device;
                int err;
 
-               device = connman_network_get_device(service->network);
-               if (device != NULL)
-                       __connman_device_disconnect(device);
-
                err = __connman_network_disconnect(service->network);
                if (err < 0 && err != -EINPROGRESS)
                        return __connman_error_failed(msg, -err);
@@ -417,6 +412,9 @@ static DBusMessage *remove_service(DBusConnection *conn,
        if (service->type == CONNMAN_SERVICE_TYPE_ETHERNET)
                return __connman_error_not_supported(msg);
 
+       if (service->favorite == FALSE)
+               return __connman_error_not_supported(msg);
+
        if (service->network != NULL) {
                struct connman_device *device;