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? Acked-by: Ben Pfaff <b...@ovn.org> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev