Merge pull request #161 from rafaelfolco/bug/150-websocket-bigendian
BUGFIX: Websocket frame corruption on big-endian #150
This commit is contained in:
commit
ac9d357c87
|
@ -118,20 +118,24 @@ class WebSocketRequestHandler(SimpleHTTPRequestHandler):
|
||||||
if numpy:
|
if numpy:
|
||||||
b = c = s2b('')
|
b = c = s2b('')
|
||||||
if plen >= 4:
|
if plen >= 4:
|
||||||
mask = numpy.frombuffer(buf, dtype=numpy.dtype('<u4'),
|
dtype=numpy.dtype('<u4')
|
||||||
offset=hlen, count=1)
|
if sys.byteorder == 'big':
|
||||||
data = numpy.frombuffer(buf, dtype=numpy.dtype('<u4'),
|
dtype = dtype.newbyteorder('>')
|
||||||
offset=pstart, count=int(plen / 4))
|
mask = numpy.frombuffer(buf, dtype, offset=hlen, count=1)
|
||||||
|
data = numpy.frombuffer(buf, dtype, offset=pstart,
|
||||||
|
count=int(plen / 4))
|
||||||
#b = numpy.bitwise_xor(data, mask).data
|
#b = numpy.bitwise_xor(data, mask).data
|
||||||
b = numpy.bitwise_xor(data, mask).tostring()
|
b = numpy.bitwise_xor(data, mask).tostring()
|
||||||
|
|
||||||
if plen % 4:
|
if plen % 4:
|
||||||
#self.msg("Partial unmask")
|
#self.msg("Partial unmask")
|
||||||
mask = numpy.frombuffer(buf, dtype=numpy.dtype('B'),
|
dtype=numpy.dtype('B')
|
||||||
offset=hlen, count=(plen % 4))
|
if sys.byteorder == 'big':
|
||||||
data = numpy.frombuffer(buf, dtype=numpy.dtype('B'),
|
dtype = dtype.newbyteorder('>')
|
||||||
offset=pend - (plen % 4),
|
mask = numpy.frombuffer(buf, dtype, offset=hlen,
|
||||||
count=(plen % 4))
|
count=(plen % 4))
|
||||||
|
data = numpy.frombuffer(buf, dtype,
|
||||||
|
offset=pend - (plen % 4), count=(plen % 4))
|
||||||
c = numpy.bitwise_xor(data, mask).tostring()
|
c = numpy.bitwise_xor(data, mask).tostring()
|
||||||
return b + c
|
return b + c
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue