Blob Blame History Raw
---
 multipathd/main.c   |    6 ++----
 multipathd/uxclnt.c |   22 +++++++++++++---------
 2 files changed, 15 insertions(+), 13 deletions(-)

Index: multipath-tools-130222/multipathd/main.c
===================================================================
--- multipath-tools-130222.orig/multipathd/main.c
+++ multipath-tools-130222/multipathd/main.c
@@ -2234,8 +2234,7 @@ main (int argc, char *argv[])
 			conf->verbosity = atoi(optarg);
 			break;
 		case 'k':
-			uxclnt(optarg);
-			exit(0);
+			return(uxclnt(optarg));
 		case 'B':
 			conf->bindings_read_only = 1;
 			break;
@@ -2256,8 +2255,7 @@ main (int argc, char *argv[])
 			optind++;
 		}
 		c += snprintf(c, s + CMDSIZE - c, "\n");
-		uxclnt(s);
-		exit(0);
+		return(uxclnt(s));
 	}
 
 	if (!logsink)
Index: multipath-tools-130222/multipathd/uxclnt.c
===================================================================
--- multipath-tools-130222.orig/multipathd/uxclnt.c
+++ multipath-tools-130222/multipathd/uxclnt.c
@@ -74,20 +74,24 @@ static void process(int fd)
 	}
 }
 
-static void process_req(int fd, char * inbuf)
+static int process_req(int fd, char * inbuf)
 {
 	char *reply;
+	int ret;
 
 	if (send_packet(fd, inbuf) != 0) {
 		printf("cannot send packet\n");
-		return;
+		return 1;
 	}
-	if (recv_packet(fd, &reply) != 0)
+	if (recv_packet(fd, &reply) != 0) {
 		printf("error receiving packet\n");
-	else {
-		printf("%s", reply);
-		FREE(reply);
+		return 1;
 	}
+	printf("%s", reply);
+	ret = (strcmp(reply, "fail\n") == 0);
+	FREE(reply);
+	/* Need to do better about getting return value */
+	return ret;
 }
 
 /*
@@ -95,7 +99,7 @@ static void process_req(int fd, char * i
  */
 int uxclnt(char * inbuf)
 {
-	int fd;
+	int fd, ret = 0;
 
 	fd = mpath_connect();
 	if (fd == -1) {
@@ -104,9 +108,9 @@ int uxclnt(char * inbuf)
 	}
 
 	if (inbuf)
-		process_req(fd, inbuf);
+		ret = process_req(fd, inbuf);
 	else
 		process(fd);
 
-	return 0;
+	return ret;
 }