Просмотр исходного кода

Update golanci-lint

tags/v2.0.0-rc1
9seconds 5 лет назад
Родитель
Сommit
585ebfeb50

+ 1
- 1
.github/workflows/ci.yaml Просмотреть файл

70
       - name: Run linter
70
       - name: Run linter
71
         uses: golangci/golangci-lint-action@v2
71
         uses: golangci/golangci-lint-action@v2
72
         with:
72
         with:
73
-          version: v1.37.1
73
+          version: v1.39.0
74
 
74
 
75
   docker:
75
   docker:
76
     name: Docker
76
     name: Docker

+ 0
- 1
.golangci.toml Просмотреть файл

3
 deadline = "2m"
3
 deadline = "2m"
4
 tests = true
4
 tests = true
5
 skip-dirs = ["vendor"]
5
 skip-dirs = ["vendor"]
6
-skip-files = ["version.go"]
7
 
6
 
8
 [output]
7
 [output]
9
 format = "colored-line-number"
8
 format = "colored-line-number"

+ 1
- 1
Makefile Просмотреть файл

4
 
4
 
5
 CC_BINARIES  := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}")
5
 CC_BINARIES  := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}")
6
 
6
 
7
-GOLANGCI_LINT_VERSION := v1.37.1
7
+GOLANGCI_LINT_VERSION := v1.39.0
8
 
8
 
9
 VERSION_GO         := $(shell go version)
9
 VERSION_GO         := $(shell go version)
10
 VERSION_DATE       := $(shell date -Ru)
10
 VERSION_DATE       := $(shell date -Ru)

+ 16
- 8
events/event_stream_test.go Просмотреть файл

46
 			On("EventStart", mock.Anything).
46
 			On("EventStart", mock.Anything).
47
 			Once().
47
 			Once().
