diff --git a/ChangeLog b/ChangeLog index 2cabf2d39..175287129 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2005-02-22 Dan Williams + + * src/NetworkManagerPolicy.c + - (nm_policy_activation_finish): Deactivate a device if its activation fails, + and NULL out data->active_device so that we have to choose another one. + This may make NetworkManager keep attempting to connect to a wired network + if it fails, but if it keeps failing the wired network has more problems than + just NetworkManager. + + * src/backends/NetworkManagerRedHat.c + - (nm_system_update_dns): fix to actually run nscd -i hosts when nscd + is already running + + * named/nm-named-manager.c + - (rewrite_resolv_conf): Call nm_system_update_dns() when not using + named so that the distro can flush whatever name service caching + daemon it uses + 2005-02-21 Dan Williams * src/NetworkManagerDHCP.[ch] diff --git a/named/nm-named-manager.c b/named/nm-named-manager.c index be8e76b0f..cf4cf7efc 100644 --- a/named/nm-named-manager.c +++ b/named/nm-named-manager.c @@ -45,6 +45,9 @@ #define RESOLV_CONF "/etc/resolv.conf" #endif +/* From NetworkManagerSystem.h/.c */ +void nm_system_update_dns (void); + enum { PROP_0, @@ -640,6 +643,7 @@ rewrite_resolv_conf (NMNamedManager *mgr, GError **error) if (rename (tmp_resolv_conf, RESOLV_CONF) < 0) goto lose; + nm_system_update_dns (); return TRUE; lose: diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c index ce19c366f..71910fdf6 100644 --- a/src/NetworkManagerPolicy.c +++ b/src/NetworkManagerPolicy.c @@ -282,6 +282,9 @@ gboolean nm_policy_activation_finish (gpointer user_data) } else syslog (LOG_INFO, "Activation (%s) failed.", nm_device_get_iface (dev)); + if (data->active_device == dev) + data->active_device = NULL; + nm_device_deactivate (dev, FALSE); break; case DEVICE_ACTIVATION_CANCELED: diff --git a/src/backends/NetworkManagerRedHat.c b/src/backends/NetworkManagerRedHat.c index f31c1795c..1b9545a03 100644 --- a/src/backends/NetworkManagerRedHat.c +++ b/src/backends/NetworkManagerRedHat.c @@ -283,12 +283,15 @@ void nm_system_kill_all_dhcp_daemons (void) */ void nm_system_update_dns (void) { -#if 0 -/* This doesn't acutally seem to work very well... */ - if(nm_spawn_process ("/etc/init.d/nscd status")) - nm_spawn_process ("nscd -i hosts"); -#endif +#ifdef NM_NO_NAMED + if(nm_spawn_process ("/etc/init.d/nscd status") == 0) + { + syslog (LOG_ERR, "Clearing nscd hosts cache."); + nm_spawn_process ("/usr/sbin/nscd -i hosts"); + } +#else nm_spawn_process ("/usr/bin/killall -q nscd"); +#endif }