Skip to content

Commit 119e8cd

Browse files
committed
core,udpmux: handle potential nils w/ atomic.Value
1 parent 6e793da commit 119e8cd

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

intra/core/hangover.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ type Hangover struct {
1818
}
1919

2020
func NewHangover() *Hangover {
21-
return &Hangover{}
21+
h := &Hangover{}
22+
h.t.Store(zerotime)
23+
return h
2224
}
2325

2426
func (h *Hangover) start() time.Time {

intra/udpmux.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ type muxer struct {
7474
uid string // user id owner of mxconn
7575
stats *stats
7676

77-
until atomic.Value // [time.Time] deadline extension
77+
until atomic.Int64 // [time.Time] as unix millis deadline extension
7878

7979
dxconns chan *demuxconn // never closed
8080
dxconnWG *sync.WaitGroup // wait group for demuxed conns
@@ -339,11 +339,11 @@ func (x *muxer) sendto(p []byte, addr net.Addr) (int, error) {
339339
func (x *muxer) extend(t time.Time) {
340340
if t.IsZero() {
341341
extend(x.mxconn, 0)
342-
x.until.Store(t)
343-
} else if c := x.until.Load().(time.Time); c.IsZero() || c.Before(t) {
342+
x.until.Store(t.UnixMilli())
343+
} else if c := x.until.Load(); c == 0 || c < t.UnixMilli() {
344344
// extend if t is after existing deadline at x.until
345345
extend(x.mxconn, time.Until(t))
346-
x.until.Store(t)
346+
x.until.Store(t.UnixMilli())
347347
}
348348
}
349349

0 commit comments

Comments
 (0)