Make compatible with msgpack 1.0.0
There are a couple of things that changed in msgpack 1.0.0 that were breaking oslo.privsep: 1) The encoding parameter to Unpacker was removed. This has been deprecated for a while in favor of the `raw` parameter[0], so this change switches to using raw. 2) The strict_map_key parameter default was changed from False to True.[1] I haven't found an explanation of why this was done, but we can explicitly set it False to maintain the previous behavior. Closes-Bug: 1855914 Closes-Bug: 1864811 0: https://msgpack-python.readthedocs.io/en/latest/api.html#msgpack.Unpacker 1:6e1d12c0a2
Change-Id: Ia97ecf965d807f12524d5b6602446934b5813ce6 Closes-Bug: 1899140 (cherry picked from commitf19765c683
)
This commit is contained in:
parent
00e69d4f32
commit
ced0e7b33b
|
@ -65,8 +65,22 @@ class Serializer(object):
|
|||
class Deserializer(six.Iterator):
|
||||
def __init__(self, readsock):
|
||||
self.readsock = readsock
|
||||
self.unpacker = msgpack.Unpacker(use_list=False, encoding='utf-8',
|
||||
unicode_errors='surrogateescape')
|
||||
# (hberaud): Sometime msgpack's versions are not properly aligned with
|
||||
# constraints and we need to stay compat with the available version.
|
||||
# By example 1.0.0 dropped the encoding param but previous
|
||||
# version doesn't define the raw params too.
|
||||
# So here we use the right signature which fit our needs.
|
||||
try:
|
||||
self.unpacker = msgpack.Unpacker(
|
||||
use_list=False,
|
||||
encoding='utf-8',
|
||||
unicode_errors='surrogateescape')
|
||||
except TypeError:
|
||||
self.unpacker = msgpack.Unpacker(
|
||||
use_list=False,
|
||||
raw=False,
|
||||
strict_map_key=False,
|
||||
unicode_errors='surrogateescape')
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
|
Loading…
Reference in New Issue