From: Benjamin Marzinski Date: Wed, 10 Oct 2018 18:01:11 +0000 (-0500) Subject: multipathd: set return code for multipathd commands X-Git-Tag: 0.7.9~44 X-Git-Url: https://git.opensvc.com/gitweb.cgi?p=multipath-tools%2F.git;a=commitdiff_plain;h=55a2fbc730c772525a66cf2eda9c41e4e27e09c9 multipathd: set return code for multipathd commands Failed multipathd commands should set the return code to 1. Signed-off-by: Benjamin Marzinski --- diff --git a/multipathd/main.c b/multipathd/main.c index d3f77190..2d45d989 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -2966,9 +2966,9 @@ main (int argc, char *argv[]) if (verbosity) conf->verbosity = verbosity; uxsock_timeout = conf->uxsock_timeout; - uxclnt(optarg, uxsock_timeout + 100); + err = uxclnt(optarg, uxsock_timeout + 100); free_config(conf); - exit(0); + return err; case 'B': bindings_read_only = 1; break; @@ -3005,9 +3005,9 @@ main (int argc, char *argv[]) optind++; } c += snprintf(c, s + CMDSIZE - c, "\n"); - uxclnt(s, uxsock_timeout + 100); + err = uxclnt(s, uxsock_timeout + 100); free_config(conf); - exit(0); + return err; } if (foreground) { diff --git a/multipathd/uxclnt.c b/multipathd/uxclnt.c index 08db0e88..a76f8e29 100644 --- a/multipathd/uxclnt.c +++ b/multipathd/uxclnt.c @@ -103,14 +103,14 @@ static void process(int fd, unsigned int timeout) } } -static void process_req(int fd, char * inbuf, unsigned int timeout) +static int process_req(int fd, char * inbuf, unsigned int timeout) { char *reply; int ret; if (send_packet(fd, inbuf) != 0) { printf("cannot send packet\n"); - return; + return 1; } ret = recv_packet(fd, &reply, timeout); if (ret < 0) { @@ -118,9 +118,12 @@ static void process_req(int fd, char * inbuf, unsigned int timeout) printf("timeout receiving packet\n"); else printf("error %d receiving packet\n", ret); + return 1; } else { printf("%s", reply); + ret = (strcmp(reply, "fail\n") == 0); FREE(reply); + return ret; } } @@ -129,16 +132,16 @@ static void process_req(int fd, char * inbuf, unsigned int timeout) */ int uxclnt(char * inbuf, unsigned int timeout) { - int fd; + int fd, ret = 0; fd = mpath_connect(); if (fd == -1) exit(1); if (inbuf) - process_req(fd, inbuf, timeout); + ret = process_req(fd, inbuf, timeout); else process(fd, timeout); mpath_disconnect(fd); - return 0; + return ret; }