Skip to content

Commit 7b3f563

Browse files
committed
upstream: imp code
1 parent 1d84f3e commit 7b3f563

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

upstream/doq.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"net/url"
1212
"os"
1313
"runtime"
14-
"slices"
1514
"sync"
1615
"time"
1716

@@ -421,23 +420,23 @@ func (p *dnsOverQUIC) closeConnWithError(conn *quic.Conn, err error) {
421420
func (p *dnsOverQUIC) readMsg(stream quicStream) (m *dns.Msg, err error) {
422421
defer func() { err = errors.Annotate(err, "from %s: %w", p.addr) }()
423422

424-
pool := p.getBytesPool()
425-
bufPtr := pool.Get().(*[]byte)
426-
defer pool.Put(bufPtr)
427-
428423
var lenBuf [2]byte
429424
_, err = io.ReadFull(stream, lenBuf[:])
430425
if err != nil {
431426
return nil, fmt.Errorf("reading response length: %w", err)
432427
}
433428

434429
msgLen := binary.BigEndian.Uint16(lenBuf[:])
435-
err = validate.NotEmpty("response", msgLen)
430+
err = validate.Positive("response length", msgLen)
436431
if err != nil {
432+
// Don't wrap the error, since it's informative enough as is.
437433
return nil, err
438434
}
439435

440-
*bufPtr = slices.Grow(*bufPtr, int(msgLen))
436+
pool := p.getBytesPool()
437+
bufPtr := pool.Get().(*[]byte)
438+
defer pool.Put(bufPtr)
439+
441440
respBuf := (*bufPtr)[:msgLen]
442441

443442
_, err = io.ReadFull(stream, respBuf)
@@ -450,7 +449,7 @@ func (p *dnsOverQUIC) readMsg(stream quicStream) (m *dns.Msg, err error) {
450449
// All DNS messages (queries and responses) sent over DoQ connections MUST
451450
// be encoded as a 2-octet length field followed by the message content as
452451
// specified in [RFC1035].
453-
m = new(dns.Msg)
452+
m = &dns.Msg{}
454453
err = m.Unpack(respBuf)
455454
if err != nil {
456455
return nil, fmt.Errorf("from %s: unpacking response: %w", p.addr, err)

0 commit comments

Comments
 (0)