Fix parsing messages with ids higher than 31
See my thought process here https://github.com/ChillerDragon/teeworlds-protocol/pull/15
This commit is contained in:
parent
bd4353538a
commit
9615392156
|
@ -24,8 +24,7 @@ def test_parse_7_real_call_vote():
|
|||
|
||||
assert msg.message_name == 'cl_call_vote'
|
||||
|
||||
# TODO: this fails because it somehow prefixes a leading space
|
||||
# assert msg.type == 'option'
|
||||
assert msg.type == 'option'
|
||||
assert msg.value == 'test'
|
||||
assert msg.reason == ''
|
||||
assert msg.force == False
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
from typing import Union
|
||||
from typing import cast
|
||||
|
||||
from twnet_parser import packer
|
||||
from twnet_parser.packer import Unpacker
|
||||
from twnet_parser.pretty_print import PrettyPrint
|
||||
from twnet_parser.message_parser import MessageParser
|
||||
from twnet_parser.net_message import NetMessage
|
||||
|
@ -134,15 +134,16 @@ class PacketParser():
|
|||
i = 2
|
||||
if chunk_header.flags.vital:
|
||||
i += 1
|
||||
msg_id: int = packer.unpack_int(data[i:])
|
||||
unpacker = Unpacker(data[i:])
|
||||
msg_id: int = unpacker.get_int()
|
||||
i += 1
|
||||
sys: bool = (msg_id & 1) == 1
|
||||
msg_id >>= 1
|
||||
msg: NetMessage
|
||||
if sys:
|
||||
msg = MessageParser().parse_sys_message(msg_id, data[i:])
|
||||
msg = MessageParser().parse_sys_message(msg_id, unpacker.get_raw())
|
||||
else:
|
||||
msg = MessageParser().parse_game_message(msg_id, data[i:])
|
||||
msg = MessageParser().parse_game_message(msg_id, unpacker.get_raw())
|
||||
msg.header = chunk_header
|
||||
return msg
|
||||
|
||||
|
|
Loading…
Reference in a new issue