MCPcopy Index your code
hub / github.com/SenseUnit/dumbproxy / HandleRequest

Method HandleRequest

handler/handler.go:168–200  ·  view source on GitHub ↗
(wr http.ResponseWriter, req *http.Request, username string)

Source from the content-addressed store, hash-verified

166}
167
168func (s *ProxyHandler) HandleRequest(wr http.ResponseWriter, req *http.Request, username string) {
169 req.RequestURI = ""
170 forwardReqBody := newH1ReqBodyPipe()
171 origBody := req.Body
172 req.Body = forwardReqBody.Body()
173 address := addressFromURL(req.URL)
174 go func() {
175 s.forward(req.Context(), username, wrapH1ReqBody(origBody), forwardReqBody, "tcp", address)
176 }()
177 if req.ProtoMajor == 2 {
178 req.URL.Scheme = "http" // We can't access :scheme pseudo-header, so assume http
179 req.URL.Host = req.Host
180 }
181 resp, err := s.httptransport.RoundTrip(req)
182 if err != nil {
183 var accessErr derrors.ErrAccessDenied
184 if errors.As(err, &accessErr) {
185 s.logger.Warning("Access denied: %v", err)
186 s.rejectAccess(wr, req)
187 return
188 }
189 s.logger.Error("HTTP fetch error: %v", err)
190 http.Error(wr, "Server Error", http.StatusInternalServerError)
191 return
192 }
193 defer resp.Body.Close()
194 s.logger.Info("%v %v %v %v", req.RemoteAddr, req.Method, req.URL, resp.Status)
195 delHopHeaders(resp.Header)
196 copyHeader(wr.Header(), resp.Header)
197 wr.WriteHeader(resp.StatusCode)
198 flush(wr)
199 s.forward(req.Context(), username, wrapH1RespWriter(wr), wrapH1ReqBody(resp.Body), "tcp", address)
200}
201
202func (s *ProxyHandler) HandleGetRandom(wr http.ResponseWriter, req *http.Request, username string) {
203 if len(req.URL.Path) <= 1 || req.URL.Path[0] != '/' {

Callers 1

ServeHTTPMethod · 0.95

Calls 13

rejectAccessMethod · 0.95
newH1ReqBodyPipeFunction · 0.85
addressFromURLFunction · 0.85
wrapH1ReqBodyFunction · 0.85
delHopHeadersFunction · 0.85
copyHeaderFunction · 0.85
flushFunction · 0.85
wrapH1RespWriterFunction · 0.85
BodyMethod · 0.80
CloseMethod · 0.65
WarningMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected