From 3a71a1804a42875ed70e4bc8528c5df30c65cc29 Mon Sep 17 00:00:00 2001 From: Marek Vavrusa <marek.vavrusa@nic.cz> Date: Mon, 15 Jul 2013 11:38:45 +0200 Subject: [PATCH] knotc checks for AF_UNIX: contains slash or is valid socket Treated as hostname otherwise. --- src/knot/ctl/knotc_main.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/knot/ctl/knotc_main.c b/src/knot/ctl/knotc_main.c index 3967a9525..e2c42a1b1 100644 --- a/src/knot/ctl/knotc_main.c +++ b/src/knot/ctl/knotc_main.c @@ -544,18 +544,15 @@ int main(int argc, char **argv) if (strchr(r_addr, ':')) ctl_if->family = AF_INET6; - /* Check if address could be a UNIX socket. */ - if (strchr(r_addr, '/')) { - /* Check if file is really a socket. */ - struct stat st; - if (stat(r_addr, &st) == 0 && !S_ISSOCK(st.st_mode)) { - log_server_warning("Address '%s' is not a " - "UNIX socket.\n", r_addr); - } - + /* Is a valid UNIX socket or at least contains slash ? */ + struct stat st; + bool has_slash = strchr(r_addr, '/') != NULL; + bool is_file = stat(r_addr, &st) == 0; + if (has_slash || (is_file && S_ISSOCK(st.st_mode))) { ctl_if->family = AF_UNIX; r_port = 0; /* Override. */ } + } if (r_port > -1) ctl_if->port = r_port; -- GitLab