Author loewis
Recipients arjennienhuis, benjamin.peterson, eric.smith, loewis, vstinner
Date 2009-07-11.15:52:16
SpamBayes Score 8.68947e-07
Marked as misclassified No
Message-id <4A58B52E.9050302@v.loewis.de>
In-reply-to <1247320480.38.0.277534478263.issue3982@psf.upfronthosting.co.za>
Content
> 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.
History
Date User Action Args
2009-07-11 15:52:17loewissetrecipients: + loewis, vstinner, eric.smith, benjamin.peterson, arjennienhuis
2009-07-11 15:52:16loewislinkissue3982 messages
2009-07-11 15:52:16loewiscreate