dict: handle STR_OLD data type in xdr conversions
Currently a dict conversion on wire for 3.x protocol happens using `dict_unserialize()`, which sets the type of data as STR_OLD. But the new protocol doesn't send it over the wire as its not considered as a valid format in new processes. But considering we deal with old and new protocol when we do a rolling upgrade, it will allow us to get all the information properly with new protocol. Credits: Krutika Dhananjay Fixes: bz#1686364 Change-Id: I165c0021fb195b399790b9cf14a7416ae75ec84f Signed-off-by: Amar Tumballi <amarts@redhat.com>
This commit is contained in:
parent
ae24a2c390
commit
9c441360ac
@ -728,6 +728,7 @@ dict_to_xdr(dict_t *this, gfx_dict *dict)
|
||||
break;
|
||||
|
||||
case GF_DATA_TYPE_PTR:
|
||||
case GF_DATA_TYPE_STR_OLD:
|
||||
index++;
|
||||
/* Ideally, each type of data stored in dictionary
|
||||
should have type. A pointer type shouldn't be
|
||||
@ -854,6 +855,7 @@ xdr_to_dict(gfx_dict *dict, dict_t **to)
|
||||
ret = dict_set_iatt(this, key, iatt, false);
|
||||
break;
|
||||
case GF_DATA_TYPE_PTR:
|
||||
case GF_DATA_TYPE_STR_OLD:
|
||||
value = GF_MALLOC(xpair->value.gfx_value_u.other.other_len + 1,
|
||||
gf_common_mt_char);
|
||||
if (!value) {
|
||||
|
@ -60,6 +60,7 @@ union gfx_value switch (gf_dict_data_type_t type) {
|
||||
case GF_DATA_TYPE_GFUUID:
|
||||
opaque uuid[16];
|
||||
case GF_DATA_TYPE_PTR:
|
||||
case GF_DATA_TYPE_STR_OLD:
|
||||
opaque other<>;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user