@@ -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) {
421420func (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