When a system already has hostname set to the configured value
don't try to set it again. This will prevent an error being reported when
running inside an unprivileged container, i.e. in an environment where we
don't have CAP_SYS_ADMIN capability and therefore the container manager is
responsible for setting hostname for us.
---
 src/core/hostname-setup.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c
index 8aa1cff..1df7a56 100644
--- a/src/core/hostname-setup.c
+++ b/src/core/hostname-setup.c
@@ -80,6 +80,15 @@ int hostname_setup(void) {
                         log_info("No hostname configured.");
 
                 hn = "localhost";
+        } else {
+                char old_hn[HOST_NAME_MAX + 1] = {};
+
+                r = gethostname(old_hn, sizeof(old_hn));
+                if (!r) {
+                        if (streq(hn, old_hn))
+                                return 0;
+                } else
+                        log_warning("Failed to get hostname: %m");
         }
 
         if (sethostname(hn, strlen(hn)) < 0) {
-- 
2.0.1

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to