At Thu, 24 Jul 2014 17:25:25 +0800, Ruoyu wrote: > > This patch fix some problems as below. > > 1. memory leak in error cases > 2. when error occured, exit is tough, just return -1 is better > 3. incorrect error message > > Signed-off-by: Ruoyu <lian...@ucweb.com> > --- > sheep/cluster/shepherd.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-)
Applied, thanks. Hitoshi > > diff --git a/sheep/cluster/shepherd.c b/sheep/cluster/shepherd.c > index 9453ff8..45a85c1 100644 > --- a/sheep/cluster/shepherd.c > +++ b/sheep/cluster/shepherd.c > @@ -467,25 +467,25 @@ static void shepherd_comm_handler(int fd, int events, > void *data) > > static int shepherd_init(const char *option) > { > - int ret, port; > + int ret = -1, port; > char *copied, *s_addr, *s_port, *saveptr; > > if (!option) { > sd_err("shepherd cluster driver requires at least IP" > " address of shepherd as an option"); > - exit(1); > + return ret; > } > > copied = strdup(option); > if (!copied) { > sd_err("strdup() failed: %m"); > - exit(1); > + return ret; > } > > s_addr = strtok_r(copied, ":", &saveptr); > if (!s_addr) { > - sd_err("strdup() failed: %m"); > - exit(1); > + sd_err("strtok_r() failed: %m"); > + goto out; > } > > s_port = strtok_r(NULL, ":", &saveptr); > @@ -495,7 +495,7 @@ static int shepherd_init(const char *option) > > if (*p != '\0') { > sd_err("invalid option for host and port: %s", option); > - exit(1); > + goto out; > } > } else > port = SHEPHERD_PORT; > @@ -504,19 +504,20 @@ static int shepherd_init(const char *option) > if (sph_comm_fd == -1) { > sd_err("cannot connect to shepherd," > " is shepherd running? errno: %m"); > - return -1; > + goto out; > } > > sph_event_fd = eventfd(0, EFD_NONBLOCK); > ret = register_event(sph_event_fd, sph_event_handler, NULL); > if (ret) { > sd_err("register_event() failed: %m"); > - exit(1); > + goto out; > } > > + ret = 0; > +out: > free(copied); > - > - return 0; > + return ret; > } > > static int shepherd_join(const struct sd_node *myself, > -- > 1.8.3.2 > > > -- > sheepdog mailing list > sheepdog@lists.wpkg.org > http://lists.wpkg.org/mailman/listinfo/sheepdog -- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog