close connection more often
Some checks failed
Build and Publish / BuildAndDeployAmd64 (push) Failing after 28s
Build and Publish / BuildAndDeploy (push) Successful in 2m9s

This commit is contained in:
matst80
2024-11-12 16:02:58 +01:00
parent 547a82832a
commit f4698acfd5
3 changed files with 27 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ package main
import (
"bufio"
"fmt"
"io"
"log"
"net"
@@ -31,9 +32,18 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
return queue
}
func (p *PacketQueue) HandleConnection(connection net.Conn) error {
func (p *PacketQueue) RemoveListeners() {
p.mu.Lock()
defer p.mu.Unlock()
for _, l := range p.expectedPackages {
close(l.Chan)
}
p.expectedPackages = make(map[uint32]*Listener)
}
func (p *PacketQueue) HandleConnection(connection net.Conn) error {
defer connection.Close()
defer p.RemoveListeners()
var packet Packet
reader := bufio.NewReader(connection)
for {
@@ -46,8 +56,8 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
return err
}
if packet.Version != CurrentPacketVersion {
log.Printf("Error receiving packet: %v\n", err)
continue
log.Printf("Error receiving packet: %v\n", packet.Version)
return fmt.Errorf("incorrect packet version: %d", packet.Version)
}
if packet.DataLength == 0 {
go p.HandleData(packet.MessageType, CallResult{
@@ -59,7 +69,7 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
data, err := GetPacketData(reader, packet.DataLength)
if err != nil {
log.Printf("Error receiving packet data: %v\n", err)
//return err
return err
} else {
go p.HandleData(packet.MessageType, CallResult{
StatusCode: packet.StatusCode,