diff --git a/cmd/infra/strelaypoolsrv/main.go b/cmd/infra/strelaypoolsrv/main.go index 7938105d4..9950aab62 100644 --- a/cmd/infra/strelaypoolsrv/main.go +++ b/cmd/infra/strelaypoolsrv/main.go @@ -162,7 +162,7 @@ func main() { testCert = createTestCertificate() - for i := 0; i < requestProcessors; i++ { + for range requestProcessors { go requestProcessor(geoip) } diff --git a/cmd/infra/ursrv/serve/prometheus.go b/cmd/infra/ursrv/serve/prometheus.go index 42e3e9903..bc42646c6 100644 --- a/cmd/infra/ursrv/serve/prometheus.go +++ b/cmd/infra/ursrv/serve/prometheus.go @@ -47,7 +47,7 @@ func newMetricsSet(srv *server) *metricsSet { var initForType func(reflect.Type) initForType = func(t reflect.Type) { - for i := 0; i < t.NumField(); i++ { + for i := range t.NumField() { field := t.Field(i) if field.Type.Kind() == reflect.Struct { initForType(field.Type) @@ -175,7 +175,7 @@ func (s *metricsSet) addReport(r *contract.Report) { func (s *metricsSet) addReportStruct(v reflect.Value, gaugeVecs map[string][]string) { t := v.Type() - for i := 0; i < v.NumField(); i++ { + for i := range v.NumField() { field := v.Field(i) if field.Kind() == reflect.Struct { s.addReportStruct(field, gaugeVecs) diff --git a/cmd/strelaysrv/status.go b/cmd/strelaysrv/status.go index b5437ceb1..622ac4e4a 100644 --- a/cmd/strelaysrv/status.go +++ b/cmd/strelaysrv/status.go @@ -122,7 +122,7 @@ func (r *rateCalculator) updateRates(interval time.Duration) { func (r *rateCalculator) rate(periods int) int64 { var tot int64 - for i := 0; i < periods; i++ { + for i := range periods { tot += r.rates[i] } return tot / int64(periods) diff --git a/lib/api/api_auth.go b/lib/api/api_auth.go index 90ad9a2e6..4e9712fb3 100644 --- a/lib/api/api_auth.go +++ b/lib/api/api_auth.go @@ -337,7 +337,7 @@ func formatOptionalPercentS(template string, username string) string { if nReps < 0 { nReps = 0 } - for i := 0; i < nReps; i++ { + for range nReps { replacements = append(replacements, username) } return fmt.Sprintf(template, replacements...) diff --git a/lib/config/config.go b/lib/config/config.go index 3dd58b0ef..cf409029a 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -684,7 +684,7 @@ func copyMatchingTag(from interface{}, to interface{}, tag string, shouldCopy fu panic(fmt.Sprintf("non equal types: %s != %s", fromType, toType)) } - for i := 0; i < toStruct.NumField(); i++ { + for i := range toStruct.NumField() { fromField := fromStruct.Field(i) toField := toStruct.Field(i) diff --git a/lib/events/events.go b/lib/events/events.go index 8b5df3e0b..5712045e3 100644 --- a/lib/events/events.go +++ b/lib/events/events.go @@ -524,7 +524,7 @@ func (s *bufferedSubscription) Since(id int, into []Event, timeout time.Duration into = append(into, s.buf[i]) } } - for i := 0; i < s.next; i++ { + for i := range s.next { if s.buf[i].SubscriptionID > id { into = append(into, s.buf[i]) } diff --git a/lib/nat/service.go b/lib/nat/service.go index 59646a261..112bc46e1 100644 --- a/lib/nat/service.go +++ b/lib/nat/service.go @@ -356,7 +356,7 @@ func (s *Service) tryNATDevice(ctx context.Context, natd Device, intAddr Address l.Debugf("Error extending lease on %v (external port %d -> internal port %d): %v", natd.ID(), extPort, intAddr.Port, err) } - for i := 0; i < 10; i++ { + for range 10 { select { case <-ctx.Done(): return []Address{}, ctx.Err() diff --git a/lib/osutil/tempfile.go b/lib/osutil/tempfile.go index c63bc176c..c1388fcca 100644 --- a/lib/osutil/tempfile.go +++ b/lib/osutil/tempfile.go @@ -48,7 +48,7 @@ func nextSuffix() string { // to remove the file when no longer needed. func TempFile(filesystem fs.Filesystem, dir, prefix string) (f fs.File, err error) { nconflict := 0 - for i := 0; i < 10000; i++ { + for range 10000 { name := filepath.Join(dir, prefix+nextSuffix()) f, err = filesystem.OpenFile(name, fs.OptReadWrite|fs.OptCreate|fs.OptExclusive, 0o600) if fs.IsExist(err) { diff --git a/lib/protocol/deviceid.go b/lib/protocol/deviceid.go index 950712d69..da2a3fc24 100644 --- a/lib/protocol/deviceid.go +++ b/lib/protocol/deviceid.go @@ -181,7 +181,7 @@ func luhnify(s string) (string, error) { } res := make([]byte, 4*(13+1)) - for i := 0; i < 4; i++ { + for i := range 4 { p := s[i*13 : (i+1)*13] copy(res[i*(13+1):], p) l, err := luhn32(p) @@ -199,7 +199,7 @@ func unluhnify(s string) (string, error) { } res := make([]byte, 52) - for i := 0; i < 4; i++ { + for i := range 4 { p := s[i*(13+1) : (i+1)*(13+1)-1] copy(res[i*13:], p) l, err := luhn32(p) @@ -216,7 +216,7 @@ func unluhnify(s string) (string, error) { func chunkify(s string) string { chunks := len(s) / 7 res := make([]byte, chunks*(7+1)-1) - for i := 0; i < chunks; i++ { + for i := range chunks { if i > 0 { res[i*(7+1)-1] = '-' } diff --git a/lib/rand/random.go b/lib/rand/random.go index d596aec12..0e4f0c5cc 100644 --- a/lib/rand/random.go +++ b/lib/rand/random.go @@ -41,7 +41,7 @@ func String(l int) string { var sb strings.Builder sb.Grow(l) - for i := 0; i < l; i++ { + for range l { sb.WriteByte(randomCharset[defaultSecureRand.Intn(len(randomCharset))]) } return sb.String() diff --git a/lib/relay/client/methods.go b/lib/relay/client/methods.go index fb320ba30..04594c42b 100644 --- a/lib/relay/client/methods.go +++ b/lib/relay/client/methods.go @@ -132,7 +132,7 @@ func TestRelay(ctx context.Context, uri *url.URL, certs []tls.Certificate, sleep }() defer cancel() - for i := 0; i < times; i++ { + for range times { _, err = GetInvitationFromRelay(ctx, uri, id, certs, timeout) if err == nil { return nil diff --git a/lib/scanner/blockqueue.go b/lib/scanner/blockqueue.go index 97e4799e9..2592ba405 100644 --- a/lib/scanner/blockqueue.go +++ b/lib/scanner/blockqueue.go @@ -84,7 +84,7 @@ func newParallelHasher(ctx context.Context, folderID string, fs fs.Filesystem, w } ph.wg.Add(workers) - for i := 0; i < workers; i++ { + for range workers { go ph.hashFiles(ctx) } diff --git a/lib/structutil/structutil.go b/lib/structutil/structutil.go index e60a440f2..b84e89924 100644 --- a/lib/structutil/structutil.go +++ b/lib/structutil/structutil.go @@ -93,7 +93,7 @@ func FillNil(data any) { func fillNil(data any, skipDeprecated bool) { s := reflect.ValueOf(data).Elem() t := s.Type() - for i := 0; i < s.NumField(); i++ { + for i := range s.NumField() { if skipDeprecated && strings.HasPrefix(t.Field(i).Name, "Deprecated") { continue } @@ -123,7 +123,7 @@ func fillNil(data any, skipDeprecated bool) { if f.Type().Elem().Kind() != reflect.Struct { continue } - for i := 0; i < f.Len(); i++ { + for i := range f.Len() { fillNil(f.Index(i).Addr().Interface(), skipDeprecated) } case reflect.Struct: @@ -142,7 +142,7 @@ func FillNilSlices(data any) error { s := reflect.ValueOf(data).Elem() t := s.Type() - for i := 0; i < s.NumField(); i++ { + for i := range s.NumField() { f := s.Field(i) tag := t.Field(i).Tag diff --git a/lib/upgrade/upgrade_common.go b/lib/upgrade/upgrade_common.go index 8d1479e5e..b0483546f 100644 --- a/lib/upgrade/upgrade_common.go +++ b/lib/upgrade/upgrade_common.go @@ -119,7 +119,7 @@ func CompareVersions(a, b string) Relation { } // First compare major-minor-patch versions - for i := 0; i < minlen; i++ { + for i := range minlen { if arel[i] < brel[i] { if i == 0 { // major version difference @@ -168,7 +168,7 @@ func CompareVersions(a, b string) Relation { } // Compare prerelease strings - for i := 0; i < minlen; i++ { + for i := range minlen { switch av := apre[i].(type) { case int: switch bv := bpre[i].(type) { diff --git a/lib/ur/contract/contract.go b/lib/ur/contract/contract.go index 7a9b1bb60..70b4e9834 100644 --- a/lib/ur/contract/contract.go +++ b/lib/ur/contract/contract.go @@ -249,7 +249,7 @@ func clear(v interface{}, since int) error { s := reflect.ValueOf(v).Elem() t := s.Type() - for i := 0; i < s.NumField(); i++ { + for i := range s.NumField() { f := s.Field(i) tag := t.Field(i).Tag diff --git a/lib/ur/usage_report.go b/lib/ur/usage_report.go index d654c0adc..eb7edca8a 100644 --- a/lib/ur/usage_report.go +++ b/lib/ur/usage_report.go @@ -436,7 +436,7 @@ func CpuBench(ctx context.Context, iterations int, duration time.Duration) float r.Read(bs) var perf float64 - for i := 0; i < iterations; i++ { + for range iterations { if v := cpuBenchOnce(ctx, duration, bs); v > perf { perf = v }