close connection more often
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user