diff options
author | Dan Williams <dcbw@redhat.com> | 2014-07-01 16:30:18 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-07-01 16:38:34 -0500 |
commit | 915a5beac0e10b0246adc9eefdb2dc29eb2c071e (patch) | |
tree | b73a5f4a8ecf31cda36bc11b0f68b9594b04fe03 | |
parent | 15a3ebbd354017347d3d296980c7a7460c916bae (diff) | |
download | ModemManager-915a5beac0e10b0246adc9eefdb2dc29eb2c071e.tar.gz |
bearer-mbim: ignore empty DNS server addresses
-rw-r--r-- | src/mm-bearer-mbim.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/mm-bearer-mbim.c b/src/mm-bearer-mbim.c index 643964dda..781a6680b 100644 --- a/src/mm-bearer-mbim.c +++ b/src/mm-bearer-mbim.c @@ -239,9 +239,11 @@ ip_configuration_query_ready (MbimDevice *device, mm_dbg (" DNS addresses (%u)", ipv4dnsservercount); for (i = 0; i < ipv4dnsservercount; i++) { addr = g_inet_address_new_from_bytes ((guint8 *)&ipv4dnsserver[i], G_SOCKET_FAMILY_IPV4); - str = g_inet_address_to_string (addr); - mm_dbg (" DNS [%u]: '%s'", i, str); - g_free (str); + if (!g_inet_address_get_is_any (addr)) { + str = g_inet_address_to_string (addr); + mm_dbg (" DNS [%u]: '%s'", i, str); + g_free (str); + } g_object_unref (addr); } } @@ -283,9 +285,11 @@ ip_configuration_query_ready (MbimDevice *device, mm_dbg (" DNS addresses (%u)", ipv6dnsservercount); for (i = 0; i < ipv6dnsservercount; i++) { addr = g_inet_address_new_from_bytes ((guint8 *)&ipv6dnsserver[i], G_SOCKET_FAMILY_IPV6); - str = g_inet_address_to_string (addr); - mm_dbg (" DNS [%u]: '%s'", i, str); - g_free (str); + if (!g_inet_address_get_is_any (addr)) { + str = g_inet_address_to_string (addr); + mm_dbg (" DNS [%u]: '%s'", i, str); + g_free (str); + } g_object_unref (addr); } } @@ -308,7 +312,7 @@ ip_configuration_query_ready (MbimDevice *device, ipv4addresscount > 0 && ipv4dnsservercount > 0) { gchar **strarr; - guint i; + guint i, n; mm_bearer_ip_config_set_method (ipv4_config, MM_BEARER_IP_METHOD_STATIC); @@ -333,9 +337,10 @@ ip_configuration_query_ready (MbimDevice *device, /* DNS */ strarr = g_new0 (gchar *, ipv4dnsservercount + 1); - for (i = 0; i < ipv4dnsservercount; i++) { + for (i = 0, n = 0; i < ipv4dnsservercount; i++) { addr = g_inet_address_new_from_bytes ((guint8 *)&ipv4dnsserver[i], G_SOCKET_FAMILY_IPV4); - strarr[i] = g_inet_address_to_string (addr); + if (!g_inet_address_get_is_any (addr)) + strarr[n++] = g_inet_address_to_string (addr); g_object_unref (addr); } mm_bearer_ip_config_set_dns (ipv4_config, (const gchar **)strarr); @@ -361,7 +366,7 @@ ip_configuration_query_ready (MbimDevice *device, ipv6addresscount > 0 && ipv6dnsservercount > 0) { gchar **strarr; - guint i; + guint i, n; mm_bearer_ip_config_set_method (ipv6_config, MM_BEARER_IP_METHOD_STATIC); @@ -394,9 +399,10 @@ ip_configuration_query_ready (MbimDevice *device, /* DNS */ strarr = g_new0 (gchar *, ipv6dnsservercount + 1); - for (i = 0; i < ipv6dnsservercount; i++) { + for (i = 0, n = 0; i < ipv6dnsservercount; i++) { addr = g_inet_address_new_from_bytes ((guint8 *)&ipv6dnsserver[i], G_SOCKET_FAMILY_IPV6); - strarr[i] = g_inet_address_to_string (addr); + if (!g_inet_address_get_is_any (addr)) + strarr[n++] = g_inet_address_to_string (addr); g_object_unref (addr); } mm_bearer_ip_config_set_dns (ipv6_config, (const gchar **)strarr); |