diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2012-10-22 15:30:49 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-02-03 12:35:09 -0800 |
commit | 9708bd1f922ca38973cba65b4890c67c2edc6e2b (patch) | |
tree | 7a8853809eb1244952718a77e9786d3392b7402a /xlators/mgmt/glusterd/src/glusterd-handler.c | |
parent | 6b262d20940b088a1d72ad5518cc4908a7316b5a (diff) |
glusterd: do dict unref after sending reply to cli
This patch channelizes dict unrefs of dictionaries created from the cli
req during volume ops to one common function - glusterd_to_cli() - which
is guaranteed to be called irrespective of whether the command succeeds
or fails.
This patch also removes extra unrefs at a few places.
Change-Id: Ic8ba7166387b5dfd1f5ae860539e1b7093a94662
BUG: 861044
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/4003
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-handler.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 0993d276370..fb94bba8960 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -1130,9 +1130,6 @@ out: glusterd_to_cli (req, &rsp, NULL, 0, NULL, (xdrproc_t)xdr_gf_cli_rsp, dict); - if (dict) - dict_unref (dict); - return ret; } @@ -1261,14 +1258,13 @@ glusterd_handle_reset_volume (rpcsvc_request_t *req) out: glusterd_friend_sm (); glusterd_op_sm (); + if (ret) { if (err_str[0] == '\0') snprintf (err_str, sizeof (err_str), "Operation failed"); ret = glusterd_op_send_cli_response (cli_op, ret, 0, req, dict, err_str); - if (dict) - dict_unref (dict); } return ret; @@ -1460,9 +1456,6 @@ out: snprintf (msg, sizeof (msg), "Operation failed"); glusterd_to_cli (req, &cli_rsp, NULL, 0, NULL, (xdrproc_t)xdr_gf_cli_rsp, dict); - if (dict) - dict_unref (dict); - ret = 0; //sent error to cli, prevent second reply } @@ -2134,14 +2127,13 @@ out: glusterd_op_sm (); free (cli_req.dict.dict_val); + if (ret) { if (err_str[0] == '\0') snprintf (err_str, sizeof (err_str), "Operation failed"); ret = glusterd_op_send_cli_response (cli_op, ret, 0, req, dict, err_str); - if (dict) - dict_unref (dict); } gf_log (this->name, GF_LOG_DEBUG, "Returning %d", ret); @@ -2986,8 +2978,6 @@ out: "Operation failed"); ret = glusterd_op_send_cli_response (cli_op, ret, 0, req, dict, err_str); - if (dict) - dict_unref (dict); } free (cli_req.dict.dict_val); @@ -3060,8 +3050,6 @@ out: "Operation failed"); ret = glusterd_op_send_cli_response (cli_op, ret, 0, req, dict, err_str); - if (dict) - dict_unref (dict); } free (cli_req.dict.dict_val); |