48
 			Run(func(args mock.Arguments) {
48
 			Run(func(args mock.Arguments) {
49
-				caught := args.Get(0).(mtglib.EventStart)
49
+				caught, ok := args.Get(0).(mtglib.EventStart)
50
 
50
 
51
+				suite.True(ok)
51
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
52
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
52
 				suite.Equal(evt.StreamID(), caught.StreamID())
53
 				suite.Equal(evt.StreamID(), caught.StreamID())
53
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
54
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
66
 			On("EventConnectedToDC", mock.Anything).
67
 			On("EventConnectedToDC", mock.Anything).
67
 			Once().
68
 			Once().
68
 			Run(func(args mock.Arguments) {
69
 			Run(func(args mock.Arguments) {
69
-				caught := args.Get(0).(mtglib.EventConnectedToDC)
70
+				caught, ok := args.Get(0).(mtglib.EventConnectedToDC)
70
 
71
 
72
+				suite.True(ok)
71
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
73
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
72
 				suite.Equal(evt.StreamID(), caught.StreamID())
74
 				suite.Equal(evt.StreamID(), caught.StreamID())
73
 				suite.Equal(evt.DC, caught.DC)
75
 				suite.Equal(evt.DC, caught.DC)
87
 			On("EventDomainFronting", mock.Anything).
89
 			On("EventDomainFronting", mock.Anything).
88
 			Once().
90
 			Once().
89
 			Run(func(args mock.Arguments) {
91
 			Run(func(args mock.Arguments) {
90
-				caught := args.Get(0).(mtglib.EventDomainFronting)
92
+				caught, ok := args.Get(0).(mtglib.EventDomainFronting)
91
 
93
 
94
+				suite.True(ok)
92
 				suite.Equal(evt.StreamID(), caught.StreamID())
95
 				suite.Equal(evt.StreamID(), caught.StreamID())
93
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
96
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
94
 			})
97
 			})
106
 			On("EventTraffic", mock.Anything).
109
 			On("EventTraffic", mock.Anything).
107
 			Once().
110
 			Once().
108
 			Run(func(args mock.Arguments) {
111
 			Run(func(args mock.Arguments) {
109
-				caught := args.Get(0).(mtglib.EventTraffic)
112
+				caught, ok := args.Get(0).(mtglib.EventTraffic)
110
 
113
 
114
+				suite.True(ok)
111
 				suite.Equal(evt.StreamID(), caught.StreamID())
115
 				suite.Equal(evt.StreamID(), caught.StreamID())
112
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
116
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
113
 				suite.Equal(evt.Traffic, caught.Traffic)
117
 				suite.Equal(evt.Traffic, caught.Traffic)
127
 			On("EventFinish", mock.Anything).
131
 			On("EventFinish", mock.Anything).
128
 			Once().
132
 			Once().
129
 			Run(func(args mock.Arguments) {
133
 			Run(func(args mock.Arguments) {
130
-				caught := args.Get(0).(mtglib.EventFinish)
134
+				caught, ok := args.Get(0).(mtglib.EventFinish)
131
 
135
 
136
+				suite.True(ok)
132
 				suite.Equal(evt.StreamID(), caught.StreamID())
137
 				suite.Equal(evt.StreamID(), caught.StreamID())
133
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
138
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
134
 			})
139
 			})
146
 			On("EventConcurrencyLimited", mock.Anything).
151
 			On("EventConcurrencyLimited", mock.Anything).
147
 			Once().
152
 			Once().
148
 			Run(func(args mock.Arguments) {
153
 			Run(func(args mock.Arguments) {
149
-				caught := args.Get(0).(mtglib.EventConcurrencyLimited)
154
+				caught, ok := args.Get(0).(mtglib.EventConcurrencyLimited)
150
 
155
 
156
+				suite.True(ok)
151
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
157
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
152
 				suite.Empty(evt.StreamID())
158
 				suite.Empty(evt.StreamID())
153
 			})
159
 			})
165
 			On("EventIPBlocklisted", mock.Anything).
171
 			On("EventIPBlocklisted", mock.Anything).
166
 			Once().
172
 			Once().
167
 			Run(func(args mock.Arguments) {
173
 			Run(func(args mock.Arguments) {
168
-				caught := args.Get(0).(mtglib.EventIPBlocklisted)
174
+				caught, ok := args.Get(0).(mtglib.EventIPBlocklisted)
169
 
175
 
176
+				suite.True(ok)
170
 				suite.Equal(evt.StreamID(), caught.StreamID())
177
 				suite.Equal(evt.StreamID(), caught.StreamID())
171
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
178
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
172
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
179
 				suite.Equal(evt.RemoteIP.String(), caught.RemoteIP.String())
185
 			On("EventReplayAttack", mock.Anything).
192
 			On("EventReplayAttack", mock.Anything).
186
 			Once().
193
 			Once().
187
 			Run(func(args mock.Arguments) {
194
 			Run(func(args mock.Arguments) {
188
-				caught := args.Get(0).(mtglib.EventReplayAttack)
195
+				caught, ok := args.Get(0).(mtglib.EventReplayAttack)
189
 
196
 
197
+				suite.True(ok)
190
 				suite.Equal(evt.StreamID(), caught.StreamID())
198
 				suite.Equal(evt.StreamID(), caught.StreamID())
191
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
199
 				suite.Equal(evt.Timestamp(), caught.Timestamp())
192
 			})
200
 			})

+ 4
- 2
go.mod Просмотреть файл

9
 	github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
9
 	github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
10
 	github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6
10
 	github.com/babolivier/go-doh-client v0.0.0-20201028162107-a76cff4cb8b6
11
 	github.com/d4l3k/messagediff v1.2.1 // indirect
11
 	github.com/d4l3k/messagediff v1.2.1 // indirect
12
+	github.com/google/go-cmp v0.5.5 // indirect
12
 	github.com/jarcoal/httpmock v1.0.8
13
 	github.com/jarcoal/httpmock v1.0.8
13
 	github.com/kentik/patricia v0.0.0-20201202224819-f9447a6e25f1
14
 	github.com/kentik/patricia v0.0.0-20201202224819-f9447a6e25f1
14
 	github.com/libp2p/go-reuseport v0.0.2
15
 	github.com/libp2p/go-reuseport v0.0.2
23
 	github.com/tylertreat/BoomFilters v0.0.0-20200520150052-42a7b4300c0c
24
 	github.com/tylertreat/BoomFilters v0.0.0-20200520150052-42a7b4300c0c
24
 	github.com/xeipuuv/gojsonschema v1.2.0
25
 	github.com/xeipuuv/gojsonschema v1.2.0
25
 	golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2
26
 	golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2
26
-	golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
27
-	golang.org/x/sys v0.0.0-20210309074719-68d13333faf2
27
+	golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
28
+	golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57
29
+	golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
28
 )
30
 )

+ 9
- 5
go.sum Просмотреть файл

102
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
102
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
103
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
103
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
104
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
104
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
105
-github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
106
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
105
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
106
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
107
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
107
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
108
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
108
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
109
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
109
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
110
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
351
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
352
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
352
 golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
353
 golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
353
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
354
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
354
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
355
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
355
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
356
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
357
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
356
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
358
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
357
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
359
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
358
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
360
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
383
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
385
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
384
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
386
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
385
 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
387
 golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
386
-golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEqqNCi8rreOZnNrbqcIY=
387
-golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
388
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
389
+golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A=
390
+golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
388
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
391
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
389
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
392
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
390
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
393
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
407
 golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
410
 golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
408
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
411
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
409
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
412
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
410
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
411
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
413
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
414
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
415
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
412
 google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
416
 google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
413
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
417
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
414
 google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
418
 google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=

+ 1
- 1
internal/cli/access.go Просмотреть файл

102
 
102
 
103
 func (c *Access) getIP(protocol string) net.IP {
103
 func (c *Access) getIP(protocol string) net.IP {
104
 	client := c.Network.MakeHTTPClient(func(ctx context.Context, network, address string) (net.Conn, error) {
104
 	client := c.Network.MakeHTTPClient(func(ctx context.Context, network, address string) (net.Conn, error) {
105
-		return c.Network.DialContext(ctx, protocol, address)
105
+		return c.Network.DialContext(ctx, protocol, address) // nolint: wrapcheck
106
 	})
106
 	})
107
 
107
 
108
 	req, err := http.NewRequest(http.MethodGet, "https://ifconfig.co", nil) // nolint: noctx
108
 	req, err := http.NewRequest(http.MethodGet, "https://ifconfig.co", nil) // nolint: noctx

+ 3
- 3
internal/cli/base.go Просмотреть файл

62
 
62
 
63
 	switch len(proxyURLs) {
63
 	switch len(proxyURLs) {
64
 	case 0:
64
 	case 0:
65
-		return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout)
65
+		return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck
66
 	case 1:
66
 	case 1:
67
 		socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
67
 		socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
68
 		if err != nil {
68
 		if err != nil {
69
 			return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
69
 			return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
70
 		}
70
 		}
71
 
71
 
72
-		return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout)
72
+		return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck
73
 	}
73
 	}
74
 
74
 
75
 	socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
75
 	socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
77
 		return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
77
 		return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
78
 	}
78
 	}
79
 
79
 
80
-	return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout)
80
+	return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout) // nolint: wrapcheck
81
 }
81
 }

+ 2
- 2
internal/testlib/mtglib_network_mock.go Просмотреть файл

15
 func (m *MtglibNetworkMock) Dial(network, address string) (net.Conn, error) {
15
 func (m *MtglibNetworkMock) Dial(network, address string) (net.Conn, error) {
16
 	args := m.Called(network, address)
16
 	args := m.Called(network, address)
17
 
17
 
18
-	return args.Get(0).(net.Conn), args.Error(1)
18
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
19
 }
19
 }
20
 
20
 
21
 func (m *MtglibNetworkMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
21
 func (m *MtglibNetworkMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
22
 	args := m.Called(ctx, network, address)
22
 	args := m.Called(ctx, network, address)
23
 
23
 
24
-	return args.Get(0).(net.Conn), args.Error(1)
24
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
25
 }
25
 }
26
 
26
 
27
 func (m *MtglibNetworkMock) MakeHTTPClient(dialFunc func(ctx context.Context,
27
 func (m *MtglibNetworkMock) MakeHTTPClient(dialFunc func(ctx context.Context,

+ 4
- 4
internal/testlib/net_conn_mock.go Просмотреть файл

24
 }
24
 }
25
 
25
 
26
 func (n *NetConnMock) Close() error {
26
 func (n *NetConnMock) Close() error {
27
-	return n.Called().Error(0)
27
+	return n.Called().Error(0) // nolint: wrapcheck
28
 }
28
 }
29
 
29
 
30
 func (n *NetConnMock) LocalAddr() net.Addr {
30
 func (n *NetConnMock) LocalAddr() net.Addr {
36
 }
36
 }
37
 
37
 
38
 func (n *NetConnMock) SetDeadline(t time.Time) error {
38
 func (n *NetConnMock) SetDeadline(t time.Time) error {
39
-	return n.Called(t).Error(0)
39
+	return n.Called(t).Error(0) // nolint: wrapcheck
40
 }
40
 }
41
 
41
 
42
 func (n *NetConnMock) SetReadDeadline(t time.Time) error {
42
 func (n *NetConnMock) SetReadDeadline(t time.Time) error {
43
-	return n.Called(t).Error(0)
43
+	return n.Called(t).Error(0) // nolint: wrapcheck
44
 }
44
 }
45
 
45
 
46
 func (n *NetConnMock) SetWriteDeadline(t time.Time) error {
46
 func (n *NetConnMock) SetWriteDeadline(t time.Time) error {
47
-	return n.Called(t).Error(0)
47
+	return n.Called(t).Error(0) // nolint: wrapcheck
48
 }
48
 }

+ 1
- 3
ipblocklist/firehol.go Просмотреть файл

68
 		return true
68
 		return true
69
 	}
69
 	}
70
 
70
 
71
-	ip4 := ip.To4()
72
-
73
 	f.rwMutex.RLock()
71
 	f.rwMutex.RLock()
74
 	defer f.rwMutex.RUnlock()
72
 	defer f.rwMutex.RUnlock()
75
 
73
 
76
-	if ip4 != nil {
74
+	if ip4 := ip.To4(); ip4 != nil {
77
 		return f.containsIPv4(ip4)
75
 		return f.containsIPv4(ip4)
78
 	}
76
 	}
79
 
77
 

+ 1
- 1
mtglib/conns.go Просмотреть файл

48
 	c.mutex.RLock()
48
 	c.mutex.RLock()
49
 	defer c.mutex.RUnlock()
49
 	defer c.mutex.RUnlock()
50
 
50
 
51
-	return c.active.Read(p)
51
+	return c.active.Read(p) // nolint: wrapcheck
52
 }
52
 }
53
 
53
 
54
 func (c *connRewind) Rewind() {
54
 func (c *connRewind) Rewind() {

+ 11
- 7
mtglib/conns_internal_test.go Просмотреть файл

22
 func (c *ConnRewindBaseConn) Read(p []byte) (int, error) {
22
 func (c *ConnRewindBaseConn) Read(p []byte) (int, error) {
23
 	c.Called(p)
23
 	c.Called(p)
24
 
24
 
25
-	return c.readBuffer.Read(p)
25
+	return c.readBuffer.Read(p) // nolint: wrapcheck
26
 }
26
 }
27
 
27
 
28
 type ConnTrafficTestSuite struct {
28
 type ConnTrafficTestSuite struct {
54
 		On("Send", mock.Anything, mock.Anything).
54
 		On("Send", mock.Anything, mock.Anything).
55
 		Once().
55
 		Once().
56
 		Run(func(args mock.Arguments) {
56
 		Run(func(args mock.Arguments) {
57
-			evt := args.Get(1).(EventTraffic)
57
+			evt, ok := args.Get(1).(EventTraffic)
58
 
58
 
59
+			suite.True(ok)
59
 			suite.Equal("CONNID", evt.StreamID())
60
 			suite.Equal("CONNID", evt.StreamID())
60
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
61
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
61
 			suite.EqualValues(10, evt.Traffic)
62
 			suite.EqualValues(10, evt.Traffic)
68
 	suite.Equal(10, n)
69
 	suite.Equal(10, n)
69
 }
70
 }
70
 
71
 
71
-func (suite *ConnTrafficTestSuite) TestReadErr() {
72
+func (suite *ConnTrafficTestSuite) TestReadErr() { // nolint: dupl
72
 	suite.eventStreamMock.
73
 	suite.eventStreamMock.
73
 		On("Send", mock.Anything, mock.Anything).
74
 		On("Send", mock.Anything, mock.Anything).
74
 		Once().
75
 		Once().
75
 		Run(func(args mock.Arguments) {
76
 		Run(func(args mock.Arguments) {
76
-			evt := args.Get(1).(EventTraffic)
77
+			evt, ok := args.Get(1).(EventTraffic)
77
 
78
 
79
+			suite.True(ok)
78
 			suite.Equal("CONNID", evt.StreamID())
80
 			suite.Equal("CONNID", evt.StreamID())
79
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
81
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
80
 			suite.EqualValues(10, evt.Traffic)
82
 			suite.EqualValues(10, evt.Traffic)
108
 		On("Send", mock.Anything, mock.Anything).
110
 		On("Send", mock.Anything, mock.Anything).
109
 		Once().
111
 		Once().
110
 		Run(func(args mock.Arguments) {
112
 		Run(func(args mock.Arguments) {
111
-			evt := args.Get(1).(EventTraffic)
113
+			evt, ok := args.Get(1).(EventTraffic)
112
 
114
 
115
+			suite.True(ok)
113
 			suite.Equal("CONNID", evt.StreamID())
116
 			suite.Equal("CONNID", evt.StreamID())
114
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
117
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
115
 			suite.EqualValues(10, evt.Traffic)
118
 			suite.EqualValues(10, evt.Traffic)
122
 	suite.Equal(10, n)
125
 	suite.Equal(10, n)
123
 }
126
 }
124
 
127
 
125
-func (suite *ConnTrafficTestSuite) TestWriteErr() {
128
+func (suite *ConnTrafficTestSuite) TestWriteErr() { // nolint: dupl
126
 	suite.eventStreamMock.
129
 	suite.eventStreamMock.
127
 		On("Send", mock.Anything, mock.Anything).
130
 		On("Send", mock.Anything, mock.Anything).
128
 		Once().
131
 		Once().
129
 		Run(func(args mock.Arguments) {
132
 		Run(func(args mock.Arguments) {
130
-			evt := args.Get(1).(EventTraffic)
133
+			evt, ok := args.Get(1).(EventTraffic)
131
 
134
 
135
+			suite.True(ok)
132
 			suite.Equal("CONNID", evt.StreamID())
136
 			suite.Equal("CONNID", evt.StreamID())
133
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
137
 			suite.WithinDuration(time.Now(), evt.Timestamp(), time.Second)
134
 			suite.EqualValues(10, evt.Traffic)
138
 			suite.EqualValues(10, evt.Traffic)

+ 1
- 1
mtglib/internal/faketls/conn.go Просмотреть файл

32
 		case record.TypeApplicationData:
32
 		case record.TypeApplicationData:
33
 			rec.Payload.WriteTo(&c.readBuffer) // nolint: errcheck
33
 			rec.Payload.WriteTo(&c.readBuffer) // nolint: errcheck
34
 
34
 
35
-			return c.readBuffer.Read(p)
35
+			return c.readBuffer.Read(p) // nolint: wrapcheck
36
 		case record.TypeChangeCipherSpec:
36
 		case record.TypeChangeCipherSpec:
37
 		default:
37
 		default:
38
 			return 0, fmt.Errorf("unsupported record type %v", rec.Type)
38
 			return 0, fmt.Errorf("unsupported record type %v", rec.Type)

+ 2
- 2
mtglib/internal/faketls/conn_test.go Просмотреть файл

24
 func (m *ConnMock) Read(p []byte) (int, error) {
24
 func (m *ConnMock) Read(p []byte) (int, error) {
25
 	m.Called(p)
25
 	m.Called(p)
26
 
26
 
27
-	return m.readBuffer.Read(p)
27
+	return m.readBuffer.Read(p) // nolint: wrapcheck
28
 }
28
 }
29
 
29
 
30
 func (m *ConnMock) Write(p []byte) (int, error) {
30
 func (m *ConnMock) Write(p []byte) (int, error) {
31
 	m.Called(p)
31
 	m.Called(p)
32
 
32
 
33
-	return m.writeBuffer.Write(p)
33
+	return m.writeBuffer.Write(p) // nolint: wrapcheck
34
 }
34
 }
35
 
35
 
36
 type ConnTestSuite struct {
36
 type ConnTestSuite struct {

+ 2
- 2
mtglib/internal/faketls/welcome.go Просмотреть файл

45
 	packet := buf.Bytes()
45
 	packet := buf.Bytes()
46
 	mac := hmac.New(sha256.New, secret)
46
 	mac := hmac.New(sha256.New, secret)
47
 
47
 
48
-	mac.Write(clientHello.Random[:]) // nolint: errcheck
49
-	mac.Write(packet)                // nolint: errcheck
48
+	mac.Write(clientHello.Random[:])
49
+	mac.Write(packet)
50
 
50
 
51
 	copy(packet[WelcomePacketRandomOffset:], mac.Sum(nil))
51
 	copy(packet[WelcomePacketRandomOffset:], mac.Sum(nil))
52
 
52
 

+ 2
- 2
mtglib/internal/faketls/welcome_test.go Просмотреть файл

70
 	copy(welcomePacket[11:], empty)
70
 	copy(welcomePacket[11:], empty)
71
 
71
 
72
 	mac := hmac.New(sha256.New, suite.secret.Key[:])
72
 	mac := hmac.New(sha256.New, suite.secret.Key[:])
73
-	mac.Write(suite.h.Random[:]) // nolint: errcheck
74
-	mac.Write(welcomePacket)     // nolint: errcheck
73
+	mac.Write(suite.h.Random[:])
74
+	mac.Write(welcomePacket)
75
 
75
 
76
 	suite.Equal(random, mac.Sum(nil))
76
 	suite.Equal(random, mac.Sum(nil))
77
 }
77
 }

+ 4
- 4
mtglib/internal/obfuscated2/client_handshake.go Просмотреть файл

16
 	hasher := acquireSha256Hasher()
16
 	hasher := acquireSha256Hasher()
17
 	defer releaseSha256Hasher(hasher)
17
 	defer releaseSha256Hasher(hasher)
18
 
18
 
19
-	hasher.Write(c.key()) // nolint: errcheck
20
-	hasher.Write(secret)  // nolint: errcheck
19
+	hasher.Write(c.key())
20
+	hasher.Write(secret)
21
 
21
 
22
 	return makeAesCtr(hasher.Sum(nil), c.iv())
22
 	return makeAesCtr(hasher.Sum(nil), c.iv())
23
 }
23
 }
28
 	hasher := acquireSha256Hasher()
28
 	hasher := acquireSha256Hasher()
29
 	defer releaseSha256Hasher(hasher)
29
 	defer releaseSha256Hasher(hasher)
30
 
30
 
31
-	hasher.Write(invertedHandshake.key()) // nolint: errcheck
32
-	hasher.Write(secret)                  // nolint: errcheck
31
+	hasher.Write(invertedHandshake.key())
32
+	hasher.Write(secret)
33
 
33
 
34
 	return makeAesCtr(hasher.Sum(nil), invertedHandshake.iv())
34
 	return makeAesCtr(hasher.Sum(nil), invertedHandshake.iv())
35
 }
35
 }

+ 6
- 2
mtglib/internal/obfuscated2/client_handshake_test.go Просмотреть файл

47
 				Once().
47
 				Once().
48
 				Return(len(snapshot.Decrypted.Text.data), nil).
48
 				Return(len(snapshot.Decrypted.Text.data), nil).
49
 				Run(func(args mock.Arguments) {
49
 				Run(func(args mock.Arguments) {
50
-					arr := args.Get(0).([]byte)
50
+					arr, ok := args.Get(0).([]byte)
51
+
52
+					suite.True(ok)
51
 					copy(arr, snapshot.Decrypted.Cipher.data)
53
 					copy(arr, snapshot.Decrypted.Cipher.data)
52
 				})
54
 				})
53
 			connMock.On("Write", mock.Anything).
55
 			connMock.On("Write", mock.Anything).
54
 				Once().
56
 				Once().
55
 				Return(len(snapshot.Encrypted.Text.data), nil).
57
 				Return(len(snapshot.Encrypted.Text.data), nil).
56
 				Run(func(args mock.Arguments) {
58
 				Run(func(args mock.Arguments) {
57
-					arr := args.Get(0).([]byte)
59
+					arr, ok := args.Get(0).([]byte)
60
+
61
+					suite.True(ok)
58
 					copy(writeData, arr)
62
 					copy(writeData, arr)
59
 				})
63
 				})
60
 
64
 

+ 1
- 1
mtglib/internal/obfuscated2/conn.go Просмотреть файл

32
 	payload := buf.Bytes()
32
 	payload := buf.Bytes()
33
 	c.Encryptor.XORKeyStream(payload, payload)
33
 	c.Encryptor.XORKeyStream(payload, payload)
34
 
34
 
35
-	return c.Conn.Write(payload)
35
+	return c.Conn.Write(payload) // nolint: wrapcheck
36
 }
36
 }

+ 2
- 2
mtglib/internal/relay/init_test.go Просмотреть файл

25
 		return 0, io.EOF
25
 		return 0, io.EOF
26
 	}
26
 	}
27
 
27
 
28
-	return r.Buffer.Read(p)
28
+	return r.Buffer.Read(p) // nolint: wrapcheck
29
 }
29
 }
30
 
30
 
31
 func (r *rwcMock) Write(p []byte) (int, error) {
31
 func (r *rwcMock) Write(p []byte) (int, error) {
36
 		return 0, io.EOF
36
 		return 0, io.EOF
37
 	}
37
 	}
38
 
38
 
39
-	return r.Buffer.Write(p)
39
+	return r.Buffer.Write(p) // nolint: wrapcheck
40
 }
40
 }
41
 
41
 
42
 func (r *rwcMock) Close() error {
42
 func (r *rwcMock) Close() error {

+ 5
- 1
mtglib/internal/relay/pools.go Просмотреть файл

18
 func AcquireRelay(ctx context.Context, logger Logger, bufferSize int, idleTimeout time.Duration) *Relay {
18
 func AcquireRelay(ctx context.Context, logger Logger, bufferSize int, idleTimeout time.Duration) *Relay {
19
 	ctx, cancel := context.WithCancel(ctx)
19
 	ctx, cancel := context.WithCancel(ctx)
20
 
20
 
21
-	r := relayPool.Get().(*Relay)
21
+	r, ok := relayPool.Get().(*Relay)
22
+	if !ok {
23
+		panic("Relay pool has no relay!")
24
+	}
25
+
22
 	r.ctx = ctx
26
 	r.ctx = ctx
23
 	r.ctxCancel = cancel
27
 	r.ctxCancel = cancel
24
 	r.logger = logger
28
 	r.logger = logger

+ 1
- 1
mtglib/stream_context.go Просмотреть файл

27
 }
27
 }
28
 
28
 
29
 func (s *streamContext) Err() error {
29
 func (s *streamContext) Err() error {
30
-	return s.ctx.Err()
30
+	return s.ctx.Err() // nolint: wrapcheck
31
 }
31
 }
32
 
32
 
33
 func (s *streamContext) Value(key interface{}) interface{} {
33
 func (s *streamContext) Value(key interface{}) interface{} {

+ 3
- 3
network/circuit_breaker.go Просмотреть файл

56
 			conn.Close()
56
 			conn.Close()
57
 		}
57
 		}
58
 
58
 
59
-		return nil, ctx.Err()
59
+		return nil, ctx.Err() // nolint: wrapcheck
60
 	case c.stateMutexChan <- true:
60
 	case c.stateMutexChan <- true:
61
 		defer func() {
61
 		defer func() {
62
 			<-c.stateMutexChan
62
 			<-c.stateMutexChan
66
 	if err == nil {
66
 	if err == nil {
67
 		c.switchState(circuitBreakerStateClosed)
67
 		c.switchState(circuitBreakerStateClosed)
68
 
68
 
69
-		return conn, err // nolint: wrapcheck
69
+		return conn, nil
70
 	}
70
 	}
71
 
71
 
72
 	c.failuresCount++
72
 	c.failuresCount++
91
 			conn.Close()
91
 			conn.Close()
92
 		}
92
 		}
93
 
93
 
94
-		return nil, ctx.Err()
94
+		return nil, ctx.Err() // nolint: wrapcheck
95
 	case c.stateMutexChan <- true:
95
 	case c.stateMutexChan <- true:
96
 		defer func() {
96
 		defer func() {
97
 			<-c.stateMutexChan
97
 			<-c.stateMutexChan

+ 4
- 1
network/default.go Просмотреть файл

31
 		return nil, fmt.Errorf("cannot dial to %s: %w", address, err)
31
 		return nil, fmt.Errorf("cannot dial to %s: %w", address, err)
32
 	}
32
 	}
33
 
33
 
34
-	tcpConn := conn.(*net.TCPConn)
34
+	tcpConn, ok := conn.(*net.TCPConn)
35
+	if !ok {
36
+		panic("conn type is not tcp")
37
+	}
35
 
38
 
36
 	if err := tcpConn.SetNoDelay(true); err != nil {
39
 	if err := tcpConn.SetNoDelay(true); err != nil {
37
 		conn.Close()
40
 		conn.Close()

+ 2
- 2
network/init_internal_test.go Просмотреть файл

14
 func (d *DialerMock) Dial(network, address string) (net.Conn, error) {
14
 func (d *DialerMock) Dial(network, address string) (net.Conn, error) {
15
 	args := d.Called(network, address)
15
 	args := d.Called(network, address)
16
 
16
 
17
-	return args.Get(0).(net.Conn), args.Error(1)
17
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
18
 }
18
 }
19
 
19
 
20
 func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
20
 func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
21
 	args := d.Called(ctx, network, address)
21
 	args := d.Called(ctx, network, address)
22
 
22
 
23
-	return args.Get(0).(net.Conn), args.Error(1)
23
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
24
 }
24
 }

+ 2
- 2
network/init_test.go Просмотреть файл

21
 func (d *DialerMock) Dial(network, address string) (net.Conn, error) {
21
 func (d *DialerMock) Dial(network, address string) (net.Conn, error) {
22
 	args := d.Called(network, address)
22
 	args := d.Called(network, address)
23
 
23
 
24
-	return args.Get(0).(net.Conn), args.Error(1)
24
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
25
 }
25
 }
26
 
26
 
27
 func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
27
 func (d *DialerMock) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
28
 	args := d.Called(ctx, network, address)
28
 	args := d.Called(ctx, network, address)
29
 
29
 
30
-	return args.Get(0).(net.Conn), args.Error(1)
30
+	return args.Get(0).(net.Conn), args.Error(1) // nolint: wrapcheck
31
 }
31
 }
32
 
32
 
33
 type HTTPServerTestSuite struct {
33
 type HTTPServerTestSuite struct {

+ 1
- 1
network/network.go Просмотреть файл

20
 func (n networkHTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) {
20
 func (n networkHTTPTransport) RoundTrip(req *http.Request) (*http.Response, error) {
21
 	req.Header.Set("User-Agent", n.userAgent)
21
 	req.Header.Set("User-Agent", n.userAgent)
22
 
22
 
23
-	return n.next.RoundTrip(req)
23
+	return n.next.RoundTrip(req) // nolint: wrapcheck
24
 }
24
 }
25
 
25
 
26
 type network struct {
26
 type network struct {

+ 5
- 5
network/proxy_dialer_internal_test.go Просмотреть файл

21
 }
21
 }
22
 
22
 
23
 func (suite *ProxyDialerTestSuite) TestSetupDefaults() {
23
 func (suite *ProxyDialerTestSuite) TestSetupDefaults() {
24
-	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
24
+	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert
25
 	suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
25
 	suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
26
 	suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
26
 	suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
27
 	suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout)
27
 	suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout)
34
 	query.Set("half_open_timeout", "2s")
34
 	query.Set("half_open_timeout", "2s")
35
 	suite.u.RawQuery = query.Encode()
35
 	suite.u.RawQuery = query.Encode()
36
 
36
 
37
-	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
37
+	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert
38
 	suite.EqualValues(30, d.openThreshold)
38
 	suite.EqualValues(30, d.openThreshold)
39
 	suite.EqualValues(2*time.Second, d.halfOpenTimeout)
39
 	suite.EqualValues(2*time.Second, d.halfOpenTimeout)
40
 	suite.EqualValues(time.Second, d.resetFailuresTimeout)
40
 	suite.EqualValues(time.Second, d.resetFailuresTimeout)
50
 			query.Set("open_threshold", param)
50
 			query.Set("open_threshold", param)
51
 			suite.u.RawQuery = query.Encode()
51
 			suite.u.RawQuery = query.Encode()
52
 
52
 
53
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
53
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert
54
 			assert.EqualValues(t, ProxyDialerOpenThreshold, d.openThreshold)
54
 			assert.EqualValues(t, ProxyDialerOpenThreshold, d.openThreshold)
55
 		})
55
 		})
56
 	}
56
 	}
66
 			query.Set("half_open_timeout", param)
66
 			query.Set("half_open_timeout", param)
67
 			suite.u.RawQuery = query.Encode()
67
 			suite.u.RawQuery = query.Encode()
68
 
68
 
69
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
69
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert
70
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
70
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
71
 		})
71
 		})
72
 	}
72
 	}
82
 			query.Set("reset_failures_timeout", param)
82
 			query.Set("reset_failures_timeout", param)
83
 			suite.u.RawQuery = query.Encode()
83
 			suite.u.RawQuery = query.Encode()
84
 
84
 
85
-			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
85
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer) // nolint: forcetypeassert
86
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
86
 			assert.EqualValues(t, ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
87
 		})
87
 		})
