in xray/fasthttp.go [58:88]
func fasthttpToNetHTTPRequest(ctx *fasthttp.RequestCtx) (*http.Request, error) {
requestURI := string(ctx.RequestURI())
rURL, err := url.ParseRequestURI(requestURI)
if err != nil {
return nil, fmt.Errorf("cannot parse requestURI %q: %s", requestURI, err)
}
req := &http.Request{
URL: rURL,
Host: string(ctx.Host()),
RequestURI: requestURI,
Method: string(ctx.Method()),
RemoteAddr: ctx.RemoteAddr().String(),
}
hdr := make(http.Header)
ctx.Request.Header.VisitAll(func(k, v []byte) {
sk := string(k)
sv := string(v)
switch sk {
case "Transfer-Encoding":
req.TransferEncoding = append(req.TransferEncoding, sv)
default:
hdr.Set(sk, sv)
}
})
req.Header = hdr
req.TLS = ctx.TLSConnectionState()
return req, nil
}