(response http.ResponseWriter, err error)
| 155 | } |
| 156 | |
| 157 | func (w *ErrorWriter) writeGRPC(response http.ResponseWriter, err error) error { |
| 158 | trailers := make(http.Header, 2) // need space for at least code & message |
| 159 | grpcErrorToTrailer(trailers, w.protobuf, err) |
| 160 | // To make net/http reliably send trailers without a body, we must set the |
| 161 | // Trailers header rather than using http.TrailerPrefix. See |
| 162 | // https://github.com/golang/go/issues/54723. |
| 163 | keys := make([]string, 0, len(trailers)) |
| 164 | for k := range trailers { |
| 165 | keys = append(keys, k) |
| 166 | } |
| 167 | setHeaderCanonical(response.Header(), headerTrailer, strings.Join(keys, ",")) |
| 168 | response.WriteHeader(http.StatusOK) |
| 169 | mergeHeaders(response.Header(), trailers) |
| 170 | return nil |
| 171 | } |
| 172 | |
| 173 | func (w *ErrorWriter) writeGRPCWeb(response http.ResponseWriter, err error) error { |
| 174 | // This is a trailers-only response. To match the behavior of Envoy and |
no test coverage detected