ab9dd18bec
See https://github.com/hashicorp/consul/issues/3977 While trying to improve furthermore #3948 (This pull request is still valid since we are not using Compression to compute the result anyway). I saw a strange behaviour of dns library. Basically, msg.Len() and len(msg.Pack()) disagree on Message len. Thus, calculation of DNS response is false consul relies on msg.Len() instead of the result of Pack() This is linked to miekg/dns#453 and a fix has been provided with miekg/dns#454 Would it be possible to upgrade miekg/dns to a more recent function ? Consul might for instance upgrade to a post 1.0 release such as https://github.com/miekg/dns/releases/tag/v1.0.4
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
// +build windows
|
|
|
|
package dns
|
|
|
|
import "net"
|
|
|
|
// SessionUDP holds the remote address
|
|
type SessionUDP struct {
|
|
raddr *net.UDPAddr
|
|
}
|
|
|
|
// RemoteAddr returns the remote network address.
|
|
func (s *SessionUDP) RemoteAddr() net.Addr { return s.raddr }
|
|
|
|
// ReadFromSessionUDP acts just like net.UDPConn.ReadFrom(), but returns a session object instead of a
|
|
// net.UDPAddr.
|
|
// TODO(fastest963): Once go1.10 is released, use ReadMsgUDP.
|
|
func ReadFromSessionUDP(conn *net.UDPConn, b []byte) (int, *SessionUDP, error) {
|
|
n, raddr, err := conn.ReadFrom(b)
|
|
if err != nil {
|
|
return n, nil, err
|
|
}
|
|
session := &SessionUDP{raddr.(*net.UDPAddr)}
|
|
return n, session, err
|
|
}
|
|
|
|
// WriteToSessionUDP acts just like net.UDPConn.WriteTo(), but uses a *SessionUDP instead of a net.Addr.
|
|
// TODO(fastest963): Once go1.10 is released, use WriteMsgUDP.
|
|
func WriteToSessionUDP(conn *net.UDPConn, b []byte, session *SessionUDP) (int, error) {
|
|
n, err := conn.WriteTo(b, session.raddr)
|
|
return n, err
|
|
}
|
|
|
|
// TODO(fastest963): Once go1.10 is released and we can use *MsgUDP methods
|
|
// use the standard method in udp.go for these.
|
|
func setUDPSocketOptions(*net.UDPConn) error { return nil }
|
|
func parseDstFromOOB([]byte, net.IP) net.IP { return nil }
|