diff options
Diffstat (limited to 'library/cpp/grpc')
-rw-r--r-- | library/cpp/grpc/client/grpc_client_low.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/library/cpp/grpc/client/grpc_client_low.h b/library/cpp/grpc/client/grpc_client_low.h index e3f786242d..acec2de075 100644 --- a/library/cpp/grpc/client/grpc_client_low.h +++ b/library/cpp/grpc/client/grpc_client_low.h @@ -132,6 +132,7 @@ struct TGrpcStatus { TString Details; int GRpcStatusCode; bool InternalError; + std::multimap<TString, TString> ServerTrailingMetadata; TGrpcStatus() : GRpcStatusCode(grpc::StatusCode::OK) @@ -809,6 +810,11 @@ private: } else if (readCallback) { if (status.Ok()) { status = TGrpcStatus(grpc::StatusCode::OUT_OF_RANGE, "Read EOF"); + for (const auto& [name, value] : Context.GetServerTrailingMetadata()) { + status.ServerTrailingMetadata.emplace( + TString(name.begin(), name.end()), + TString(value.begin(), value.end())); + } } readCallback(std::move(status)); } else if (finishCallback) { @@ -1205,6 +1211,11 @@ private: } else if (readCallback) { if (status.Ok()) { status = TGrpcStatus(grpc::StatusCode::OUT_OF_RANGE, "Read EOF"); + for (const auto& [name, value] : Context.GetServerTrailingMetadata()) { + status.ServerTrailingMetadata.emplace( + TString(name.begin(), name.end()), + TString(value.begin(), value.end())); + } } readCallback(std::move(status)); } else if (finishCallback) { |