brettviren/zio

Encoding bug on Python side

Closed this issue · 7 comments

Haiwang found the Python and C++ sides were using different byte order for storing the message part size. We keep C++ as is since this encoding is what's soon (hopefully) to be merged into cppzmq.

This is fixed in 17a9bec

$ ./test/check_codec.sh

tests all possible mix of C++ and Python for client and server.

Reopen as there is some consolidation needed. Adding domo duplicated encode/decode Python-side code which is still broken.

Is the python encode/decode still different from cpp?

For right now, effectively "yes". And, I'm working on it.

Besides different code paths (flow vs domo) between zio::Message and send()/recv() leading to different enc/dec there are also some differences/bugs in how multipart messages are handled with the ROUTER/DEALER pair.

Nothing really big, just some clean up and factoring to do. Hopeully it will be cleaned up later today.

I see, thanks!

This test:

$ ./test/check_codec.sh

now exercises all valid combo of C++/Python, ROUTER/SERVER and DEALER/CLIENT.

Thanks for this update. The order issue was fixed for me.
One small thing: import sys needed for this
https://github.com/brettviren/zio/blob/master/python/zio/util.py#L197

Thanks. The import sys is added in 9e1e9ef