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
[email protected]
https://lists.connman.net/mailman/listinfo/connman