1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-13 05:31:08 +08:00

fix(tcp): close recv on io.EOF

This commit is contained in:
源文雨
2025-02-21 16:44:58 +09:00
parent 956199cf19
commit fae1b768f2

View File

@@ -230,10 +230,7 @@ func (conn *Conn) receive(tcpconn *net.TCPConn, hasvalidated bool) {
} }
r.conn = tcpconn r.conn = tcpconn
stopch := make(chan struct{}) t := time.NewTimer(peerstimeout)
t := time.AfterFunc(peerstimeout, func() {
stopch <- struct{}{}
})
var err error var err error
copych := make(chan struct{}) copych := make(chan struct{})
@@ -243,7 +240,7 @@ func (conn *Conn) receive(tcpconn *net.TCPConn, hasvalidated bool) {
}() }()
select { select {
case <-stopch: case <-t.C:
if config.ShowDebugLog { if config.ShowDebugLog {
logrus.Debugln("[tcp] recv from", ep, "timeout") logrus.Debugln("[tcp] recv from", ep, "timeout")
} }
@@ -261,7 +258,7 @@ func (conn *Conn) receive(tcpconn *net.TCPConn, hasvalidated bool) {
if config.ShowDebugLog { if config.ShowDebugLog {
logrus.Debugln("[tcp] recv from", ep, "err:", err) logrus.Debugln("[tcp] recv from", ep, "err:", err)
} }
if errors.Is(err, net.ErrClosed) || errors.Is(err, io.ErrClosedPipe) { if errors.Is(err, net.ErrClosed) || errors.Is(err, io.ErrClosedPipe) || errors.Is(err, io.EOF) {
_ = tcpconn.CloseRead() _ = tcpconn.CloseRead()
return return
} }