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

@@ -26,8 +26,19 @@ func NewCartPacketQueue(connection net.Conn) *CartPacketQueue {
return queue return queue
} }
func (p *CartPacketQueue) HandleConnection(connection net.Conn) error { func (p *CartPacketQueue) RemoveListeners() {
p.mu.Lock()
defer p.mu.Unlock()
for _, l := range p.expectedPackages {
for _, l := range *l {
close(l.Chan)
}
}
p.expectedPackages = make(map[uint32]*CartListener)
}
func (p *CartPacketQueue) HandleConnection(connection net.Conn) error {
defer p.RemoveListeners()
defer connection.Close() defer connection.Close()
var packet CartPacket var packet CartPacket
reader := bufio.NewReader(connection) reader := bufio.NewReader(connection)

View File

@@ -2,6 +2,7 @@ package main
import ( import (
"bufio" "bufio"
"fmt"
"io" "io"
"log" "log"
"net" "net"
@@ -31,9 +32,18 @@ func NewPacketQueue(connection net.Conn) *PacketQueue {
return queue 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 connection.Close()
defer p.RemoveListeners()
var packet Packet var packet Packet
reader := bufio.NewReader(connection) reader := bufio.NewReader(connection)
for { for {
@@ -46,8 +56,8 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
return err return err
} }
if packet.Version != CurrentPacketVersion { if packet.Version != CurrentPacketVersion {
log.Printf("Error receiving packet: %v\n", err) log.Printf("Error receiving packet: %v\n", packet.Version)
continue return fmt.Errorf("incorrect packet version: %d", packet.Version)
} }
if packet.DataLength == 0 { if packet.DataLength == 0 {
go p.HandleData(packet.MessageType, CallResult{ go p.HandleData(packet.MessageType, CallResult{
@@ -59,7 +69,7 @@ func (p *PacketQueue) HandleConnection(connection net.Conn) error {
data, err := GetPacketData(reader, packet.DataLength) data, err := GetPacketData(reader, packet.DataLength)
if err != nil { if err != nil {
log.Printf("Error receiving packet data: %v\n", err) log.Printf("Error receiving packet data: %v\n", err)
//return err return err
} else { } else {
go p.HandleData(packet.MessageType, CallResult{ go p.HandleData(packet.MessageType, CallResult{
StatusCode: packet.StatusCode, StatusCode: packet.StatusCode,

View File

@@ -118,6 +118,7 @@ func (m *TCPServerMux) HandleConnection(connection net.Conn) error {
data, err := GetPacketData(reader, packet.DataLength) data, err := GetPacketData(reader, packet.DataLength)
if err != nil { if err != nil {
log.Printf("Error receiving packet data: %v\n", err) log.Printf("Error receiving packet data: %v\n", err)
return err
} }
go m.HandleData(connection, packet.MessageType, data) go m.HandleData(connection, packet.MessageType, data)
} }