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 <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> >> > >
Thanks for the reviews! I pushed this series to master. -- Russell Bryant _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev