envoyproxy/envoy
Auf GitHub ansehenhcm: Allow filter to control on emitting trailers (e.g. to skip encoding trailers when empty)
Open
#12.374 geöffnet am 30. Juli 2020
area/httpenhancementhelp wanted
Repository-Metriken
- Stars
- (27.997 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 8T) (378 gemergte PRs in 30 T)
Beschreibung
Context: Some of the filters, e.g. gRPC Web requires to skip encoding trailers due to https://github.com/envoyproxy/envoy/issues/10514.
i.e. currently, we have the following "problematic" response frames.
[ 5.036] recv DATA frame <length=28, flags=0x00, stream_id=13>
[ 5.040] recv DATA frame <length=52, flags=0x00, stream_id=13>
[ 5.053] recv HEADERS frame <length=0, flags=0x05, stream_id=13>
; END_STREAM | END_HEADERS
What we want is something like:
[ 5.036] recv DATA frame <length=28, flags=0x00, stream_id=13>
[ 5.040] recv DATA frame <length=52, flags=0x00, stream_id=13>
; END_STREAM
We have the current data frames since we always encode trailers. The proposed solution will be to have control from the filter side.
A couple of options:
- introduce a new return enum to
FilterTrailersStatus, to indicate that trailers should not be emitted. - add
end_streamflags toaddEncodedData, end stream there andencodeTrailersreturnStopIteration
From the discussion here, the second of the options above is preferable and when doing that we should do a parallel fix in addDecodedData too.