[PATCH v2 11/13] ublox: if authentication not required, ignore +UAUTHREQ=0 errors

Aleksander Morgado aleksander at aleksander.es
Fri Sep 15 23:23:08 UTC 2017


On 14/09/17 22:01, Aleksander Morgado wrote:
> Just go on with the connection attempt.
> ---
>  plugins/ublox/mm-broadband-bearer-ublox.c | 24 ++++++++++++++++++------
>  1 file changed, 18 insertions(+), 6 deletions(-)
> 

Merged to git master.

> diff --git a/plugins/ublox/mm-broadband-bearer-ublox.c b/plugins/ublox/mm-broadband-bearer-ublox.c
> index 647a83ff..866b2e7f 100644
> --- a/plugins/ublox/mm-broadband-bearer-ublox.c
> +++ b/plugins/ublox/mm-broadband-bearer-ublox.c
> @@ -65,6 +65,7 @@ typedef struct {
>      MMPortSerialAt         *primary;
>      MMPort                 *data;
>      guint                   cid;
> +    gboolean                auth_required;
>      /* For IPv4 settings */
>      MMBearerIpConfig       *ip_config;
>  } CommonConnectContext;
> @@ -368,14 +369,22 @@ uauthreq_ready (MMBaseModem  *modem,
>                  GAsyncResult *res,
>                  GTask        *task)
>  {
> -    const gchar          *response;
> -    GError               *error = NULL;
> +    const gchar *response;
> +    GError      *error = NULL;
> 
>      response = mm_base_modem_at_command_finish (modem, res, &error);
>      if (!response) {
> -        g_task_return_error (task, error);
> -        g_object_unref (task);
> -        return;
> +        CommonConnectContext *ctx;
> +
> +        ctx = (CommonConnectContext *) g_task_get_task_data (task);
> +        /* If authentication required and the +UAUTHREQ failed, abort */
> +        if (ctx->auth_required) {
> +            g_task_return_error (task, error);
> +            g_object_unref (task);
> +            return;
> +        }
> +        /* Otherwise, ignore */
> +        g_error_free (error);
>      }
> 
>      activate_3gpp (task);
> @@ -396,7 +405,10 @@ authenticate_3gpp (GTask *task)
>      password     = mm_bearer_properties_get_password     (mm_base_bearer_peek_config (MM_BASE_BEARER (ctx->self)));
>      allowed_auth = mm_bearer_properties_get_allowed_auth (mm_base_bearer_peek_config (MM_BASE_BEARER (ctx->self)));
> 
> -    if (!user || !password || allowed_auth == MM_BEARER_ALLOWED_AUTH_NONE) {
> +    /* Flag whether authentication is required. If it isn't, we won't fail
> +     * connection attempt if the +UAUTHREQ command fails */
> +    ctx->auth_required = (user && password && allowed_auth != MM_BEARER_ALLOWED_AUTH_NONE);
> +    if (!ctx->auth_required) {
>          mm_dbg ("Not using authentication");
>          cmd = g_strdup_printf ("+UAUTHREQ=%u,0", ctx->cid);
>      } else {
> --
> 2.14.1
> 


-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list