[PATCH] broadband-bearer: set TTY as connected as soon as ATD replies
Dan Williams
dcbw at redhat.com
Fri Mar 24 20:35:14 UTC 2017
On Fri, 2017-03-24 at 15:03 +0100, Aleksander Morgado wrote:
> When the connection request is done via ATD, flag the port as
> connected as soon as the successful response is received, so that we
> remove our polling on the device right away.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=99541
LGTM.
Dan
> ---
>
> Hey Colin, Dan & everyone,
>
> This patch tries to minimize the possibility of a race condition
> happening when we end up sending AT commands (e.g. signal quality
> loading request) between a successful reply to ATD, and the actual
> setting of the TTY as 'connected', which is done in an idle.
>
> This was discussed not long ago:
> https://lists.freedesktop.org/archives/modemmanager-devel/2017-Januar
> y/003773.html
>
> Comments?
>
> ---
> src/mm-broadband-bearer.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c
> index f2834b1b..bb4ff567 100644
> --- a/src/mm-broadband-bearer.c
> +++ b/src/mm-broadband-bearer.c
> @@ -254,7 +254,10 @@ dial_cdma_ready (MMBaseModem *modem,
> return;
> }
>
> - /* else... Yuhu! */
> + /* The ATD command has succeeded, and therefore the TTY is in
> data mode now.
> + * Instead of waiting for setting the port as connected later in
> + * connect_succeeded(), we do it right away so that we stop our
> polling. */
> + mm_port_set_connected (ctx->data, TRUE);
>
> /* Keep port open during connection */
> ctx->close_data_on_exit = FALSE;
> @@ -573,6 +576,11 @@ atd_ready (MMBaseModem *modem,
> return;
> }
>
> + /* The ATD command has succeeded, and therefore the TTY is in
> data mode now.
> + * Instead of waiting for setting the port as connected later in
> + * connect_succeeded(), we do it right away so that we stop our
> polling. */
> + mm_port_set_connected (MM_PORT (ctx->dial_port), TRUE);
> +
> g_simple_async_result_set_op_res_gpointer (ctx->result,
> g_object_ref (ctx-
> >dial_port),
> (GDestroyNotify)g_obj
> ect_unref);
> @@ -1177,7 +1185,8 @@ connect_succeeded (ConnectContext *ctx,
> ctx->self->priv->port = g_object_ref
> (mm_bearer_connect_result_peek_data (result));
> ctx->self->priv->connection_type = connection_type;
>
> - /* Port is connected; update the state */
> + /* Port is connected; update the state. For ATD based
> connections, the port
> + * may already be set as connected, but no big deal. */
> mm_port_set_connected (ctx->self->priv->port, TRUE);
>
> /* Set operation result */
> --
> 2.12.0
> _______________________________________________
> ModemManager-devel mailing list
> ModemManager-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel
More information about the ModemManager-devel
mailing list