bearer-mbim: never update bearer properties sent by the user
We should never run any mm_bearer_properties_set_X() operations ourselves for the properties received by the user, or otherwise the logic comparing the bearers will fail and we may end up creating one bearer per connection attempt.
This commit is contained in:
+16
-12
@@ -878,6 +878,7 @@ static gboolean
|
||||
load_settings_from_profile (MMBearerMbim *self,
|
||||
ConnectContext *ctx,
|
||||
MM3gppProfile *profile,
|
||||
MMBearerApnType default_apn_type,
|
||||
GError **error)
|
||||
{
|
||||
MMBearerAllowedAuth bearer_auth;
|
||||
@@ -888,9 +889,12 @@ load_settings_from_profile (MMBearerMbim *self,
|
||||
ctx->apn = g_strdup (mm_3gpp_profile_get_apn (profile));
|
||||
apn_type = mm_3gpp_profile_get_apn_type (profile);
|
||||
if (apn_type == MM_BEARER_APN_TYPE_NONE) {
|
||||
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
|
||||
"APN type in profile is not initialized");
|
||||
return FALSE;
|
||||
if (default_apn_type == MM_BEARER_APN_TYPE_NONE) {
|
||||
g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
|
||||
"APN type in profile is not initialized");
|
||||
return FALSE;
|
||||
}
|
||||
apn_type = default_apn_type;
|
||||
}
|
||||
ctx->context_type = mm_bearer_apn_type_to_mbim_context_type (apn_type, self, &inner_error);
|
||||
if (inner_error) {
|
||||
@@ -951,7 +955,7 @@ get_profile_ready (MMIfaceModem3gppProfileManager *modem,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!load_settings_from_profile (self, ctx, profile, &error)) {
|
||||
if (!load_settings_from_profile (self, ctx, profile, MM_BEARER_APN_TYPE_NONE, &error)) {
|
||||
g_prefix_error (&error, "Couldn't load settings from profile: ");
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
@@ -1209,14 +1213,14 @@ load_settings_from_bearer (MMBearerMbim *self,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* If not loading from a stored profile, initialize the
|
||||
* APN type to 'internet' by default, which is what we've done
|
||||
* until now. */
|
||||
if (mm_bearer_properties_get_apn_type (properties) == MM_BEARER_APN_TYPE_NONE)
|
||||
mm_bearer_properties_set_apn_type (properties, MM_BEARER_APN_TYPE_DEFAULT);
|
||||
|
||||
/* Use the implicit profile settings in the bearer properties */
|
||||
if (!load_settings_from_profile (self, ctx, mm_bearer_properties_peek_3gpp_profile (properties), error))
|
||||
/* Use the implicit profile settings in the bearer properties.
|
||||
* If not loading from a stored profile, initialize the APN type to 'internet'
|
||||
* (TYPE_DEFAULT) by default, which is what we've done until now. */
|
||||
if (!load_settings_from_profile (self,
|
||||
ctx,
|
||||
mm_bearer_properties_peek_3gpp_profile (properties),
|
||||
MM_BEARER_APN_TYPE_DEFAULT,
|
||||
error))
|
||||
return FALSE;
|
||||
|
||||
/* Is this a 3GPP only modem and no APN or profile id was given? If so, error */
|
||||
|
||||
Reference in New Issue
Block a user