summary refs log tree commit diff
path: root/src/devices/wwan
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2020-04-11 21:28:04 +0200
committerMichael Biebl <biebl@debian.org>2020-04-11 21:28:04 +0200
commit1e5977b62f896e844b548c3007ace9e1dfa7f9ed (patch)
tree7a7416ed410e72b6200f3d860fd315ec11cc106b /src/devices/wwan
parentb012fa6e1d808e0736c009799c62d835cbfcc1dd (diff)
New upstream version 1.23.90 upstream/1.23.90
Diffstat (limited to 'src/devices/wwan')
-rw-r--r--src/devices/wwan/meson.build2
-rw-r--r--src/devices/wwan/nm-device-modem.c20
-rw-r--r--src/devices/wwan/nm-modem-broadband.c2
-rw-r--r--src/devices/wwan/nm-modem-ofono.c4
-rw-r--r--src/devices/wwan/nm-modem.c11
-rw-r--r--src/devices/wwan/nm-service-providers.c30
6 files changed, 40 insertions, 29 deletions
diff --git a/src/devices/wwan/meson.build b/src/devices/wwan/meson.build
index ed6f8010..97252edc 100644
--- a/src/devices/wwan/meson.build
+++ b/src/devices/wwan/meson.build
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: LGPL-2.1+
+
 nm_service_providers_source = files('nm-service-providers.c')
 
 sources = nm_service_providers_source + files(
diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c
index 3de5ae07..a2f2e7a6 100644
--- a/src/devices/wwan/nm-device-modem.c
+++ b/src/devices/wwan/nm-device-modem.c
@@ -156,7 +156,7 @@ modem_prepare_result (NMModem *modem,
 	}
 
 	priv->stage1_state = NM_DEVICE_STAGE_STATE_COMPLETED;
-	nm_device_activate_schedule_stage1_device_prepare (device);
+	nm_device_activate_schedule_stage1_device_prepare (device, FALSE);
 }
 
 static void
@@ -191,7 +191,7 @@ modem_auth_result (NMModem *modem, GError *error, gpointer user_data)
 	}
 
 	priv->stage1_state = NM_DEVICE_STAGE_STATE_INIT;
-	nm_device_activate_schedule_stage1_device_prepare (device);
+	nm_device_activate_schedule_stage1_device_prepare (device, FALSE);
 }
 
 static void
@@ -384,6 +384,15 @@ modem_state_cb (NMModem *modem,
 		 */
 		nm_modem_set_mm_enabled (priv->modem, priv->rf_enabled);
 
+		if (dev_state == NM_DEVICE_STATE_NEED_AUTH) {
+			/* The modem was unlocked externally to NetworkManager,
+			   deactivate so the default connection can be
+			   automatically activated again */
+			nm_device_state_changed (device,
+			                         NM_DEVICE_STATE_DEACTIVATING,
+			                         NM_DEVICE_STATE_REASON_MODEM_AVAILABLE);
+		}
+
 		/* Now allow connections without a PIN to be available */
 		nm_device_recheck_available_connections (device);
 	}
@@ -605,7 +614,6 @@ static NMActStageReturn
 act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason)
 {
 	nm_modem_act_stage2_config (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem);
-
 	return NM_ACT_STAGE_RETURN_SUCCESS;
 }
 
@@ -843,9 +851,9 @@ dispose (GObject *object)
 		nm_clear_pointer (&priv->modem, nm_modem_unclaim);
 	}
 
-	g_clear_pointer (&priv->device_id, g_free);
-	g_clear_pointer (&priv->operator_code, g_free);
-	g_clear_pointer (&priv->apn, g_free);
+	nm_clear_g_free (&priv->device_id);
+	nm_clear_g_free (&priv->operator_code);
+	nm_clear_g_free (&priv->apn);
 
 	G_OBJECT_CLASS (nm_device_modem_parent_class)->dispose (object);
 }
diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c
index 947aa4c8..f89ec86c 100644
--- a/src/devices/wwan/nm-modem-broadband.c
+++ b/src/devices/wwan/nm-modem-broadband.c
@@ -324,7 +324,7 @@ connect_context_clear (NMModemBroadband *self)
 		ConnectContext *ctx = self->_priv.ctx;
 
 		g_clear_error (&ctx->first_error);
