Skip to content

Commit 521c168

Browse files
Revert "go 1.10"
This reverts commit e5d08b8.
1 parent 7f8d0dc commit 521c168

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

listener.go

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,6 @@ import (
77
"time"
88
)
99

10-
type rules []Rule
11-
12-
func (r rules) Swap(i, j int) {
13-
r[i], r[j] = r[j], r[i]
14-
}
15-
func (r rules) Len() int { return len(r) }
16-
func (r rules) Less(i, j int) bool {
17-
iOnes, iBits := r[i].Subnet.Mask.Size()
18-
jOnes, jBits := r[j].Subnet.Mask.Size()
19-
if iOnes != jOnes {
20-
return iOnes > jOnes
21-
}
22-
if iBits != jBits {
23-
return iBits > jBits
24-
}
25-
if r[i].Timeout != r[j].Timeout {
26-
if r[j].Timeout == 0 {
27-
return true
28-
}
29-
return r[i].Timeout < r[j].Timeout
30-
}
31-
return r[i].Timeout < r[j].Timeout
32-
}
33-
3410
// Listener wraps a net.Listener automatically wrapping new connections with PROXY protocol support.
3511
type Listener struct {
3612
net.Listener
@@ -124,7 +100,23 @@ func (l *Listener) Filter() []Rule {
124100
func (l *Listener) SetFilter(filter []Rule) {
125101
newFilter := make([]Rule, len(filter))
126102
copy(newFilter, filter)
127-
sort.Sort(rules(newFilter))
103+
sort.Slice(newFilter, func(i, j int) bool {
104+
iOnes, iBits := newFilter[i].Subnet.Mask.Size()
105+
jOnes, jBits := newFilter[j].Subnet.Mask.Size()
106+
if iOnes != jOnes {
107+
return iOnes > jOnes
108+
}
109+
if iBits != jBits {
110+
return iBits > jBits
111+
}
112+
if newFilter[i].Timeout != newFilter[j].Timeout {
113+
if newFilter[j].Timeout == 0 {
114+
return true
115+
}
116+
return newFilter[i].Timeout < newFilter[j].Timeout
117+
}
118+
return newFilter[i].Timeout < newFilter[j].Timeout
119+
})
128120
if len(newFilter) > 0 {
129121
// dedup
130122
last := newFilter[0]

0 commit comments

Comments
 (0)