Martin v. Löwis <mar...@v.loewis.de> added the comment: > def chunk(block): > return format(len(block), 'x').encode('ascii') + b'\r\n' + block + > b'\r\n' > > You cannot convert to ascii at the end of the pipeline as there are > bytes > 127 in the data blocks.
I wouldn't write it in such a complicated way. Instead, use def chunk(block): return hex(len(block)).encode('ascii') + b'\r\n' + block + b'\r\n' This doesn't need any format call, and describes adequatly how the protocol works: send an ASCII-encoded hex length, send CRLF, send the block, then send another CRLF. Of course, I would probably write that into the socket right away, rather than copying it into a different bytes object first. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue3982> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com