diff options
author | Avra Sengupta <asengupt@redhat.com> | 2013-09-10 15:14:52 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-09-21 23:13:57 -0700 |
commit | 4152ef34ec08e09e885334955afe3ec88e798eb5 (patch) | |
tree | 4b96fcaccb9194a5012564269a6ec33ac0fef619 | |
parent | 7f608415063f04a1035bfe7d0f8ddfb9f0215e5c (diff) |
glusterd/cli: Status detail cli parse check and vol geo status crash fix
Change-Id: I1841864273fc4242de15fbfcf76fd5de40269f28
BUG: 1006249
Signed-off-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-on: http://review.gluster.org/5889
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
-rw-r--r-- | cli/src/cli-cmd-parser.c | 7 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-geo-rep.c | 19 |
2 files changed, 19 insertions, 7 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index 547f1d90f01..33a6c0104b0 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -1810,6 +1810,13 @@ cli_cmd_gsync_set_parse (const char **words, int wordcount, dict_t **options) if (slavei == 3) masteri = 2; } else if (i <= 3) { + if (!strcmp ((char *)words[wordcount-1], "detail")) { + /* For status detail it is mandatory to provide + * both master and slave */ + ret = -1; + goto out; + } + /* no $s, can only be status cmd * (with either a single $m before it or nothing) * -- these conditions imply that i <= 3 after diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c index 4d206eb38b0..8bdb9457462 100644 --- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c +++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c @@ -928,7 +928,7 @@ _get_status_mst_slv (dict_t *this, char *key, data_t *value, void *data) char *slave_buf = NULL; char *slave_ip = NULL; char *slave_vol = NULL; - char **errmsg = NULL; + char *errmsg = NULL; char conf_path[PATH_MAX] = ""; int ret = -1; glusterd_conf_t *priv = NULL; @@ -950,10 +950,14 @@ _get_status_mst_slv (dict_t *this, char *key, data_t *value, void *data) return 0; slave++; - ret = glusterd_get_slave_info (slave, &slave_ip, &slave_vol, errmsg); + ret = glusterd_get_slave_info (slave, &slave_ip, &slave_vol, &errmsg); if (ret) { - gf_log ("", GF_LOG_ERROR, - "Unable to fetch slave details."); + if (errmsg) + gf_log ("", GF_LOG_ERROR, "Unable to fetch " + "slave details. Error: %s", errmsg); + else + gf_log ("", GF_LOG_ERROR, + "Unable to fetch slave details."); ret = -1; goto out; } @@ -1767,7 +1771,6 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr) GF_ASSERT (slave_ip); GF_ASSERT (*slave_ip); - GF_ASSERT (op_errstr); /* Checking if hostname has user specified */ host = strstr (*slave_ip, "@"); @@ -1786,7 +1789,8 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr) errmsg[ret] = '\0'; gf_log ("", GF_LOG_ERROR, "%s", errmsg); ret = -1; - *op_errstr = gf_strdup (errmsg); + if (op_errstr) + *op_errstr = gf_strdup (errmsg); goto out; } @@ -1799,7 +1803,8 @@ glusterd_mountbroker_check (char **slave_ip, char **op_errstr) "Non-root username (%s@%s) not allowed.", username, tmp); errmsg[ret] = '\0'; - *op_errstr = gf_strdup (errmsg); + if (op_errstr) + *op_errstr = gf_strdup (errmsg); gf_log ("", GF_LOG_ERROR, "Non-Root username not allowed."); ret = -1; |