aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-probe.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-04-11 19:21:21 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-04-17 15:19:39 +0200
commit659d942c33767d44f2470aee183b0eb0fc268016 (patch)
treea227fb54afab8b94c948a1a205a6363ae73ca2f6 /src/mm-port-probe.c
parentd1d5616ca5607836fc2a17024555ef2578bb6d8e (diff)
mbim-port: make port closing async always
Don't just close the port and forget, really wait to get the CLOSE response before going on.
Diffstat (limited to 'src/mm-port-probe.c')
-rw-r--r--src/mm-port-probe.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c
index 5e39373e..76487534 100644
--- a/src/mm-port-probe.c
+++ b/src/mm-port-probe.c
@@ -345,8 +345,8 @@ port_probe_run_task_free (PortProbeRunTask *task)
#if defined WITH_MBIM
if (task->mbim_port) {
- if (mm_mbim_port_is_open (task->mbim_port))
- mm_mbim_port_close (task->mbim_port);
+ /* We should have closed it cleanly before */
+ g_assert (!mm_mbim_port_is_open (task->mbim_port));
g_object_unref (task->mbim_port);
}
#endif
@@ -469,9 +469,22 @@ wdm_probe_qmi (MMPortProbe *self)
#if defined WITH_MBIM
static void
+mbim_port_close_ready (MMMbimPort *mbim_port,
+ GAsyncResult *res,
+ MMPortProbe *self)
+{
+ PortProbeRunTask *task = self->priv->task;
+
+ mm_mbim_port_close_finish (mbim_port, res, NULL);
+
+ /* Keep on */
+ task->source_id = g_idle_add ((GSourceFunc)wdm_probe, self);
+}
+
+static void
mbim_port_open_ready (MMMbimPort *mbim_port,
- GAsyncResult *res,
- MMPortProbe *self)
+ GAsyncResult *res,
+ MMPortProbe *self)
{
PortProbeRunTask *task = self->priv->task;
GError *error = NULL;
@@ -489,10 +502,9 @@ mbim_port_open_ready (MMMbimPort *mbim_port,
/* Set probing result */
mm_port_probe_set_result_mbim (self, is_mbim);
- mm_mbim_port_close (mbim_port);
-
- /* Keep on */
- task->source_id = g_idle_add ((GSourceFunc)wdm_probe, self);
+ mm_mbim_port_close (task->mbim_port,
+ (GAsyncReadyCallback)mbim_port_close_ready,
+ self);
}
static gboolean