MCPcopy
hub / github.com/txthinking/brook / ServeHTTP

Method ServeHTTP

dohserver.go:161–198  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

159}
160
161func (s *DOHServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
162 b, err := io.ReadAll(r.Body)
163 if err != nil {
164 http.Error(w, err.Error(), 500)
165 return
166 }
167 m := &dns.Msg{}
168 if err := m.Unpack(b); err != nil {
169 http.Error(w, err.Error(), 500)
170 return
171 }
172 done, err := DOHGate(m, w, r)
173 if err != nil {
174 http.Error(w, err.Error(), 500)
175 return
176 }
177 if done {
178 return
179 }
180 m1 := &dns.Msg{}
181 if s.DNSClient != nil {
182 m1, err = s.DNSClient.Exchange(m)
183 }
184 if s.DOHClient != nil {
185 m1, err = s.DOHClient.Exchange(m)
186 }
187 if err != nil {
188 http.Error(w, err.Error(), 500)
189 return
190 }
191 b, err = m1.Pack()
192 if err != nil {
193 http.Error(w, err.Error(), 500)
194 return
195 }
196 w.Header().Set("Content-Type", "application/dns-message")
197 w.Write(b)
198}
199
200func (s *DOHServer) Shutdown() error {
201 return s.HTTPServer.Shutdown(context.Background())

Callers

nothing calls this directly

Calls 4

ErrorMethod · 0.80
SetMethod · 0.80
ExchangeMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected