summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@redhat.com>2015-03-27 08:45:35 -0400
committerDan Winship <danw@redhat.com>2015-04-02 10:06:42 -0400
commit43058891e1684eacbbcadf608cec5b3e4288d847 (patch)
tree34dd5f618548e349608b74c502059316e86dc9c6
parent762cf756370f7c193ec6f667463cd7c2ee9faa00 (diff)
downloadNetworkManager-43058891e1684eacbbcadf608cec5b3e4288d847.tar.gz
libnm, core: use typechecked proxy_call methods
-rw-r--r--libnm/nm-object.c33
-rw-r--r--src/devices/bluetooth/nm-bluez-device.c21
-rw-r--r--src/devices/bluetooth/nm-bluez-manager.c7
-rw-r--r--src/devices/bluetooth/nm-bluez5-manager.c5
-rw-r--r--src/nm-auth-manager.c9
-rw-r--r--src/supplicant-manager/nm-supplicant-interface.c39
-rw-r--r--src/vpn-manager/nm-vpn-connection.c2
7 files changed, 55 insertions, 61 deletions
diff --git a/libnm/nm-object.c b/libnm/nm-object.c
index f58c96ed3b..bf25000bc9 100644
--- a/libnm/nm-object.c
+++ b/libnm/nm-object.c
@@ -512,7 +512,8 @@ create_async_got_property (GObject *proxy, GAsyncResult *result, gpointer user_d
GError *error = NULL;
GType type;
- ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), result, &error);
+ ret = _nm_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), result,
+ G_VARIANT_TYPE ("(v)"), &error);
if (ret) {
g_variant_get (ret, "(v)", &value);
type = type_data->type_func (value);
@@ -520,8 +521,8 @@ create_async_got_property (GObject *proxy, GAsyncResult *result, gpointer user_d
g_variant_unref (ret);
} else {
dbgmsg ("Could not fetch property '%s' of interface '%s' on %s: %s\n",
- type_data->property, type_data->interface, async_data->path,
- error->message);
+ type_data->property, type_data->interface, async_data->path,
+ error->message);
g_clear_error (&error);
type = G_TYPE_INVALID;
}
@@ -1148,11 +1149,12 @@ _nm_object_reload_properties (NMObject *object, GError **error)
g_hash_table_iter_init (&iter, priv->proxies);
while (g_hash_table_iter_next (&iter, (gpointer *) &interface, (gpointer *) &proxy)) {
- ret = g_dbus_proxy_call_sync (priv->properties_proxy,
- "GetAll",
- g_variant_new ("(s)", interface),
- G_DBUS_CALL_FLAGS_NONE, -1,
- NULL, error);
+ ret = _nm_dbus_proxy_call_sync (priv->properties_proxy,
+ "GetAll",
+ g_variant_new ("(s)", interface),
+ G_VARIANT_TYPE ("(a{sv})"),
+ G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, error);
if (!ret) {
if (error && *error)
g_dbus_error_strip_remote_error (*error);
@@ -1195,11 +1197,12 @@ _nm_object_reload_property (NMObject *object,
if (!NM_OBJECT_GET_PRIVATE (object)->nm_running)
return;
- ret = g_dbus_proxy_call_sync (NM_OBJECT_GET_PRIVATE (object)->properties_proxy,
- "Get",
- g_variant_new ("(ss)", interface, prop_name),
- G_DBUS_CALL_FLAGS_NONE, 15000,
- NULL, &err);
+ ret = _nm_dbus_proxy_call_sync (NM_OBJECT_GET_PRIVATE (object)->properties_proxy,
+ "Get",
+ g_variant_new ("(ss)", interface, prop_name),
+ G_VARIANT_TYPE ("(v)"),
+ G_DBUS_CALL_FLAGS_NONE, 15000,
+ NULL, &err);
if (!ret) {
dbgmsg ("%s: Error getting '%s' for %s: (%d) %s\n",
__func__,
@@ -1297,7 +1300,9 @@ reload_got_properties (GObject *proxy,
GVariant *ret, *props;
GError *error = NULL;
- ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), result, &error);
+ ret = _nm_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), result,
+ G_VARIANT_TYPE ("(a{sv})"),
+ &error);
if (ret) {
g_variant_get (ret, "(@a{sv})", &props);
process_properties_changed (object, props, FALSE);
diff --git a/src/devices/bluetooth/nm-bluez-device.c b/src/devices/bluetooth/nm-bluez-device.c
index fa699f7217..67e873d6bb 100644
--- a/src/devices/bluetooth/nm-bluez-device.c
+++ b/src/devices/bluetooth/nm-bluez-device.c
@@ -881,27 +881,21 @@ get_properties_cb_4 (GObject *source_object, GAsyncResult *res, gpointer user_da
NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (self);
GError *err = NULL;
GVariant *v_properties, *v_dict;
- GVariantType *v_type;
- v_properties = g_dbus_proxy_call_finish (priv->proxy, res, &err);
+ v_properties = _nm_dbus_proxy_call_finish (priv->proxy, res,
+ G_VARIANT_TYPE ("(@a{sv})"),
+ &err);
if (!v_properties) {
nm_log_warn (LOGD_BT, "bluez[%s] error getting device properties: %s",
- priv->path, err && err->message ? err->message : "(unknown)");
+ priv->path, err->message);
g_error_free (err);
g_signal_emit (self, signals[INITIALIZED], 0, FALSE);
goto END;
}
- v_type = g_variant_type_new ("(a{sv})");
- if (g_variant_is_of_type (v_properties, v_type)) {
- v_dict = g_variant_get_child_value (v_properties, 0);
- _set_properties (self, v_dict);
- g_variant_unref (v_dict);
- } else {
- nm_log_warn (LOGD_BT, "bluez[%s] GetProperties returns unexpected result of type %s", priv->path, g_variant_get_type_string (v_properties));
- }
- g_variant_type_free (v_type);
-
+ v_dict = g_variant_get_child_value (v_properties, 0);
+ _set_properties (self, v_dict);
+ g_variant_unref (v_dict);
g_variant_unref (v_properties);
/* Check if any connections match this device */
@@ -910,7 +904,6 @@ get_properties_cb_4 (GObject *source_object, GAsyncResult *res, gpointer user_da
priv->initialized = TRUE;
g_signal_emit (self, signals[INITIALIZED], 0, TRUE);
-
check_emit_usable (self);
END:
diff --git a/src/devices/bluetooth/nm-bluez-manager.c b/src/devices/bluetooth/nm-bluez-manager.c
index e176a4b462..6b0de9949a 100644
--- a/src/devices/bluetooth/nm-bluez-manager.c
+++ b/src/devices/bluetooth/nm-bluez-manager.c
@@ -35,8 +35,7 @@
#include "nm-bluez-common.h"
#include "nm-connection-provider.h"
#include "nm-device-bt.h"
-
-#include "nm-dbus-manager.h"
+#include "nm-core-internal.h"
typedef struct {
int bluez_version;
@@ -276,8 +275,8 @@ check_bluez_and_try_setup_do_introspect (GObject *source_object,
g_clear_object (&priv->async_cancellable);
- result = g_dbus_proxy_call_finish (priv->introspect_proxy, res, &error);
-
+ result = _nm_dbus_proxy_call_finish (priv->introspect_proxy, res,
+ G_VARIANT_TYPE ("(s)"), &error);
if (!result) {
char *reason2 = g_strdup_printf ("introspect failed with %s", error->message);
check_bluez_and_try_setup_final_step (self, 0, reason2);
diff --git a/src/devices/bluetooth/nm-bluez5-manager.c b/src/devices/bluetooth/nm-bluez5-manager.c
index 7b392d8575..148fe3cbe9 100644
--- a/src/devices/bluetooth/nm-bluez5-manager.c
+++ b/src/devices/bluetooth/nm-bluez5-manager.c
@@ -200,8 +200,9 @@ get_managed_objects_cb (GDBusProxy *proxy,
GError *error = NULL;
const char *path;
- variant = g_dbus_proxy_call_finish (proxy, res, &error);
-
+ variant = _nm_dbus_proxy_call_finish (proxy, res,
+ G_VARIANT_TYPE ("(a{oa{sa{sv}}})"),
+ &error);
if (!variant) {
if (g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD))
nm_log_warn (LOGD_BT, "Couldn't get managed objects: not running Bluez5?");
diff --git a/src/nm-auth-manager.c b/src/nm-auth-manager.c
index 4234e79055..3dd1511684 100644
--- a/src/nm-auth-manager.c
+++ b/src/nm-auth-manager.c
@@ -177,7 +177,7 @@ check_authorization_cb (GDBusProxy *proxy,
GVariant *value;
GError *error = NULL;
- value = g_dbus_proxy_call_finish (proxy, res, &error);
+ value = _nm_dbus_proxy_call_finish (proxy, res, G_VARIANT_TYPE ("((bba{ss}))"), &error);
if (value == NULL) {
if (data->cancellation_id != NULL &&
(!g_dbus_error_is_remote_error (error) &&
@@ -201,18 +201,15 @@ check_authorization_cb (GDBusProxy *proxy,
error->message);
g_error_free (error);
} else {
- GVariant *result_value;
CheckAuthorizationResult *result;
result = g_new0 (CheckAuthorizationResult, 1);
- result_value = g_variant_get_child_value (value, 0);
- g_variant_get (result_value,
- "(bb@a{ss})",
+ g_variant_get (value,
+ "((bb@a{ss}))",
&result->is_authorized,
&result->is_challenge,
NULL);
- g_variant_unref (result_value);
g_variant_unref (value);
_LOGD ("call[%u]: CheckAuthorization succeeded: (is_authorized=%d, is_challenge=%d)", data->call_id, result->is_authorized, result->is_challenge);
diff --git a/src/supplicant-manager/nm-supplicant-interface.c b/src/supplicant-manager/nm-supplicant-interface.c
index b375fae485..700312e87a 100644
--- a/src/supplicant-manager/nm-supplicant-interface.c
+++ b/src/supplicant-manager/nm-supplicant-interface.c
@@ -477,14 +477,16 @@ iface_check_ap_mode_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_d
const char *data;
/* The ProbeRequest method only exists if AP mode has been enabled */
- variant = g_dbus_proxy_call_finish (proxy, result, &error);
+ variant = _nm_dbus_proxy_call_finish (proxy, result,
+ G_VARIANT_TYPE ("(s)"),
+ &error);
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;
self = NM_SUPPLICANT_INTERFACE (user_data);
priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
- if (variant && g_variant_is_of_type (variant, G_VARIANT_TYPE ("(s)"))) {
+ if (variant) {
g_variant_get (variant, "(&s)", &data);
if (strstr (data, "ProbeRequest"))
priv->ap_support = AP_SUPPORT_YES;
@@ -691,19 +693,20 @@ interface_get_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data)
NMSupplicantInterfacePrivate *priv;
gs_unref_variant GVariant *variant = NULL;
gs_free_error GError *error = NULL;
- char *path;
+ const char *path;
- variant = g_dbus_proxy_call_finish (proxy, result, &error);
+ variant = _nm_dbus_proxy_call_finish (proxy, result,
+ G_VARIANT_TYPE ("(o)"),
+ &error);
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;
self = NM_SUPPLICANT_INTERFACE (user_data);
priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
- if (variant && g_variant_is_of_type (variant, G_VARIANT_TYPE ("(o)"))) {
- g_variant_get (variant, "(o)", &path);
+ if (variant) {
+ g_variant_get (variant, "(&o)", &path);
interface_add_done (self, path);
- g_free (path);
} else {
nm_log_err (LOGD_SUPPLICANT, "(%s): error getting interface: %s", priv->dev, error->message);
set_state (self, NM_SUPPLICANT_INTERFACE_STATE_DOWN);
@@ -717,19 +720,20 @@ interface_add_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data)
NMSupplicantInterfacePrivate *priv;
gs_free_error GError *error = NULL;
gs_unref_variant GVariant *variant = NULL;
- char *path;
+ const char *path;
- variant = g_dbus_proxy_call_finish (proxy, result, &error);
+ variant = _nm_dbus_proxy_call_finish (proxy, result,
+ G_VARIANT_TYPE ("(o)"),
+ &error);
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;
self = NM_SUPPLICANT_INTERFACE (user_data);
priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
- if (variant && g_variant_is_of_type (variant, G_VARIANT_TYPE ("(o)"))) {
- g_variant_get (variant, "(o)", &path);
+ if (variant) {
+ g_variant_get (variant, "(&o)", &path);
interface_add_done (self, path);
- g_free (path);
} else if (_dbus_error_has_name (error, WPAS_ERROR_EXISTS_ERROR)) {
/* Interface already added, just get its object path */
g_dbus_proxy_call (priv->wpas_proxy,
@@ -988,19 +992,15 @@ add_network_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data)
const char *blob_name;
GByteArray *blob_data;
- reply = g_dbus_proxy_call_finish (proxy, result, &error);
+ reply = _nm_dbus_proxy_call_finish (proxy, result,
+ G_VARIANT_TYPE ("(o)"),
+ &error);
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;
self = NM_SUPPLICANT_INTERFACE (user_data);
priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self);
- if (reply && !g_variant_is_of_type (reply, G_VARIANT_TYPE ("(o)"))) {
- error = g_error_new (NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
- "Unexpected AddNetwork reply type %s",
- g_variant_get_type_string (reply));
- }
-
g_free (priv->net_path);
priv->net_path = NULL;
@@ -1011,7 +1011,6 @@ add_network_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data)
}
g_variant_get (reply, "(o)", &priv->net_path);
- g_assert (priv->net_path);
/* Send blobs first; otherwise jump to selecting the network */
blobs = nm_supplicant_config_get_blobs (priv->cfg);
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
index 0060d3f731..02c39c30f7 100644
--- a/src/vpn-manager/nm-vpn-connection.c
+++ b/src/vpn-manager/nm-vpn-connection.c
@@ -1851,7 +1851,7 @@ plugin_need_secrets_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_d
gs_free_error GError *error = NULL;
const char *setting_name;
- reply = g_dbus_proxy_call_finish (proxy, result, &error);
+ reply = _nm_dbus_proxy_call_finish (proxy, result, G_VARIANT_TYPE ("(s)"), &error);
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;