MCPcopy Create free account
hub / github.com/encodeous/nylon / dnsPacketRoundTrip

Function dnsPacketRoundTrip

polyamide/tun/netstack/tun.go:599–620  ·  view source on GitHub ↗
(c net.Conn, id uint16, query dnsmessage.Question, b []byte)

Source from the content-addressed store, hash-verified

597}
598
599func 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
622func dnsStreamRoundTrip(c net.Conn, id uint16, query dnsmessage.Question, b []byte) (dnsmessage.Parser, dnsmessage.Header, error) {
623 if _, err := c.Write(b); err != nil {

Callers 1

exchangeMethod · 0.85

Calls 4

checkResponseFunction · 0.85
WriteMethod · 0.65
ReadMethod · 0.65
StartMethod · 0.65

Tested by

no test coverage detected