Skip to content

Commit 4e49c68

Browse files
authored
fix(lint): avoid string concat in loop (#415)
Signed-off-by: Chris Gianelloni <[email protected]>
1 parent 59260b1 commit 4e49c68

File tree

2 files changed

+42
-35
lines changed

2 files changed

+42
-35
lines changed

internal/dns/dns.go

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -552,47 +552,53 @@ func randomFallbackServer() string {
552552
}
553553

554554
func formatMessageAnswerSection(section []dns.RR) string {
555-
ret := "[ "
555+
var sb strings.Builder
556+
sb.WriteByte('[')
557+
sb.WriteByte(' ')
556558
for idx, rr := range section {
557-
ret += fmt.Sprintf(
558-
"< %s >",
559-
strings.ReplaceAll(
560-
strings.TrimPrefix(
561-
rr.String(),
562-
";",
563-
),
564-
"\t",
565-
" ",
559+
sb.WriteByte('<')
560+
sb.WriteByte(' ')
561+
sb.WriteString(strings.ReplaceAll(
562+
strings.TrimPrefix(
563+
rr.String(),
564+
";",
566565
),
567-
)
566+
"\t",
567+
" ",
568+
))
569+
sb.WriteByte('>')
570+
sb.WriteByte(' ')
568571
if idx != len(section)-1 {
569-
ret += `,`
572+
sb.WriteByte(',')
570573
}
571-
ret += ` `
574+
sb.WriteByte(' ')
572575
}
573-
ret += "]"
574-
return ret
576+
sb.WriteByte(']')
577+
return sb.String()
575578
}
576579

577580
func formatMessageQuestionSection(section []dns.Question) string {
578-
ret := "[ "
581+
var sb strings.Builder
582+
sb.WriteByte('[')
583+
sb.WriteByte(' ')
579584
for idx, question := range section {
580-
ret += fmt.Sprintf(
581-
"< %s >",
582-
strings.ReplaceAll(
583-
strings.TrimPrefix(
584-
question.String(),
585-
";",
586-
),
587-
"\t",
588-
" ",
585+
sb.WriteByte('<')
586+
sb.WriteByte(' ')
587+
sb.WriteString(strings.ReplaceAll(
588+
strings.TrimPrefix(
589+
question.String(),
590+
";",
589591
),
590-
)
592+
"\t",
593+
" ",
594+
))
595+
sb.WriteByte('>')
596+
sb.WriteByte(' ')
591597
if idx != len(section)-1 {
592-
ret += `,`
598+
sb.WriteByte(',')
593599
}
594-
ret += ` `
600+
sb.WriteByte(' ')
595601
}
596-
ret += "]"
597-
return ret
602+
sb.WriteByte(']')
603+
return sb.String()
598604
}

internal/handshake/domain.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"fmt"
1414
"io"
1515
"net"
16+
"strings"
1617
)
1718

1819
const (
@@ -282,8 +283,8 @@ func domainRecordIPv6Decode(r *BytesReader) (net.IP, error) {
282283
}
283284

284285
func domainRecordNameDecode(r *BytesReader) (string, error) {
286+
var sb strings.Builder
285287
// NOTE: this function is mostly ported straight from hnsd
286-
var name string
287288
for {
288289
c, err := r.ReadByte()
289290
if err != nil {
@@ -311,10 +312,10 @@ func domainRecordNameDecode(r *BytesReader) (string, error) {
311312
if b == 0x2e {
312313
b = 0xfe
313314
}
314-
name += string([]byte{b})
315+
sb.WriteByte(b)
315316
}
316-
if len(name) > 0 {
317-
name += "."
317+
if sb.Len() > 0 {
318+
sb.WriteByte('.')
318319
}
319320
case 0xc0:
320321
// Lookup name from earlier in the buffer
@@ -338,5 +339,5 @@ func domainRecordNameDecode(r *BytesReader) (string, error) {
338339
return "", errors.New("unexpected value")
339340
}
340341
}
341-
return name, nil
342+
return sb.String(), nil
342343
}

0 commit comments

Comments
 (0)