*** nm-named-manager.c.orig 2007-04-18 21:13:05.000000000 +0300 --- nm-named-manager.c 2007-10-25 11:52:23.000000000 +0300 *************** *** 351,356 **** --- 351,357 ---- { const char * tmp_resolv_conf = RESOLV_CONF ".tmp"; char * searches = NULL; + char * nameservers = NULL; FILE * f; /* If no config, we don't have anything to update, so exit silently */ *************** *** 364,404 **** return TRUE; } - if ((f = fopen (tmp_resolv_conf, "w")) == NULL) - goto lose; - - if (fprintf (f, "%s","# generated by NetworkManager, do not edit!\n\n") < 0) - goto lose; - searches = compute_searches (mgr, config); ! if (mgr->priv->use_named == TRUE) { ! /* Using caching-nameserver & local DNS */ ! if (fprintf (f, "%s%s%s", "; Use a local caching nameserver controlled by NetworkManager\n\n", searches, "\nnameserver 127.0.0.1\n") < 0) goto lose; - } - else - { - /* Using glibc resolver */ - char *nameservers = compute_nameservers (mgr, config); ! fprintf (f, "%s\n\n", searches); ! g_free (searches); ! fprintf (f, "%s\n\n", nameservers); ! g_free (nameservers); ! } ! if (fclose (f) < 0) ! goto lose; ! if (rename (tmp_resolv_conf, RESOLV_CONF) < 0) ! goto lose; nm_system_update_dns (); return TRUE; lose: g_free (searches); fclose (f); g_set_error (error, --- 365,411 ---- return TRUE; } searches = compute_searches (mgr, config); + nameservers = compute_nameservers (mgr, config); ! if (strlen(nameservers) > 0) { ! if ((f = fopen (tmp_resolv_conf, "w")) == NULL) goto lose; ! if (fprintf (f, "%s","# generated by NetworkManager, do not edit!\n\n") < 0) ! goto lose; ! if (mgr->priv->use_named == TRUE) ! { ! /* Using caching-nameserver & local DNS */ ! if (fprintf (f, "%s%s%s", "; Use a local caching nameserver controlled by NetworkManager\n\n", searches, "\nnameserver 127.0.0.1\n") < 0) ! goto lose; ! } ! else ! { ! /* Using glibc resolver */ ! fprintf (f, "%s\n\n", searches); ! fprintf (f, "%s\n\n", nameservers); ! } ! if (fclose (f) < 0) ! goto lose; ! ! if (rename (tmp_resolv_conf, RESOLV_CONF) < 0) ! goto lose; ! } ! else ! nm_info ("No name servers returned by DHCP! Leaving resolv.conf intact!"); ! ! g_free (nameservers); ! g_free (searches); nm_system_update_dns (); return TRUE; lose: + g_free (nameservers); g_free (searches); fclose (f); g_set_error (error,