[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