diff options
| author | Pranith Kumar K <pranithk@gluster.com> | 2012-03-16 11:35:36 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-03-17 23:24:21 -0700 | 
| commit | 178652106c5d731b24ddc9bb9bc1d8aae3952e2d (patch) | |
| tree | f13fd78316ef9685fd7e2fcf8adc4b2a33c26e60 /glusterfsd/src | |
| parent | 6aab9d9602dc1ef62a2d1d63aa1764a062bf9d9f (diff) | |
glusterfsd: Handle errors in response send
Change-Id: I2d0a136fdfc4c86fb89cff5565efbf4af80e1edf
BUG: 799265
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.com/2961
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'glusterfsd/src')
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 37 | 
1 files changed, 20 insertions, 17 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index e45297d50..3b419262a 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -235,23 +235,28 @@ glusterfs_translator_info_response_send (rpcsvc_request_t *req, int ret,                                           char *msg, dict_t *output)  {          gd1_mgmt_brick_op_rsp    rsp = {0,}; -        GF_ASSERT (msg); +        gf_boolean_t             free_ptr = _gf_false;          GF_ASSERT (req); -        GF_ASSERT (output);          rsp.op_ret = ret;          rsp.op_errno = 0; -        if (ret && msg[0]) +        if (ret && msg && msg[0])                  rsp.op_errstr = msg;          else                  rsp.op_errstr = ""; -        ret = dict_allocate_and_serialize (output, &rsp.output.output_val, -                                        (size_t *)&rsp.output.output_len); +        ret = -1; +        if (output) { +                ret = dict_allocate_and_serialize (output, +                                                   &rsp.output.output_val, +                                              (size_t *)&rsp.output.output_len); +        } +        if (!ret) +                free_ptr = _gf_true;          ret = glusterfs_submit_reply (req, &rsp, NULL, 0, NULL,                                       (xdrproc_t)xdr_gd1_mgmt_brick_op_rsp); -        if (rsp.output.output_val) +        if (free_ptr)                  GF_FREE (rsp.output.output_val);          return ret;  } @@ -323,30 +328,28 @@ glusterfs_xlator_op_response_send (rpcsvc_request_t *req, int op_ret,  {          gd1_mgmt_brick_op_rsp    rsp = {0,};          int                      ret = -1; -        GF_ASSERT (msg); +        gf_boolean_t             free_ptr = _gf_false;          GF_ASSERT (req); -        GF_ASSERT (output);          rsp.op_ret = op_ret;          rsp.op_errno = 0; -        if (ret && msg[0]) +        if (op_ret && msg && msg[0])                  rsp.op_errstr = msg;          else                  rsp.op_errstr = ""; -        ret = dict_allocate_and_serialize (output, &rsp.output.output_val, -                                        (size_t *)&rsp.output.output_len); -        if (ret) { -                gf_log (THIS->name, GF_LOG_ERROR, "Couldn't serialize " -                        "output dict."); -                goto out; +        if (output) { +                ret = dict_allocate_and_serialize (output, +                                                   &rsp.output.output_val, +                                              (size_t *)&rsp.output.output_len);          } +        if (!ret) +                free_ptr = _gf_true;          ret = glusterfs_submit_reply (req, &rsp, NULL, 0, NULL,                                       (xdrproc_t)xdr_gd1_mgmt_brick_op_rsp); -out: -        if (rsp.output.output_val) +        if (free_ptr)                  GF_FREE (rsp.output.output_val);          return ret;  | 
