code: func (s Stub) ServeDNS(ctx context.Context, w dns.ResponseWriter, req *dns.Msg) (int, error) {
  	if hasStubEdns0(req) {
  		log.Printf("[WARNING] Forwarding cycle detected, refusing msg: %s", req.Question[0].Name)
  		return dns.RcodeRefused, errors.New("stub forward cycle")
  	}
  	req = addStubEdns0(req)
  	proxy, ok := (*s.Etcd.Stubmap)[s.Zone]
  	if !ok { // somebody made a mistake..
  		return dns.RcodeServerFailure, nil
  	}
  
  	state := request.Request{W: w, Req: req}
  	m, e := proxy.Forward(state)
  	if e != nil {
  		return dns.RcodeServerFailure, e
  	}
  	m.RecursionAvailable, m.Compress = true, true
  	state.SizeAndDo(m)
  	w.WriteMsg(m)
  	return dns.RcodeSuccess, nil
  }
docs: // ServeDNS implements the plugin.Handler interface.