summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-19 15:24:14 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-21 16:22:38 +0200
commit421a69132e134c46ff6b0f6db28fd67879d8a715 (patch)
tree9bf25c6b6badc5962ab4a78296741b189b6c0842
parent61b57233f5325b657a57b1664ce18a290ae6dec3 (diff)
downloadconnman-421a69132e134c46ff6b0f6db28fd67879d8a715.tar.gz
connman-421a69132e134c46ff6b0f6db28fd67879d8a715.tar.bz2
connman-421a69132e134c46ff6b0f6db28fd67879d8a715.zip
client: Fix setting service properties
Set properties for a service ignoring any cached lookups. Send the method call only if ther is no error. When sending, wait for the result in order to see if the method call succeeded.
-rw-r--r--client/services.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/client/services.c b/client/services.c
index 97e6c2f6..c69a3dea 100644
--- a/client/services.c
+++ b/client/services.c
@@ -458,14 +458,14 @@ int set_proxy_manual(DBusConnection *connection, DBusMessage *message,
{
DBusMessage *message_send;
DBusMessageIter iter, value, dict, entry, data;
- struct service_data service;
char *path;
const char *path_name;
char *property = "Proxy.Configuration";
char *method = "Method";
char *manual = "manual";
+ DBusError dbus_error;
- path_name = find_service(connection, message, name, &service);
+ path_name = strip_service_path(name);
if (path_name == NULL)
return -ENXIO;
@@ -507,8 +507,16 @@ int set_proxy_manual(DBusConnection *connection, DBusMessage *message,
dbus_message_iter_close_container(&value, &dict);
dbus_message_iter_close_container(&iter, &value);
- dbus_connection_send(connection, message_send, NULL);
- dbus_connection_flush(connection);
+
+ dbus_error_init(&dbus_error);
+ dbus_connection_send_with_reply_and_block(connection, message_send,
+ -1, &dbus_error);
+
+ if (dbus_error_is_set(&dbus_error) == TRUE) {
+ printf("Error '%s': %s", path, dbus_error.message);
+ dbus_error_free(&dbus_error);
+ }
+
dbus_message_unref(message_send);
g_free(path);
@@ -523,11 +531,11 @@ int set_service_property(DBusConnection *connection, DBusMessage *message,
int num_props = 1;
DBusMessage *message_send;
DBusMessageIter iter;
- struct service_data service;
char *path;
const char *path_name;
+ DBusError dbus_error;
- path_name = find_service(connection, message, name, &service);
+ path_name = strip_service_path(name);
if (path_name == NULL)
return -ENXIO;
@@ -557,8 +565,17 @@ int set_service_property(DBusConnection *connection, DBusMessage *message,
num_props = append_property_dict(&iter, property, keys, data,
num_args);
- dbus_connection_send(connection, message_send, NULL);
- dbus_connection_flush(connection);
+ if (num_props >= 0) {
+ dbus_error_init(&dbus_error);
+ dbus_connection_send_with_reply_and_block(connection,
+ message_send, -1, &dbus_error);
+
+ if (dbus_error_is_set(&dbus_error) == TRUE) {
+ printf("Error '%s': %s", path, dbus_error.message);
+ dbus_error_free(&dbus_error);
+ }
+ }
+
dbus_message_unref(message_send);
g_free(path);