From 84e69a1abb534452547b62d18a5658515a516a7f Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 27 Aug 2012 15:49:19 +0200 Subject: bearer-qmi: only keep internal state if IP type specific connection succeeds --- src/mm-bearer-qmi.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') 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 (); -- cgit v1.2.3-70-g09d2