Skip to content

Commit 45621c8

Browse files
committed
agent: review intra/udpmux.go
1 parent 4a562a7 commit 45621c8

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

intra/udpmux.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package intra
88

99
import (
1010
"fmt"
11+
"io"
1112
"net"
1213
"net/netip"
1314
"os"
@@ -226,13 +227,16 @@ func (x *muxer) readers() {
226227
log.D("udp: mux: %s read timeout(%d): %v", x.cid, timeouterrors, err)
227228
recycle()
228229
continue
229-
} // else: err out
230+
}
230231
}
231232
if err != nil {
232233
log.I("udp: mux: %s read done n(%d): %v", x.cid, n, err)
233234
recycle()
234235
return
235236
}
237+
238+
timeouterrors = 0 // reset on successful reads
239+
236240
if who == nil || n == 0 {
237241
log.W("udp: mux: %s read done n(%d): nil remote addr; skip", x.cid, n)
238242
recycle()
@@ -456,7 +460,7 @@ func (c *demuxconn) RemoteAddr() net.Addr {
456460

457461
// SetDeadline implements core.UDPConn.SetDeadline
458462
func (c *demuxconn) SetDeadline(t time.Time) error {
459-
werr := c.SetReadDeadline(t)
463+
werr := c.SetWriteDeadline(t)
460464
rerr := c.SetReadDeadline(t)
461465
return core.JoinErr(werr, rerr)
462466
}
@@ -499,8 +503,12 @@ func (c *demuxconn) io(out *[]byte, in *slice) (int, error) {
499503
case <-c.closed:
500504
log.W("udp: mux: %s demux: read: %v <= %v drop(sz: %d)", id, c.laddr, c.raddr, q)
501505
in.fin()
502-
case c.overflowCh <- &slice{v: in.v[n:], fin: in.fin}: // overflowCh is never closed
506+
case c.overflowCh <- &slice{v: in.v[n:], fin: in.fin}:
503507
log.W("udp: mux: %s demux: read: %v <= %v overflow(sz: %d)", id, c.laddr, c.raddr, q)
508+
default:
509+
log.E("udp: mux: %s demux: read: %v <= %v dropped(sz: %d)", id, c.laddr, c.raddr, q)
510+
in.fin()
511+
return n, io.ErrShortWrite
504512
}
505513
} else {
506514
log.VV("udp: mux: %s demux: read: %v <= %v done(sz: %d)", id, c.laddr, c.raddr, n)

0 commit comments

Comments
 (0)