Fixes in the header not sure if it works tho

This commit is contained in:
ChillerDragon 2022-10-30 19:19:10 +01:00
parent b7a2cfb5c3
commit 292bbf5fe0

View file

@ -45,23 +45,26 @@ class NetBase
# // TTTTTTTT # // TTTTTTTT
# // TTTTTTTT # // TTTTTTTT
flags_bits = PacketFlags.new(flags).bits flags_bits = PacketFlags.new(flags).bits
num_chunks = 0 # todo
header_bits = header_bits =
'00' + # unused flags? # ff '00' + # unused flags? # ff
flags_bits + # ffff flags_bits + # ffff
@ack.to_s(2).rjust(10, '0') # aa aaaa aaaa @ack.to_s(2).rjust(10, '0') + # aa aaaa aaaa
num_chunks.to_s(2).rjust(8, '0') # NNNN NNNN
puts "header bits: #{header_bits}" # puts "header bits: #{header_bits}"
header = header_bits.chars.groups_of(4).map do |four_bits| header = header_bits.chars.groups_of(8).map do |eight_bits|
four_bits.join('').to_i(2) eight_bits.join('').to_i(2)
end end
puts "header bytes: #{str_hex(header.pack("C*"))}" # puts "header bytes: #{str_hex(header.pack("C*"))}"
header = [0x00, 0x00, 0x01] + str_bytes(@server_token) # header = [0x00, 0x00, 0x01] + str_bytes(@server_token)
header = header + str_bytes(@server_token)
data = (header + payload).pack('C*') data = (header + payload).pack('C*')
@s.send(data, 0, @ip, @port) @s.send(data, 0, @ip, @port)
p = Packet.new(data, '>') p = Packet.new(data, '>')
puts p puts p.to_s
end end
end end
@ -85,17 +88,8 @@ class TwClient
@netbase.send_packet(data) @netbase.send_packet(data)
end end
# does not help because server
# drops the invalid acks
# so we have to finally
# create a proper
# sendpacket() method
# that sends a proper header
def send_ctrl_keepalive() def send_ctrl_keepalive()
# size and flags @netbase.send_packet([NET_CTRLMSG_KEEPALIVE])
header = [0x04, 0x0A, 0x00] + str_bytes(@token)
msg = header + [NET_CTRLMSG_KEEPALIVE]
@s.send(msg.pack('C*'), 0, @ip, @port)
end end
def send_msg_connect() def send_msg_connect()
@ -195,6 +189,8 @@ class TwClient
send_ctrl_with_token send_ctrl_with_token
loop do loop do
tick tick
# todo: proper tick speed sleep
sleep 0.001
end end
end end
@ -212,6 +208,7 @@ class TwClient
when NET_CTRLMSG_TOKEN then on_msg_token(data) when NET_CTRLMSG_TOKEN then on_msg_token(data)
when NET_CTRLMSG_ACCEPT then on_msg_accept when NET_CTRLMSG_ACCEPT then on_msg_accept
when NET_CTRLMSG_CLOSE then on_msg_close when NET_CTRLMSG_CLOSE then on_msg_close
when NET_CTRLMSG_KEEPALIVE then # silently ignore keepalive
else else
puts "Uknown control message #{msg}" puts "Uknown control message #{msg}"
exit(1) exit(1)