- DBG("Type %s name %s", type, name);
-
- if (type == NULL || name == NULL) {
- err = -EOPNOTSUPP;
- goto failed;
- }
-
- ident = g_strdup_printf("%s_%s", host, domain);
- provider_dbus_ident(ident);
-
- DBG("ident %s", ident);
-
- provider = connman_provider_lookup(ident);
-
- if (provider == NULL) {
- created = TRUE;
- provider = connman_provider_get(ident);
- if (provider) {
- provider->host = g_strdup(host);
- provider->domain = g_strdup(domain);
- provider->name = g_strdup(name);
- provider->type = g_strdup(type);
- }
- }
-
- if (provider == NULL) {
- DBG("can not create provider");
- err = -EOPNOTSUPP;
- goto failed;
- }
- dbus_message_iter_init(msg, &iter);
- dbus_message_iter_recurse(&iter, &array);
-
- while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) {
- DBusMessageIter entry, value;
- const char *key, *str;
-
- dbus_message_iter_recurse(&array, &entry);
- dbus_message_iter_get_basic(&entry, &key);
-
- dbus_message_iter_next(&entry);
- dbus_message_iter_recurse(&entry, &value);
-
- switch (dbus_message_iter_get_arg_type(&value)) {
- case DBUS_TYPE_STRING:
- dbus_message_iter_get_basic(&value, &str);
- connman_provider_set_string(provider, key, str);
- break;
+ if (error_code != 0) {
+ reply = __connman_error_failed(msg, -error_code);
+ if (!g_dbus_send_message(connection, reply))
+ DBG("reply %p send failed", reply);
+ } else {
+ const char *path;
+ struct connman_provider *provider;
+
+ provider = provider_lookup(identifier);
+ if (!provider) {
+ reply = __connman_error_failed(msg, EINVAL);
+ g_dbus_send_message(connection, reply);
+ return;