Skip to content

Commit 62a14fb

Browse files
committed
Increase deadline time, use buffer pool
1 parent 3d47da3 commit 62a14fb

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

proxy.go

+24-20
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ import (
55
"crypto/md5"
66
"encoding/json"
77
"fmt"
8+
"io"
89
"log"
910
"net"
1011
"net/http"
1112
"strings"
13+
"sync"
1214
"time"
1315
)
1416

1517
const (
16-
NetDeadline = time.Second * 2
17-
DialTimeout = time.Second * 2
18+
NetDeadline = time.Second * 5
19+
DialTimeout = time.Second * 5
1820
ProxyBind = ""
1921
)
2022

@@ -181,7 +183,7 @@ func handleLoginRequest(clientConn net.Conn, handshake ServerBoundHandshake, use
181183
return
182184
}
183185

184-
log.Printf("User %s connected to %s. Username %s -> %s\n", userInfo.TgName, cfg.BaseDomain, passedUsername, userInfo.Nickname)
186+
log.Printf("User %s connected to %s from %s. Nickname %s -> %s\n", userInfo.TgName, cfg.BaseDomain, clientConn.RemoteAddr().String(), passedUsername, userInfo.Nickname)
185187

186188
ProxyConnection(clientConn, cfg.MinecraftServer, peekedData)
187189
}
@@ -269,6 +271,12 @@ func NameUUIDFromBytes(name []byte) McUUID {
269271

270272
///////////////////////////////////////////////////////////////////////////////
271273

274+
var bufferPool = sync.Pool{
275+
New: func() interface{} {
276+
return make([]byte, 32*1024)
277+
},
278+
}
279+
272280
func ProxyConnection(clientConn net.Conn, serverAddr string, peekedData []byte) (err error) {
273281
dialer := net.Dialer{
274282
Timeout: DialTimeout,
@@ -282,31 +290,27 @@ func ProxyConnection(clientConn net.Conn, serverAddr string, peekedData []byte)
282290
return err
283291
}
284292

285-
serverConn.Write(peekedData)
293+
_, err = serverConn.Write(peekedData)
294+
if err != nil {
295+
log.Printf("Error writing to server connection: %v\n", err)
296+
clientConn.Close()
297+
serverConn.Close()
298+
return err
299+
}
286300

287301
go func() {
288-
pipe(serverConn, clientConn)
302+
buffer := bufferPool.Get().([]byte)
303+
defer bufferPool.Put(buffer)
304+
io.CopyBuffer(serverConn, clientConn, buffer)
289305
clientConn.Close()
290306
}()
291307

292308
go func() {
293-
pipe(clientConn, serverConn)
309+
buffer := bufferPool.Get().([]byte)
310+
defer bufferPool.Put(buffer)
311+
io.CopyBuffer(clientConn, serverConn, buffer)
294312
serverConn.Close()
295313
}()
296314

297315
return nil
298316
}
299-
300-
func pipe(c1, c2 net.Conn) {
301-
buffer := make([]byte, 0xffff)
302-
for {
303-
n, err := c1.Read(buffer)
304-
if err != nil {
305-
return
306-
}
307-
_, err = c2.Write(buffer[:n])
308-
if err != nil {
309-
return
310-
}
311-
}
312-
}

storage.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func (s *Storage) AddRecord(nickname, tgname string, id int64) (*StorageRecord,
100100
Token: token,
101101
Nickname: nickname,
102102
ID: id,
103-
TgName: tgname,
103+
TgName: strings.TrimSpace(tgname),
104104
}
105105

106106
// Append to file

0 commit comments

Comments
 (0)