mirror of
				https://github.com/nadoo/glider.git
				synced 2025-11-04 07:42:38 +08:00 
			
		
		
		
	dns: add some comments
This commit is contained in:
		
							parent
							
								
									09b6d59394
								
							
						
					
					
						commit
						5467e4bbc1
					
				@ -116,12 +116,13 @@ func (c *Client) exchange(qname string, reqBytes []byte, preferTCP bool) (server
 | 
				
			|||||||
	servers := c.GetServers(qname)
 | 
						servers := c.GetServers(qname)
 | 
				
			||||||
	for _, server = range servers {
 | 
						for _, server = range servers {
 | 
				
			||||||
		rc, err := dialer.Dial(network, server)
 | 
							rc, err := dialer.Dial(network, server)
 | 
				
			||||||
		// TODO: check the timeout setting here, some dns client has 5 seconds timeout
 | 
							// TODO: support timeout setting for different upstream server
 | 
				
			||||||
		rc.SetDeadline(time.Now().Add(time.Duration(3) * time.Second))
 | 
							rc.SetDeadline(time.Now().Add(time.Duration(3) * time.Second))
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			log.F("[dns] failed to connect to server %v: %v", server, err)
 | 
								log.F("[dns] failed to connect to server %v: %v", server, err)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							defer rc.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch network {
 | 
							switch network {
 | 
				
			||||||
		case "tcp":
 | 
							case "tcp":
 | 
				
			||||||
@ -141,8 +142,6 @@ func (c *Client) exchange(qname string, reqBytes []byte, preferTCP bool) (server
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// exchangeTCP exchange with server over tcp
 | 
					// exchangeTCP exchange with server over tcp
 | 
				
			||||||
func (c *Client) exchangeTCP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
					func (c *Client) exchangeTCP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
				
			||||||
	defer rc.Close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if _, err := rc.Write(reqBytes); err != nil {
 | 
						if _, err := rc.Write(reqBytes); err != nil {
 | 
				
			||||||
		log.F("[dns] failed to write req message: %v", err)
 | 
							log.F("[dns] failed to write req message: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
@ -168,8 +167,6 @@ func (c *Client) exchangeTCP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// exchangeUDP exchange with server over udp
 | 
					// exchangeUDP exchange with server over udp
 | 
				
			||||||
func (c *Client) exchangeUDP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
					func (c *Client) exchangeUDP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
				
			||||||
	defer rc.Close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if _, err := rc.Write(reqBytes[2:]); err != nil {
 | 
						if _, err := rc.Write(reqBytes[2:]); err != nil {
 | 
				
			||||||
		log.F("[dns] failed to write req message: %v", err)
 | 
							log.F("[dns] failed to write req message: %v", err)
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
@ -185,12 +182,12 @@ func (c *Client) exchangeUDP(rc net.Conn, reqBytes []byte) ([]byte, error) {
 | 
				
			|||||||
	return reqBytes[:2+n], nil
 | 
						return reqBytes[:2+n], nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SetServer .
 | 
					// SetServer sets a upstream dns server for the given domain
 | 
				
			||||||
func (c *Client) SetServer(domain string, servers ...string) {
 | 
					func (c *Client) SetServer(domain string, servers ...string) {
 | 
				
			||||||
	c.upServerMap[domain] = append(c.upServerMap[domain], servers...)
 | 
						c.upServerMap[domain] = append(c.upServerMap[domain], servers...)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetServers .
 | 
					// GetServers gets upstream dns servers for the given domain
 | 
				
			||||||
func (c *Client) GetServers(domain string) []string {
 | 
					func (c *Client) GetServers(domain string) []string {
 | 
				
			||||||
	domainParts := strings.Split(domain, ".")
 | 
						domainParts := strings.Split(domain, ".")
 | 
				
			||||||
	length := len(domainParts)
 | 
						length := len(domainParts)
 | 
				
			||||||
@ -202,11 +199,10 @@ func (c *Client) GetServers(domain string) []string {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO:
 | 
					 | 
				
			||||||
	return c.upServers
 | 
						return c.upServers
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AddHandler .
 | 
					// AddHandler adds a custom handler to handle the resolved result (A and AAAA)
 | 
				
			||||||
func (c *Client) AddHandler(h HandleFunc) {
 | 
					func (c *Client) AddHandler(h HandleFunc) {
 | 
				
			||||||
	c.handlers = append(c.handlers, h)
 | 
						c.handlers = append(c.handlers, h)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -232,7 +228,7 @@ func (c *Client) AddRecord(record string) error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GenResponse .
 | 
					// GenResponse generates a dns response message for the given domani an ip address
 | 
				
			||||||
func (c *Client) GenResponse(domain string, ip string) (*Message, error) {
 | 
					func (c *Client) GenResponse(domain string, ip string) (*Message, error) {
 | 
				
			||||||
	ipb := net.ParseIP(ip)
 | 
						ipb := net.ParseIP(ip)
 | 
				
			||||||
	if ipb == nil {
 | 
						if ipb == nil {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user