
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@linux.vnet.ibm.com> Signed-off-by: Paulo Vital <pvital@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")