Blame SOURCES/0006-client-try-run-and-var-run-for-the-socket-path.patch

4bf471
From c662ad097eaa0d8c3691a22254f5d0e9622b26b7 Mon Sep 17 00:00:00 2001
4bf471
From: Peter Jones <pjones@redhat.com>
4bf471
Date: Mon, 6 Jul 2020 16:13:09 -0400
4bf471
Subject: [PATCH 6/7] client: try /run and /var/run for the socket path.
4bf471
4bf471
Signed-off-by: Peter Jones <pjones@redhat.com>
4bf471
---
4bf471
 src/client.c | 40 +++++++++++++++++++++++++++++-----------
4bf471
 1 file changed, 29 insertions(+), 11 deletions(-)
4bf471
4bf471
diff --git a/src/client.c b/src/client.c
4bf471
index 2119ef33bf8..a38383415d5 100644
4bf471
--- a/src/client.c
4bf471
+++ b/src/client.c
4bf471
@@ -49,24 +49,24 @@ print_flag_name(FILE *f, int flag)
4bf471
 }
4bf471
 
4bf471
 static int
4bf471
-connect_to_server(void)
4bf471
+connect_to_server_helper(const char * const sockpath)
4bf471
 {
4bf471
-	int rc = access(SOCKPATH, R_OK);
4bf471
+	int rc = access(sockpath, R_OK);
4bf471
 	if (rc != 0) {
4bf471
-		fprintf(stderr, "pesign-client: could not connect to server: "
4bf471
-			"%m\n");
4bf471
-		exit(1);
4bf471
+		warn("could not access socket \"%s\"", sockpath);
4bf471
+		return rc;
4bf471
 	}
4bf471
 
4bf471
 	struct sockaddr_un addr_un = {
4bf471
 		.sun_family = AF_UNIX,
4bf471
-		.sun_path = SOCKPATH,
4bf471
 	};
4bf471
+	strncpy(addr_un.sun_path, sockpath, sizeof(addr_un.sun_path));
4bf471
+	addr_un.sun_path[sizeof(addr_un.sun_path)-1] = '\0';
4bf471
 
4bf471
 	int sd = socket(AF_UNIX, SOCK_STREAM, 0);
4bf471
 	if (sd < 0) {
4bf471
-		fprintf(stderr, "pesign-client: could not open socket: %m\n");
4bf471
-		exit(1);
4bf471
+		warn("could not open socket \"%s\"", sockpath);
4bf471
+		return sd;
4bf471
 	}
4bf471
 
4bf471
 	socklen_t len = strlen(addr_un.sun_path) +
4bf471
@@ -74,14 +74,32 @@ connect_to_server(void)
4bf471
 
4bf471
 	rc = connect(sd, (struct sockaddr *)&addr_un, len);
4bf471
 	if (rc < 0) {
4bf471
-		fprintf(stderr, "pesign-client: could not connect to daemon: "
4bf471
-			"%m\n");
4bf471
-		exit(1);
4bf471
+		warn("could not connect to daemon");
4bf471
+		return sd;
4bf471
 	}
4bf471
 
4bf471
 	return sd;
4bf471
 }
4bf471
 
4bf471
+static int
4bf471
+connect_to_server(void)
4bf471
+{
4bf471
+	int rc, i;
4bf471
+	const char * const sockets[] = {
4bf471
+		"/run/pesign/socket",
4bf471
+		"/var/run/pesign/socket",
4bf471
+		NULL
4bf471
+	};
4bf471
+
4bf471
+	for (i = 0; sockets[i] != NULL; i++) {
4bf471
+		rc = connect_to_server_helper(sockets[i]);
4bf471
+		if (rc >= 0)
4bf471
+			return rc;
4bf471
+	}
4bf471
+
4bf471
+	exit(1);
4bf471
+}
4bf471
+
4bf471
 static int32_t
4bf471
 check_response(int sd, char **srvmsg);
4bf471
 
4bf471
-- 
4bf471
2.26.2
4bf471