(c net.Conn, id uint16, query dnsmessage.Question, b []byte)
| 597 | } |
| 598 | |
| 599 | func dnsPacketRoundTrip(c net.Conn, id uint16, query dnsmessage.Question, b []byte) (dnsmessage.Parser, dnsmessage.Header, error) { |
| 600 | if _, err := c.Write(b); err != nil { |
| 601 | return dnsmessage.Parser{}, dnsmessage.Header{}, err |
| 602 | } |
| 603 | b = make([]byte, 512) |
| 604 | for { |
| 605 | n, err := c.Read(b) |
| 606 | if err != nil { |
| 607 | return dnsmessage.Parser{}, dnsmessage.Header{}, err |
| 608 | } |
| 609 | var p dnsmessage.Parser |
| 610 | h, err := p.Start(b[:n]) |
| 611 | if err != nil { |
| 612 | continue |
| 613 | } |
| 614 | q, err := p.Question() |
| 615 | if err != nil || !checkResponse(id, query, h, q) { |
| 616 | continue |
| 617 | } |
| 618 | return p, h, nil |
| 619 | } |
| 620 | } |
| 621 | |
| 622 | func dnsStreamRoundTrip(c net.Conn, id uint16, query dnsmessage.Question, b []byte) (dnsmessage.Parser, dnsmessage.Header, error) { |
| 623 | if _, err := c.Write(b); err != nil { |
no test coverage detected