aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-08-27 15:49:19 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-29 17:26:47 +0200
commit84e69a1abb534452547b62d18a5658515a516a7f (patch)
tree75df4b81ef501eb52341942fed87b64d5934752c
parentc468e5b35236bfd006e5e841143b5795536f7030 (diff)
bearer-qmi: only keep internal state if IP type specific connection succeeds
-rw-r--r--src/mm-bearer-qmi.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mm-bearer-qmi.c b/src/mm-bearer-qmi.c
index 669c3224..961b9158 100644
--- a/src/mm-bearer-qmi.c
+++ b/src/mm-bearer-qmi.c
@@ -533,14 +533,20 @@ connect_context_step (ConnectContext *ctx)
/* Keep connection related data */
g_assert (ctx->self->priv->data == NULL);
ctx->self->priv->data = g_object_ref (ctx->data);
- g_assert (ctx->self->priv->client_ipv4 == NULL);
- ctx->self->priv->client_ipv4 = g_object_ref (ctx->client_ipv4);
+
g_assert (ctx->self->priv->packet_data_handle_ipv4 == 0);
- ctx->self->priv->packet_data_handle_ipv4 = ctx->packet_data_handle_ipv4;
- g_assert (ctx->self->priv->client_ipv6 == NULL);
- ctx->self->priv->client_ipv6 = g_object_ref (ctx->client_ipv6);
+ g_assert (ctx->self->priv->client_ipv4 == NULL);
+ if (ctx->packet_data_handle_ipv4) {
+ ctx->self->priv->packet_data_handle_ipv4 = ctx->packet_data_handle_ipv4;
+ ctx->self->priv->client_ipv4 = g_object_ref (ctx->client_ipv4);
+ }
+
g_assert (ctx->self->priv->packet_data_handle_ipv6 == 0);
- ctx->self->priv->packet_data_handle_ipv6 = ctx->packet_data_handle_ipv6;
+ g_assert (ctx->self->priv->client_ipv6 == NULL);
+ if (ctx->packet_data_handle_ipv6) {
+ ctx->self->priv->packet_data_handle_ipv6 = ctx->packet_data_handle_ipv6;
+ ctx->self->priv->client_ipv6 = g_object_ref (ctx->client_ipv6);
+ }
/* Build IP config; always DHCP based */
config = mm_bearer_ip_config_new ();