summaryrefslogtreecommitdiffstats
path: root/api/src/glfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/glfs.c')
-rw-r--r--api/src/glfs.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/api/src/glfs.c b/api/src/glfs.c
index 508191ec8b1..9b47709eea0 100644
--- a/api/src/glfs.c
+++ b/api/src/glfs.c
@@ -607,7 +607,7 @@ get_fop_attr_glfd (dict_t **fop_attr, struct glfs_fd *glfd)
dict_create = _gf_true;
}
GF_CHECK_ALLOC_AND_LOG("gfapi", *fop_attr, ret, "dict_new failed", out);
- ret = dict_set_static_bin (*fop_attr, "lease-id", leaseid, LEASE_ID_SIZE);
+ ret = dict_set_bin (*fop_attr, "lease-id", leaseid, LEASE_ID_SIZE);
out:
if (ret) {
GF_FREE (leaseid);
@@ -637,26 +637,33 @@ set_fop_attr_glfd (struct glfs_fd *glfd)
int
get_fop_attr_thrd_key (dict_t **fop_attr)
{
- char *lease_id = NULL;
+ char *existing_leaseid = NULL, *leaseid = NULL;
int ret = 0;
gf_boolean_t dict_create = _gf_false;
- lease_id = gf_existing_leaseid ();
- if (lease_id) {
+ existing_leaseid = gf_existing_leaseid ();
+ if (existing_leaseid) {
+ leaseid = GF_MALLOC (LEASE_ID_SIZE, gf_common_mt_char);
+ GF_CHECK_ALLOC_AND_LOG("gfapi", leaseid, ret,
+ "lease id alloc failed", out);
+ memcpy (leaseid, existing_leaseid, LEASE_ID_SIZE);
if (*fop_attr == NULL) {
*fop_attr = dict_new ();
dict_create = _gf_true;
}
GF_CHECK_ALLOC_AND_LOG("gfapi", *fop_attr, ret, "dict_new failed", out);
- ret = dict_set_bin (*fop_attr, "lease-id", gf_strdup (lease_id),
+ ret = dict_set_bin (*fop_attr, "lease-id", leaseid,
LEASE_ID_SIZE);
}
out:
- if (ret && dict_create) {
- if (*fop_attr)
- dict_unref (*fop_attr);
- *fop_attr = NULL;
+ if (ret) {
+ GF_FREE (leaseid);
+ if (dict_create) {
+ if (*fop_attr)
+ dict_unref (*fop_attr);
+ *fop_attr = NULL;
+ }
}
return ret;
}