-		g_clear_pointer (&ctx->ip_types, g_array_unref);
+		nm_clear_pointer (&ctx->ip_types, g_array_unref);
 		nm_clear_g_cancellable (&ctx->cancellable);
 		g_clear_object (&ctx->connection);
 		g_clear_object (&ctx->connect_properties);
diff --git a/src/devices/wwan/nm-modem-ofono.c b/src/devices/wwan/nm-modem-ofono.c
index b68cd7e8..2fc44881 100644
--- a/src/devices/wwan/nm-modem-ofono.c
+++ b/src/devices/wwan/nm-modem-ofono.c
@@ -449,7 +449,7 @@ handle_sim_iface (NMModemOfono *self, gboolean found)
 			g_signal_handlers_disconnect_by_data (priv->sim_proxy, self);
 			g_clear_object (&priv->sim_proxy);
 		}
-		g_clear_pointer (&priv->imsi, g_free);
+		nm_clear_g_free (&priv->imsi);
 		update_modem_state (self);
 	} else if (found && (!priv->sim_proxy && !priv->sim_proxy_cancellable)) {
 		_LOGI ("found new SimManager interface");
@@ -769,7 +769,7 @@ stage1_prepare_done (GObject *source,
 
 	g_clear_object (&priv->context_proxy_cancellable);
 
-	g_clear_pointer (&priv->connect_properties, g_hash_table_destroy);
+	nm_clear_pointer (&priv->connect_properties, g_hash_table_destroy);
 
 	if (error) {
 		_LOGW ("connection failed: %s", error->message);
diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c
index ad6449b1..bedc3844 100644
--- a/src/devices/wwan/nm-modem.c
+++ b/src/devices/wwan/nm-modem.c
@@ -975,7 +975,8 @@ modem_secrets_cb (NMActRequest *req,
 
 	priv->secrets_id = NULL;
 
-	if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+	if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) ||
+	    g_error_matches (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_NO_SECRETS))
 		return;
 
 	if (error)
@@ -1710,7 +1711,7 @@ static void
 set_property (GObject *object, guint prop_id,
               const GValue *value, GParamSpec *pspec)
 {
-	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object);
+	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object);
 	const char *s;
 
 	switch (prop_id) {
@@ -1747,7 +1748,7 @@ set_property (GObject *object, guint prop_id,
 		priv->ip_types = g_value_get_uint (value);
 		break;
 	case PROP_SIM_OPERATOR_ID:
-		g_clear_pointer (&priv->sim_operator_id, g_free);
+		nm_clear_g_free (&priv->sim_operator_id);
 		s = g_value_get_string (value);
 		if (s && s[0])
 			priv->sim_operator_id = g_strdup (s);
@@ -1796,7 +1797,7 @@ constructed (GObject *object)
 static void
 dispose (GObject *object)
 {
-	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object);
+	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object);
 
 	g_clear_object (&priv->act_request);
 
@@ -1806,7 +1807,7 @@ dispose (GObject *object)
 static void
 finalize (GObject *object)
 {
-	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object);
+	NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object);
 
 	g_free (priv->uid);
 	g_free (priv->path);
diff --git a/src/devices/wwan/nm-service-providers.c b/src/devices/wwan/nm-service-providers.c
index 5140f7ed..5694c99e 100644
--- a/src/devices/wwan/nm-service-providers.c
+++ b/src/devices/wwan/nm-service-providers.c
@@ -118,11 +118,11 @@ parser_gsm_start (ParseContext *parse_context,
 		}
 	} else if (strcmp (name, "apn") == 0) {
 		parse_context->found_internet_apn = FALSE;
-		g_clear_pointer (&parse_context->apn, g_free);
-		g_clear_pointer (&parse_context->username, g_free);
-		g_clear_pointer (&parse_context->password, g_free);
-		g_clear_pointer (&parse_context->gateway, g_free);
-		g_clear_pointer (&parse_context->auth_method, g_free);
+		nm_clear_g_free (&parse_context->apn);
+		nm_clear_g_free (&parse_context->username);
+		nm_clear_g_free (&parse_context->password);
+		nm_clear_g_free (&parse_context->gateway);
+		nm_clear_g_free (&parse_context->auth_method);
 		g_slist_free_full (parse_context->dns, g_free);
 		parse_context->dns = NULL;
 
@@ -155,7 +155,7 @@ parser_gsm_apn_start (ParseContext *parse_context,
 	} else if (strcmp (name, "authentication") == 0) {
 		for (i = 0; attribute_names && attribute_names[i]; i++) {
 			if (strcmp (attribute_names[i], "method") == 0) {
-				g_clear_pointer (&parse_context->auth_method, g_free);
+				nm_clear_g_free (&parse_context->auth_method);
 				parse_context->auth_method = g_strstrip (g_strdup (attribute_values[i]));
 				break;
 			}
@@ -173,7 +173,7 @@ parser_start_element (GMarkupParseContext *context,
 {
 	ParseContext *parse_context = user_data;
 
-	g_clear_pointer (&parse_context->text_buffer, g_free);
+	nm_clear_g_free (&parse_context->text_buffer);
 
 	switch (parse_context->state) {
 	case PARSER_TOPLEVEL:
@@ -205,7 +205,7 @@ parser_country_end (ParseContext *parse_context,
                     const char *name)
 {
 	if (strcmp (name, "country") == 0) {
-		g_clear_pointer (&parse_context->text_buffer, g_free);
+		nm_clear_g_free (&parse_context->text_buffer);
 		parse_context->state = PARSER_TOPLEVEL;
 	}
 }
@@ -215,7 +215,7 @@ parser_provider_end (ParseContext *parse_context,
                      const char *name)
 {
 	if (strcmp (name, "provider") == 0) {
-		g_clear_pointer (&parse_context->text_buffer, g_free);
+		nm_clear_g_free (&parse_context->text_buffer);
 		parse_context->state = PARSER_COUNTRY;
 	}
 }
@@ -225,7 +225,7 @@ parser_gsm_end (ParseContext *parse_context,
                 const char *name)
 {
 	if (strcmp (name, "gsm") == 0) {
-		g_clear_pointer (&parse_context->text_buffer, g_free);
+		nm_clear_g_free (&parse_context->text_buffer);
 		parse_context->state = PARSER_PROVIDER;
 	}
 }
@@ -235,19 +235,19 @@ parser_gsm_apn_end (ParseContext *parse_context,
                     const char *name)
 {
 	if (strcmp (name, "username") == 0) {
-		g_clear_pointer (&parse_context->username, g_free);
+		nm_clear_g_free (&parse_context->username);
 		parse_context->username = g_steal_pointer (&parse_context->text_buffer);
 	} else if (strcmp (name, "password") == 0) {
-		g_clear_pointer (&parse_context->password, g_free);
+		nm_clear_g_free (&parse_context->password);
 		parse_context->password = g_steal_pointer (&parse_context->text_buffer);
 	} else if (strcmp (name, "dns") == 0) {
 		parse_context->dns = g_slist_prepend (parse_context->dns,
 		                                   g_steal_pointer (&parse_context->text_buffer));
 	} else if (strcmp (name, "gateway") == 0) {
-		g_clear_pointer (&parse_context->gateway, g_free);
+		nm_clear_g_free (&parse_context->gateway);
 		parse_context->gateway = g_steal_pointer (&parse_context->text_buffer);
 	} else if (strcmp (name, "apn") == 0) {
-		g_clear_pointer (&parse_context->text_buffer, g_free);
+		nm_clear_g_free (&parse_context->text_buffer);
 
 		if (parse_context->mccmnc_matched && parse_context->found_internet_apn)
 			parse_context->state = PARSER_DONE;
@@ -262,7 +262,7 @@ parser_cdma_end (ParseContext *parse_context,
                  const char *name)
 {
 	if (strcmp (name, "cdma") == 0) {
-		g_clear_pointer (&parse_context->text_buffer, g_free);
+		nm_clear_g_free (&parse_context->text_buffer);
 		parse_context->state = PARSER_PROVIDER;
 	}
 }