in proxy/protocol/grpc/reverse_proxy.go [198:231]
func handleRequest(w http.ResponseWriter, r *http.Request, inv *invocation.Invocation, ir *invocation.Response) (*http.Response, error) {
if ir != nil {
if ir.Err != nil {
WriteErrorResponse(inv, w, r, ir.Status, ir.Err)
return nil, ir.Err
}
if inv.Endpoint == "" {
WriteErrorResponse(inv, w, r, http.StatusBadGateway, protocol.ErrUnknown)
return nil, protocol.ErrUnknown
}
if ir.Result == nil {
if ir.Err != nil {
WriteErrorResponse(inv, w, r, http.StatusBadGateway, ir.Err)
return nil, ir.Err
}
WriteErrorResponse(inv, w, r, http.StatusBadGateway, ErrNilResponse)
return nil, protocol.ErrUnknown
}
resp, ok := ir.Result.(*http.Response)
if !ok {
err := errors.New("invocationResponse result is not type *http.Response")
WriteErrorResponse(inv, w, r, http.StatusBadGateway, err)
return nil, err
}
//transparent proxy
copyChassisResp2HttpResp(w, resp)
return resp, nil
} else {
WriteErrorResponse(inv, w, r, http.StatusBadGateway, protocol.ErrUnExpectedHandlerChainResponse)
return nil, protocol.ErrUnExpectedHandlerChainResponse
}
}