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 <russ...@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 <b...@ovn.org>
> 


-- 
Russell Bryant
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to