Check if we are dealing with a Unicode string for Python 2 and we need
to encode it before sending it, just as we do already for Python 3.

Also, do the encoding the same way for Python 2 and 3 and avoid using
negation to make the code simpler.

Signed-off-by: Jakub Sitnicki <[email protected]>
---
 python/ovs/stream.py | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/python/ovs/stream.py b/python/ovs/stream.py
index 7b15bcd7d..0daaf199c 100644
--- a/python/ovs/stream.py
+++ b/python/ovs/stream.py
@@ -383,11 +383,9 @@ class Stream(object):
         elif len(buf) == 0:
             return 0
 
-        # Python 3 has separate types for strings and bytes.  We must have
-        # bytes here.
-        if six.PY3 and not isinstance(buf, bytes):
-            buf = bytes(buf, 'utf-8')
-        elif six.PY2:
+        # We must have bytes for sending.
+        if ((six.PY3 and isinstance(buf, str)) or
+            (six.PY2 and isinstance(buf, unicode))):
             buf = buf.encode('utf-8')
 
         if sys.platform == 'win32' and self.socket is None:
-- 
2.14.3

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to