diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-27 15:49:19 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-27 15:49:19 +0200 |
commit | bc980cb5fe3009b379f50ed7bbfa40c1016f2a6c (patch) | |
tree | cb2d654ed8dcf707464d1238c58a4e257ed23b5b | |
parent | b2d11ea2cec7c6d3330f6d3a9e86b87c55a786c2 (diff) |
bearer-qmi: only keep internal state if IP type specific connection succeeds
-rw-r--r-- | src/mm-bearer-qmi.c | 18 |
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 (); |