[ovs-dev] [PATCH 11/11] python: Deal with str and byte differences.
Russell Bryant
russell at ovn.org
Tue Feb 2 22:04:19 UTC 2016
On 02/02/2016 04:34 PM, Russell Bryant wrote:
> On 02/02/2016 04:24 PM, Ben Pfaff wrote:
>> On Fri, Jan 22, 2016 at 09:32:33PM -0500, Russell Bryant wrote:
>>> Python 3 has separate types for strings and bytes. Python 2 used the
>>> same type for both. We need to convert strings to bytes before writing
>>> them out to a socket. We also need to convert data read from the socket
>>> to a string.
>>>
>>> Signed-off-by: Russell Bryant <russell at ovn.org>
>>> ---
>>> python/ovs/jsonrpc.py | 10 ++++++++++
>>> python/ovs/socket_util.py | 3 +++
>>> python/ovs/stream.py | 6 ++++++
>>> 3 files changed, 19 insertions(+)
>>>
>>> diff --git a/python/ovs/jsonrpc.py b/python/ovs/jsonrpc.py
>>> index efe0f6c..5177980 100644
>>> --- a/python/ovs/jsonrpc.py
>>> +++ b/python/ovs/jsonrpc.py
>>> @@ -264,6 +264,16 @@ class Connection(object):
>>> while True:
>>> if not self.input:
>>> error, data = self.stream.recv(4096)
>>> + # Python 3 has separate types for strings and bytes. We
>>> + # received bytes from a socket. We expect it to be string
>>> + # data, so we convert it here as soon as possible.
>>> + if (data and not error
>>> + and not isinstance(data, six.string_types)):
>>> + try:
>>> + data = data.decode('utf-8')
>>> + except UnicodeError:
>>> + # XXX Illegal byte sequence. Is there a better errno?
>>> + error = errno.EILSEQ
>>
>> Isn't EILSEQ perfect for this?
>
> That was my best guess. Thanks for ACKing the choice. I'll remove the
> comment. :-)
>
>> Acked-by: Ben Pfaff <blp at ovn.org>
>>
>
>
Thanks for the reviews! I pushed this series to master.
--
Russell Bryant
More information about the dev
mailing list