aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-10-25 16:18:16 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-10-25 16:19:51 +0200
commite2d20974c14b1c28d172864974e1e73b2f65dc10 (patch)
treefd918302e003846b4a54c223b694a0e0cba4abf6 /src/mm-iface-modem.c
parent7fd09123f899c8d9a9d82af6a2fde2e503eb1b47 (diff)
iface-modem: don't re-set interface skeleton after PIN unlock
Before the change, the client application loses all new property change notifications in the interface object: $ sudo mmcli -m 0 -w /org/freedesktop/ModemManager1/Modem/0: Initial state, 'locked' /org/freedesktop/ModemManager1/Modem/0: State changed, 'locked' --> 'initializing' (Reason: None or unknown) After the change, it doesn't: $ sudo mmcli -m 0 -w /org/freedesktop/ModemManager1/Modem/0: Initial state, 'locked' /org/freedesktop/ModemManager1/Modem/0: State changed, 'locked' --> 'initializing' (Reason: None or unknown) /org/freedesktop/ModemManager1/Modem/0: State changed, 'initializing' --> 'disabled' (Reason: None or unknown) /org/freedesktop/ModemManager1/Modem/0: State changed, 'disabled' --> 'enabling' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'enabling' --> 'registered' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'registered' --> 'disabling' (Reason: User request) /org/freedesktop/ModemManager1/Modem/0: State changed, 'disabling' --> 'disabled' (Reason: User request)
Diffstat (limited to 'src/mm-iface-modem.c')
-rw-r--r--src/mm-iface-modem.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index e7bfb969..27ac2572 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -3694,9 +3694,11 @@ interface_initialization_step (InitializationContext *ctx)
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
}
- /* Finally, export the new interface, even if we got errors */
- mm_gdbus_object_skeleton_set_modem (MM_GDBUS_OBJECT_SKELETON (ctx->self),
- MM_GDBUS_MODEM (ctx->skeleton));
+ /* Finally, export the new interface, even if we got errors, but only if not
+ * done already */
+ if (!mm_gdbus_object_peek_modem (MM_GDBUS_OBJECT (ctx->self)))
+ mm_gdbus_object_skeleton_set_modem (MM_GDBUS_OBJECT_SKELETON (ctx->self),
+ MM_GDBUS_MODEM (ctx->skeleton));
initialization_context_complete_and_free (ctx);
return;
}