In the case there are more than one context saved by ofono, the signal sent is an array and not a dictionary. This commit implements this case by recursing it of one step. --- plugins/ofono.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/plugins/ofono.c b/plugins/ofono.c index 8f0f146..9975f64 100644 --- a/plugins/ofono.c +++ b/plugins/ofono.c @@ -1501,7 +1501,7 @@ static gboolean cm_context_added(DBusConnection *conn, const char *path = dbus_message_get_path(message); char *context_path; struct modem_data *modem; - DBusMessageIter iter, properties; + DBusMessageIter iter, properties, dict; DBG("%s", path); @@ -1517,6 +1517,13 @@ static gboolean cm_context_added(DBusConnection *conn, dbus_message_iter_next(&iter); dbus_message_iter_recurse(&iter, &properties); + /* Sometimes, we get an array instead of dict */ + if (dbus_message_iter_get_arg_type(&properties) == DBUS_TYPE_ARRAY) { + /* Must recurse again */ + dbus_message_iter_recurse(&properties, &dict); + if (add_cm_context(modem, context_path, &dict) != 0) + return TRUE; + } if (add_cm_context(modem, context_path, &properties) != 0) return TRUE; -- 2.1.4 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman