Make sure we are using the length of the encoded string in the protocol
authorJack Miller <jack@codezen.org>
Tue, 23 Jun 2015 17:17:43 +0000 (12:17 -0500)
committerJack Miller <jack@codezen.org>
Tue, 23 Jun 2015 17:17:43 +0000 (12:17 -0500)
Length of the unicode string doesn't necessarily equal the length of the
encoded string of bytes. Since we're using the len of the bytes on
receive, make sure we're giving it the len of the bytes on write as
well.

canto_next/protocol.py

index d212726..d1f4d25 100644 (file)
@@ -273,9 +273,9 @@ class CantoSocket:
     def _do_write(self, conn, cmd, args):
         log.debug("\n\nWrite:\n%s\n", json.dumps((cmd, args), indent=4, sort_keys=True))
 
-        message = json.dumps((cmd, args))
+        message = json.dumps((cmd, args)).encode("UTF-8")
         size = struct.pack("!q", len(message))
-        message = size + message.encode("UTF-8")
+        message = size + message
 
         poll = select.poll()
         tosend = message