In the http2-spec, the scenario where the server half-closed the stream (server sent http2.END_STREAM), the client is still allowed to send data (since it's half-closed).
Consider the following gRPC scenario:
- Client opens bidi-stream to server and starts sending data
- Server closes the response stream and sends the status trailers (translates to sending http2.END_STREAM)
- Client continues to send data
Are the semantics well-defined in gRPC?
Possible ways:
- Follow the http2-spec: The client is allowed to continue to send data that is processed by the server.
- Not follow the http2-spec: The client-connection is implicitly terminated if the server closes the stream.
NOTE: I just tested and it looks like gRPC for Java follows variant "not follow the http2-spec", i.e. if the server closes the downwards stream, also the upwards stream is closed.