In `Grpc_lwt.Client.call, after receiving the response, the function checks for the response status code from the headers of the request. When this is not found, the function waits to receive the trailers from the remote to infer the response status code. If the response does not include any trailer received, the function will hang.
If needed, I can provide a working example where an ocaml grpc client hangs after calling a server implemented in rust/tonic, where the handler of the service returns status code 12: Unimplemented.
The client should look for the response status code from the headers of the response (not the request). The change is done in this PR.
In `Grpc_lwt.Client.call, after receiving the response, the function checks for the response status code from the headers of the request. When this is not found, the function waits to receive the trailers from the remote to infer the response status code. If the response does not include any trailer received, the function will hang.
If needed, I can provide a working example where an ocaml grpc client hangs after calling a server implemented in rust/tonic, where the handler of the service returns status code
12: Unimplemented
.The client should look for the response status code from the headers of the response (not the request). The change is done in this PR.