diff --git a/cart-packet-queue.go b/cart-packet-queue.go index ddc8abc..11585ba 100644 --- a/cart-packet-queue.go +++ b/cart-packet-queue.go @@ -12,6 +12,8 @@ type CartPacketQueue struct { expectedPackages map[uint32]*CartListener } +const CurrentPacketVersion = 2 + type CartListener map[CartId]chan []byte func NewCartPacketQueue(connection net.Conn) *CartPacketQueue { @@ -36,6 +38,14 @@ func (p *CartPacketQueue) HandleConnection(connection net.Conn) error { log.Printf("Error receiving packet: %v\n", err) return err } + if packet.Version != CurrentPacketVersion { + log.Printf("Error receiving packet: %v\n", err) + continue + } + if packet.DataLength == 0 { + go p.HandleData(packet.MessageType, packet.Id, []byte{}) + continue + } data, err := GetPacketData(connection, packet.DataLength) if err != nil { log.Printf("Error receiving packet data: %v\n", err) diff --git a/packet-queue.go b/packet-queue.go index 4f641b1..9e8fd09 100644 --- a/packet-queue.go +++ b/packet-queue.go @@ -52,12 +52,21 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error { log.Printf("Error receiving packet: %v\n", err) return err } + if packet.Version != CurrentPacketVersion { + log.Printf("Error receiving packet: %v\n", err) + continue + } + if packet.DataLength == 0 { + go p.HandleData(packet.MessageType, []byte{}) + continue + } data, err := GetPacketData(connection, packet.DataLength) if err != nil { log.Printf("Error receiving packet data: %v\n", err) - return err + //return err + } else { + go p.HandleData(packet.MessageType, data) } - go p.HandleData(packet.MessageType, data) } } diff --git a/tcp-cart-mux-server.go b/tcp-cart-mux-server.go index 2b30966..2729ff2 100644 --- a/tcp-cart-mux-server.go +++ b/tcp-cart-mux-server.go @@ -73,7 +73,7 @@ func (m *TCPCartServerMux) handleFunction(connection net.Conn, messageType uint3 return true, err } err = binary.Write(connection, binary.LittleEndian, CartPacket{ - Version: 1, + Version: CurrentPacketVersion, MessageType: responseType, DataLength: uint64(len(responseData)), Id: id, diff --git a/tcp-client.go b/tcp-client.go index 0f18a48..540ddc5 100644 --- a/tcp-client.go +++ b/tcp-client.go @@ -75,7 +75,7 @@ func (m *TCPClient) SendPacket(messageType uint32, data []byte) error { return err } err = binary.Write(m.Conn, binary.LittleEndian, Packet{ - Version: 1, + Version: CurrentPacketVersion, MessageType: messageType, DataLength: uint64(len(data)), }) diff --git a/tcp-mux-server.go b/tcp-mux-server.go index 5536375..e2a83b3 100644 --- a/tcp-mux-server.go +++ b/tcp-mux-server.go @@ -73,7 +73,7 @@ func (m *TCPServerMux) handleFunction(connection net.Conn, messageType uint32, d return true, err } err = binary.Write(connection, binary.LittleEndian, Packet{ - Version: 1, + Version: CurrentPacketVersion, MessageType: responseType, DataLength: uint64(len(responseData)), })