A numpy byte order bug cause the novnc handshake failure. To workaround
this problem, we swap bytes after unmasking. After it's fixed on the
numpy side, we can drop this patch.
Signed-off-by: Mark Wu <wudxw(a)linux.vnet.ibm.com>
Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
---
src/kimchi/websocket.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/kimchi/websocket.py b/src/kimchi/websocket.py
index a98fc6d..870c453 100644
--- a/src/kimchi/websocket.py
+++ b/src/kimchi/websocket.py
@@ -16,7 +16,7 @@ as taken from
http://docs.python.org/dev/library/ssl.html#certificates
'''
-import os, sys, time, errno, signal, socket, traceback, select
+import os, sys, time, errno, signal, socket, traceback, select, platform
import array, struct
from base64 import b64encode, b64decode
@@ -251,7 +251,10 @@ Sec-WebSocket-Accept: %s\r
data = numpy.frombuffer(buf, dtype=numpy.dtype('<u4'),
offset=pstart, count=int(plen / 4))
#b = numpy.bitwise_xor(data, mask).data
- b = numpy.bitwise_xor(data, mask).tostring()
+ if platform.machine().startswith('ppc'):
+ b = numpy.bitwise_xor(data, mask).byteswap().tostring()
+ else:
+ b = numpy.bitwise_xor(data, mask).tostring()
if plen % 4:
#print("Partial unmask")
--
1.9.3