envoyproxy/envoy

grpc async client should catch proto cast exception

Open

#5 409 ouverte le 24 déc. 2018

Voir sur GitHub
 (2 commentaires) (0 réactions) (1 assigné)C++ (5 373 forks)batch import
enhancementhelp wanted

Métriques du dépôt

Stars
 (27 997 stars)
Métriques de merge PR
 (Merge moyen 8j) (378 PRs mergées en 30 j)

Description

Title: grpc async client should catch proto cast exception

Description:

grpc async client proto cast catches no exception as follows: include\envoy\grpc\async_client.h

  void onReceiveMessageUntyped(ProtobufTypes::MessagePtr&& message) override {
    onReceiveMessage(std::unique_ptr<ResponseType>(dynamic_cast<ResponseType*>(message.release())));
  }

which may crashs the process when the received message is not standard, like 00 00 00 00 00.

And should be modified as follows:

void onReceiveMessageUntyped(ProtobufTypes::MessagePtr&& message) override {
  try {
    onReceiveMessage(std::unique_ptr<ResponseType>(dynamic_cast<ResponseType*>(message.release())));
  } catch(const std::exception& e) {
    std::cout << "wrong message received, error: " << e.what() << std::endl;
  }
}

Guide contributeur