If a client makes a request to a server streaming RPC (eg: rpc DivideStream(Sum) returns (stream Part);) using a default request (eg: streaming::Sum { ..Default::default() }), the call hangs indefinitely. This can easily be observed by modifying the async-stream-client example to send an empty Sum
The root cause is twofold:
Empty / Default proto messages serialize to an empty vector
The server implementation does not attempt to deliver an empty payload (I think because it assumes it will be receiving DATA messages soon, but the client sends only the request).
Expected result
The server processes the request and returns the stream to the client.
Actual result
The server does not execute the corresponding method. The client waits indefinitely for a response.
Description of problem
If a client makes a request to a server streaming RPC (eg:
rpc DivideStream(Sum) returns (stream Part);
) using a default request (eg:streaming::Sum { ..Default::default() }
), the call hangs indefinitely. This can easily be observed by modifying the async-stream-client example to send an emptySum
The root cause is twofold:
Expected result
The server processes the request and returns the stream to the client.
Actual result
The server does not execute the corresponding method. The client waits indefinitely for a response.