@@ -42,9 +42,10 @@ const (
42
42
func (g * GameServer ) tcpSendFile (tcpData * TCPData , conn * net.TCPConn , withSize bool ) {
43
43
startTime := time .Now ()
44
44
var ok bool
45
+ var data []byte
45
46
for ! ok {
46
47
g .tcpMutex .Lock ()
47
- _ , ok = g .tcpFiles [tcpData .filename ]
48
+ data , ok = g .tcpFiles [tcpData .filename ]
48
49
g .tcpMutex .Unlock ()
49
50
if ! ok {
50
51
time .Sleep (time .Millisecond )
@@ -53,22 +54,20 @@ func (g *GameServer) tcpSendFile(tcpData *TCPData, conn *net.TCPConn, withSize b
53
54
return
54
55
}
55
56
} else {
56
- g .tcpMutex .Lock ()
57
57
if withSize {
58
58
size := make ([]byte , 4 )
59
- binary .BigEndian .PutUint32 (size , uint32 (len (g . tcpFiles [ tcpData . filename ] )))
59
+ binary .BigEndian .PutUint32 (size , uint32 (len (data )))
60
60
_ , err := conn .Write (size )
61
61
if err != nil {
62
62
g .Logger .Error (err , "could not write size" , "address" , conn .RemoteAddr ().String ())
63
63
}
64
64
}
65
- if len (g . tcpFiles [ tcpData . filename ] ) > 0 {
66
- _ , err := conn .Write (g . tcpFiles [ tcpData . filename ] )
65
+ if len (data ) > 0 {
66
+ _ , err := conn .Write (data )
67
67
if err != nil {
68
68
g .Logger .Error (err , "could not write file" , "address" , conn .RemoteAddr ().String ())
69
69
}
70
70
}
71
- g .tcpMutex .Unlock ()
72
71
73
72
// g.Logger.Info("sent save file", "filename", tcpData.filename, "filesize", tcpData.filesize, "address", conn.RemoteAddr().String())
74
73
tcpData .filename = ""
@@ -96,9 +95,10 @@ func (g *GameServer) tcpSendSettings(conn *net.TCPConn) {
96
95
func (g * GameServer ) tcpSendCustom (conn * net.TCPConn , customID byte ) {
97
96
startTime := time .Now ()
98
97
var ok bool
98
+ var data []byte
99
99
for ! ok {
100
100
g .tcpMutex .Lock ()
101
- _ , ok = g .customData [customID ]
101
+ data , ok = g .customData [customID ]
102
102
g .tcpMutex .Unlock ()
103
103
if ! ok {
104
104
time .Sleep (time .Millisecond )
@@ -107,9 +107,7 @@ func (g *GameServer) tcpSendCustom(conn *net.TCPConn, customID byte) {
107
107
return
108
108
}
109
109
} else {
110
- g .tcpMutex .Lock ()
111
- _ , err := conn .Write (g .customData [customID ])
112
- g .tcpMutex .Unlock ()
110
+ _ , err := conn .Write (data )
113
111
if err != nil {
114
112
g .Logger .Error (err , "could not write data" , "address" , conn .RemoteAddr ().String ())
115
113
}
0 commit comments