88
 	}
88
 	}

+ 2
- 2
stats/prometheus.go Просмотреть файл

158
 
158
 
159
 // Serve starts an HTTP server on a given listener.
159
 // Serve starts an HTTP server on a given listener.
160
 func (p *PrometheusFactory) Serve(listener net.Listener) error {
160
 func (p *PrometheusFactory) Serve(listener net.Listener) error {
161
-	return p.httpServer.Serve(listener)
161
+	return p.httpServer.Serve(listener) // nolint: wrapcheck
162
 }
162
 }
163
 
163
 
164
 // Close stops a factory. Please pay attention that underlying listener
164
 // Close stops a factory. Please pay attention that underlying listener
165
 // is not closed.
165
 // is not closed.
166
 func (p *PrometheusFactory) Close() error {
166
 func (p *PrometheusFactory) Close() error {
167
-	return p.httpServer.Shutdown(context.Background())
167
+	return p.httpServer.Shutdown(context.Background()) // nolint: wrapcheck
168
 }
168
 }
169
 
169
 
170
 // NewPrometheus builds an events.ObserverFactory which can serve HTTP
170
 // NewPrometheus builds an events.ObserverFactory which can serve HTTP

+ 1
- 1
stats/statsd.go Просмотреть файл

146
 
146
 
147
 // Close stops sending requests to statsd.
147
 // Close stops sending requests to statsd.
148
 func (s StatsdFactory) Close() error {
148
 func (s StatsdFactory) Close() error {
149
-	return s.client.Close()
149
+	return s.client.Close() // nolint: wrapcheck
150
 }
150
 }
151
 
151
 
152
 // Make build a new observer.
152
 // Make build a new observer.

+ 1
- 1
stats/statsd_test.go Просмотреть файл

30
 
30
 
31
 func (s *statsdFakeServer) Close() error {
31
 func (s *statsdFakeServer) Close() error {
32
 	if s.conn != nil {
32
 	if s.conn != nil {
33
-		return s.conn.Close()
33
+		return s.conn.Close() // nolint: wrapcheck
34
 	}
34
 	}
35
 
35
 
36
 	return nil
36
 	return nil

Загрузка…
Отмена
Сохранить