File tree 1 file changed +6
-7
lines changed
1 file changed +6
-7
lines changed Original file line number Diff line number Diff line change 7
7
)
8
8
9
9
type perIPConnCounter struct {
10
+ pool sync.Pool
10
11
lock sync.Mutex
11
12
m map [uint32 ]int
12
13
}
@@ -45,25 +46,23 @@ type perIPConn struct {
45
46
}
46
47
47
48
func acquirePerIPConn (conn net.Conn , ip uint32 , counter * perIPConnCounter ) * perIPConn {
48
- v := perIPConnPool .Get ()
49
+ v := counter . pool .Get ()
49
50
if v == nil {
50
- v = & perIPConn {}
51
+ v = & perIPConn {
52
+ perIPConnCounter : counter ,
53
+ }
51
54
}
52
55
c := v .(* perIPConn )
53
56
c .Conn = conn
54
57
c .ip = ip
55
- c .perIPConnCounter = counter
56
58
return c
57
59
}
58
60
59
61
func releasePerIPConn (c * perIPConn ) {
60
62
c .Conn = nil
61
- c .perIPConnCounter = nil
62
- perIPConnPool .Put (c )
63
+ c .perIPConnCounter .pool .Put (c )
63
64
}
64
65
65
- var perIPConnPool sync.Pool
66
-
67
66
func (c * perIPConn ) Close () error {
68
67
err := c .Conn .Close ()
69
68
c .perIPConnCounter .Unregister (c .ip )
You can’t perform that action at this time.
0 commit comments