summaryrefslogtreecommitdiff
path: root/proto.go
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-12 20:08:52 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-12 20:08:52 +0100
commit7d9e314903cba08b8a3a30533dab51ad25fd5cac (patch)
tree4035fa2de1261db1e0880064bc58072c539582cb /proto.go
parente1bfd543b068fd64d7e12f6ea4f5a8a013085f74 (diff)
downloadmt-7d9e314903cba08b8a3a30533dab51ad25fd5cac.tar.xz
Add WaitGroup to SerializePktHEADmaster
Diffstat (limited to 'proto.go')
-rw-r--r--proto.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/proto.go b/proto.go
index 597e146..c5566f0 100644
--- a/proto.go
+++ b/proto.go
@@ -4,6 +4,7 @@ import (
"fmt"
"io"
"net"
+ "sync"
"github.com/dragonfireclient/mt/rudp"
)
@@ -19,7 +20,7 @@ type Peer struct {
*rudp.Conn
}
-func SerializePkt(pkt Cmd, w io.WriteCloser, toSrv bool) bool {
+func SerializePkt(pkt Cmd, w io.WriteCloser, toSrv bool, wg *sync.WaitGroup) bool {
var cmdNo uint16
if toSrv {
cmdNo = pkt.(ToSrvCmd).toSrvCmdNo()
@@ -31,7 +32,9 @@ func SerializePkt(pkt Cmd, w io.WriteCloser, toSrv bool) bool {
return false
}
+ wg.Add(1)
go func() (err error) {
+ defer wg.Done()
// defer w.CloseWithError(err)
defer w.Close()
@@ -48,7 +51,7 @@ func SerializePkt(pkt Cmd, w io.WriteCloser, toSrv bool) bool {
func (p Peer) Send(pkt Pkt) (ack <-chan struct{}, err error) {
r, w := io.Pipe()
- if !SerializePkt(pkt.Cmd, w, p.IsSrv()) {
+ if !SerializePkt(pkt.Cmd, w, p.IsSrv(), &sync.WaitGroup{}) {
return nil, p.Close()
}