From 997b217d4b114b12d92ad246c657403e34b051da Mon Sep 17 00:00:00 2001 From: xtaci Date: Tue, 7 Feb 2023 21:32:30 +0800 Subject: [PATCH] upd deps to smux --- go.mod | 2 +- go.sum | 4 ++-- vendor/github.com/xtaci/smux/session.go | 7 +++++-- vendor/github.com/xtaci/smux/shaper.go | 10 ++++++++-- vendor/modules.txt | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 0bea921..a77cce6 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/urfave/cli v1.22.12 github.com/xtaci/kcp-go/v5 v5.6.2 - github.com/xtaci/smux v1.5.17 + github.com/xtaci/smux v1.5.18 github.com/xtaci/tcpraw v1.2.25 golang.org/x/crypto v0.5.0 ) diff --git a/go.sum b/go.sum index a75e264..66b9991 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,8 @@ github.com/xtaci/kcp-go/v5 v5.6.2 h1:pSXMa5MOsb+EIZKe4sDBqlTExu2A/2Z+DFhoX2qtt2A github.com/xtaci/kcp-go/v5 v5.6.2/go.mod h1:LsinWoru+lWWJHb+EM9HeuqYxV6bb9rNcK12v67jYzQ= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM= github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= -github.com/xtaci/smux v1.5.17 h1:1V9FZ8kNProe0JqFj6EjttdAqNBzqANhzsDrBjN/L0k= -github.com/xtaci/smux v1.5.17/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= +github.com/xtaci/smux v1.5.18 h1:NRH2dIxcO1w5dsNpQxSrxfhxjk4YNg6TrS/Nj0FuUPc= +github.com/xtaci/smux v1.5.18/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= github.com/xtaci/tcpraw v1.2.25 h1:VDlqo0op17JeXBM6e2G9ocCNLOJcw9mZbobMbJjo0vk= github.com/xtaci/tcpraw v1.2.25/go.mod h1:dKyZ2V75s0cZ7cbgJYdxPvms7af0joIeOyx1GgJQbLk= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= diff --git a/vendor/github.com/xtaci/smux/session.go b/vendor/github.com/xtaci/smux/session.go index 778e24b..4659743 100644 --- a/vendor/github.com/xtaci/smux/session.go +++ b/vendor/github.com/xtaci/smux/session.go @@ -26,6 +26,7 @@ var ( type writeRequest struct { prio uint32 frame Frame + seq uint32 result chan writeResult } @@ -76,8 +77,9 @@ type Session struct { deadline atomic.Value - shaper chan writeRequest // a shaper for writing - writes chan writeRequest + requestID uint32 // write request monotonic increasing + shaper chan writeRequest // a shaper for writing + writes chan writeRequest } func newSession(config *Config, conn io.ReadWriteCloser, client bool) *Session { @@ -506,6 +508,7 @@ func (s *Session) writeFrameInternal(f Frame, deadline <-chan time.Time, prio ui req := writeRequest{ prio: prio, frame: f, + seq: atomic.AddUint32(&s.requestID, 1), result: make(chan writeResult, 1), } select { diff --git a/vendor/github.com/xtaci/smux/shaper.go b/vendor/github.com/xtaci/smux/shaper.go index c074186..0cc82b1 100644 --- a/vendor/github.com/xtaci/smux/shaper.go +++ b/vendor/github.com/xtaci/smux/shaper.go @@ -6,8 +6,14 @@ func _itimediff(later, earlier uint32) int32 { type shaperHeap []writeRequest -func (h shaperHeap) Len() int { return len(h) } -func (h shaperHeap) Less(i, j int) bool { return _itimediff(h[j].prio, h[i].prio) > 0 } +func (h shaperHeap) Len() int { return len(h) } +func (h shaperHeap) Less(i, j int) bool { + if h[i].frame.sid == h[j].frame.sid { + return _itimediff(h[j].seq, h[i].seq) > 0 + } else { + return _itimediff(h[j].prio, h[i].prio) > 0 + } +} func (h shaperHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *shaperHeap) Push(x interface{}) { *h = append(*h, x.(writeRequest)) } diff --git a/vendor/modules.txt b/vendor/modules.txt index ac3153b..5096adc 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -38,7 +38,7 @@ github.com/urfave/cli # github.com/xtaci/kcp-go/v5 v5.6.2 ## explicit; go 1.13 github.com/xtaci/kcp-go/v5 -# github.com/xtaci/smux v1.5.17 +# github.com/xtaci/smux v1.5.18 ## explicit; go 1.13 github.com/xtaci/smux # github.com/xtaci/tcpraw v1.2.25