On 08/15/2014 12:29 PM, Paulo Vital wrote:
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(-)
You are modifying a third-party code, ie, this code was imported into
Kimchi.
As it is LGPLv3 and Kimchi backend is also LGPLv3, (*from my
understanding*) there is any problem in change it UNLESS we properly
document it.
Please, check LGPLv3 to do it and inform the changes you are doing here.
And do you have a plan when the original problem will be fixed? If it is
soon, we can hold this patch by now.
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")