Example #1
0
 def _process_ws_ping(self, payload):
     log("_process_ws_ping(%r)", payload)
     item = encode_hybi_header(OPCODE_PONG,
                               len(payload)) + memoryview_to_bytes(payload)
     items = (item, )
     with self._write_lock:
         self.raw_write(items)
Example #2
0
 def make_wschunk_header(self, packet_type, proto_flags, level, index,
                         payload_size):
     header = Protocol.make_xpra_header(self, packet_type, proto_flags,
                                        level, index, payload_size)
     log("make_wschunk_header(%s)",
         (packet_type, proto_flags, level, index, payload_size))
     return encode_hybi_header(OPCODE_BINARY,
                               payload_size + len(header)) + header
 def rt(opcode, payload, has_mask=False, fin=True):
     h = encode_hybi_header(opcode, len(payload), has_mask, fin)
     packet = h + payload
     ropcode, rpayload, rlen, rfin = decode_hybi(packet)
     assert opcode == ropcode
     assert rpayload == payload
     assert rlen > len(payload)
     assert fin == rfin
Example #4
0
 def make_wsframe_header(self, packet_type, items):
     payload_len = sum(len(item) for item in items)
     log("make_wsframe_header(%s, %i items) %i bytes", packet_type, len(items), payload_len)
     header = encode_hybi_header(OPCODE_BINARY, payload_len, self.ws_mask)
     if self.ws_mask:
         from xpra.codecs.xor.cyxor import hybi_mask     #@UnresolvedImport
         mask = os.urandom(4)
         #now mask all the items:
         for i, item in enumerate(items):
             items[i] = hybi_mask(mask, item)
         return header+mask
     return header
 def test_invalid_decode(self):
     for l in (0, 10, 125, 126, 65535, 65536):
         for has_mask in (True, False):
             payload = b"\0" * l
             h = encode_hybi_header(0, len(payload), has_mask, True)
             if has_mask:
                 packet = h + b"9" * 4 + payload
             else:
                 packet = h + payload
             v = decode_hybi(packet)
             assert v
             v = decode_hybi(packet[:-1])
             assert v is None
             v = decode_hybi(packet[:int(has_mask) * 4])
             assert v is None, "got %s" % (v, )
             if l > 0:
                 for i in range(5):
                     v = decode_hybi(packet[:int(has_mask) * 4 + i])
                     assert v is None, "got %s" % (v, )