diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-27 15:49:19 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-29 17:26:47 +0200 |
commit | 84e69a1abb534452547b62d18a5658515a516a7f (patch) | |
tree | 75df4b81ef501eb52341942fed87b64d5934752c | |
parent | c468e5b35236bfd006e5e841143b5795536f7030 (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 (); |