diff options
Diffstat (limited to 'debian/patches/03-hostname-fallback.patch')
| -rw-r--r-- | debian/patches/03-hostname-fallback.patch | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/debian/patches/03-hostname-fallback.patch b/debian/patches/03-hostname-fallback.patch deleted file mode 100644 index 40136ba5..00000000 --- a/debian/patches/03-hostname-fallback.patch +++ /dev/null @@ -1,207 +0,0 @@ -commit 395a0abd2f8a3a65b2e4a0664ccf48078d07346f -Author: Dan Williams <dcbw@redhat.com> -Date: Wed Jan 27 17:13:35 2010 -0800 - - policy: fall back to original hostname before trying reverse DNS - - Having the original hostname checks in the settings-service code - didn't allow the policy enough granularity to differentiate between - a plugin-provided hostname and the original hostname. We want to - fall back to the original hostname if there isn't a persistent - hostname (from a plugin) and if there isn't a DHCP-provided - hostname. Moving the original hostname checks to the policy - makes that possible. Clarify the precedence order at the same - time, and minimally validate the DHCP hostname as well. - - trivial: clearer hostname fallback message - -diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c -index 5c5ae40..7034520 100644 ---- a/src/NetworkManagerPolicy.c -+++ b/src/NetworkManagerPolicy.c -@@ -74,6 +74,8 @@ struct NMPolicy { - NMDevice *default_device; - - LookupThread *lookup; -+ -+ char *orig_hostname; /* hostname at NM start time */ - }; - - static gboolean -@@ -416,15 +418,16 @@ update_system_hostname (NMPolicy *policy, NMDevice *best) - policy->lookup = NULL; - } - -- /* A configured hostname (via the system-settings service) overrides -- * all automatic hostname determination. If there is no configured hostname, -- * the best device's automatically determined hostname (from DHCP, VPN, PPP, -- * etc) is used. If there is no automatically determined hostname, reverse -- * DNS lookup using the best device's IP address is started to determined the -- * the hostname. -+ /* Hostname precedence order: -+ * -+ * 1) a configured hostname (from system-settings) -+ * 2) automatic hostname from the default device's config (DHCP, VPN, etc) -+ * 3) the original hostname when NM started -+ * 4) reverse-DNS of the best device's IPv4 address -+ * - */ - -- /* Try a configured hostname first */ -+ /* Try a persistent hostname first */ - g_object_get (G_OBJECT (policy->manager), NM_MANAGER_HOSTNAME, &configured_hostname, NULL); - if (configured_hostname) { - set_system_hostname (configured_hostname, "from system configuration"); -@@ -437,25 +440,42 @@ update_system_hostname (NMPolicy *policy, NMDevice *best) - best = get_best_device (policy->manager, &best_req); - - if (!best) { -- /* No best device; fall back to localhost.localdomain */ -- set_system_hostname (NULL, "no default device"); -+ /* No best device; fall back to original hostname or if there wasn't -+ * one, 'localhost.localdomain' -+ */ -+ set_system_hostname (policy->orig_hostname, "no default device"); - return; - } - - /* Grab a hostname out of the device's DHCP4 config */ - dhcp4_config = nm_device_get_dhcp4_config (best); - if (dhcp4_config) { -- const char *dhcp4_hostname; -+ const char *dhcp4_hostname, *p; - -- dhcp4_hostname = nm_dhcp4_config_get_option (dhcp4_config, "host_name"); -+ p = dhcp4_hostname = nm_dhcp4_config_get_option (dhcp4_config, "host_name"); - if (dhcp4_hostname && strlen (dhcp4_hostname)) { -- set_system_hostname (dhcp4_hostname, "from DHCP"); -- return; -+ /* Sanity check */ -+ while (*p) { -+ if (!isblank (*p++)) { -+ set_system_hostname (dhcp4_hostname, "from DHCP"); -+ return; -+ } -+ } -+ nm_warning ("%s: DHCP-provided hostname '%s' looks invalid; ignoring it", -+ __func__, dhcp4_hostname); - } - } - -- /* No configured hostname, no automatically determined hostname either. Start -- * reverse DNS of the current IP address to try and find it. -+ /* If no automatically-configured hostname, try using the hostname from -+ * when NM started up. -+ */ -+ if (policy->orig_hostname) { -+ set_system_hostname (policy->orig_hostname, "from system startup"); -+ return; -+ } -+ -+ /* No configured hostname, no automatically determined hostname, and -+ * no bootup hostname. Start reverse DNS of the current IP address. - */ - ip4_config = nm_device_get_ip4_config (best); - if ( !ip4_config -@@ -988,6 +1008,7 @@ nm_policy_new (NMManager *manager, NMVPNManager *vpn_manager) - NMPolicy *policy; - static gboolean initialized = FALSE; - gulong id; -+ char hostname[HOST_NAME_MAX + 2]; - - g_return_val_if_fail (NM_IS_MANAGER (manager), NULL); - g_return_val_if_fail (initialized == FALSE, NULL); -@@ -996,6 +1017,14 @@ nm_policy_new (NMManager *manager, NMVPNManager *vpn_manager) - policy->manager = g_object_ref (manager); - policy->update_state_id = 0; - -+ /* Grab hostname on startup and use that if nothing provides one */ -+ memset (hostname, 0, sizeof (hostname)); -+ if (gethostname (&hostname[0], HOST_NAME_MAX) == 0) { -+ /* only cache it if it's a valid hostname */ -+ if (strlen (hostname) && strcmp (hostname, "localhost") && strcmp (hostname, "localhost.localdomain")) -+ policy->orig_hostname = g_strdup (hostname); -+ } -+ - policy->vpn_manager = g_object_ref (vpn_manager); - id = g_signal_connect (policy->vpn_manager, "connection-activated", - G_CALLBACK (vpn_connection_activated), policy); -@@ -1086,6 +1115,8 @@ nm_policy_destroy (NMPolicy *policy) - } - g_slist_free (policy->dev_signal_ids); - -+ g_free (policy->orig_hostname); -+ - g_object_unref (policy->manager); - g_free (policy); - } -diff --git a/src/system-settings/nm-sysconfig-settings.c b/src/system-settings/nm-sysconfig-settings.c -index 7580319..0498fe7 100644 ---- a/src/system-settings/nm-sysconfig-settings.c -+++ b/src/system-settings/nm-sysconfig-settings.c -@@ -90,7 +90,6 @@ typedef struct { - gboolean connections_loaded; - GHashTable *connections; - GSList *unmanaged_specs; -- char *orig_hostname; - } NMSysconfigSettingsPrivate; - - static void settings_system_interface_init (NMSettingsSystemInterface *klass); -@@ -254,7 +253,6 @@ nm_sysconfig_settings_get_hostname (NMSysconfigSettings *self) - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); - GSList *iter; - char *hostname = NULL; -- gboolean have_hostname_providers = FALSE; - - /* Hostname returned is the hostname returned from the first plugin - * that provides one. -@@ -264,8 +262,6 @@ nm_sysconfig_settings_get_hostname (NMSysconfigSettings *self) - - g_object_get (G_OBJECT (iter->data), NM_SYSTEM_CONFIG_INTERFACE_CAPABILITIES, &caps, NULL); - if (caps & NM_SYSTEM_CONFIG_INTERFACE_CAP_MODIFY_HOSTNAME) { -- have_hostname_providers = TRUE; -- - g_object_get (G_OBJECT (iter->data), NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME, &hostname, NULL); - if (hostname && strlen (hostname)) - return hostname; -@@ -273,10 +269,6 @@ nm_sysconfig_settings_get_hostname (NMSysconfigSettings *self) - } - } - -- /* If no plugin provided a hostname, try the original hostname of the machine */ -- if (!have_hostname_providers && priv->orig_hostname) -- hostname = g_strdup (priv->orig_hostname); -- - return hostname; - } - -@@ -1378,7 +1370,6 @@ finalize (GObject *object) - g_slist_foreach (priv->plugins, (GFunc) g_object_unref, NULL); - g_slist_free (priv->plugins); - -- g_free (priv->orig_hostname); - g_free (priv->config_file); - - G_OBJECT_CLASS (nm_sysconfig_settings_parent_class)->finalize (object); -@@ -1476,7 +1467,6 @@ static void - nm_sysconfig_settings_init (NMSysconfigSettings *self) - { - NMSysconfigSettingsPrivate *priv = NM_SYSCONFIG_SETTINGS_GET_PRIVATE (self); -- char hostname[HOST_NAME_MAX + 2]; - - priv->connections = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, NULL); - -@@ -1488,13 +1478,5 @@ nm_sysconfig_settings_init (NMSysconfigSettings *self) - self); - } else - g_warning ("%s: failed to create PolicyKit authority.", __func__); -- -- /* Grab hostname on startup and use that if no plugins provide one */ -- memset (hostname, 0, sizeof (hostname)); -- if (gethostname (&hostname[0], HOST_NAME_MAX) == 0) { -- /* only cache it if it's a valid hostname */ -- if (strlen (hostname) && strcmp (hostname, "localhost") && strcmp (hostname, "localhost.localdomain")) -- priv->orig_hostname = g_strdup (hostname); -- } - } - |