From 1fb99552b75e9b3fc1e391bc66049d1091128c5b Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 27 Apr 2015 08:55:08 -0700 Subject: Fix early shutdown: await client context deletion before channel deletion --- src/cpp/client/channel.cc | 2 +- src/cpp/client/channel.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src/cpp') diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc index ba8882278f..c541ddfb48 100644 --- a/src/cpp/client/channel.cc +++ b/src/cpp/client/channel.cc @@ -71,7 +71,7 @@ Call Channel::CreateCall(const RpcMethod& method, ClientContext* context, : context->authority().c_str(), context->raw_deadline()); GRPC_TIMER_MARK(CALL_CREATED, c_call); - context->set_call(c_call); + context->set_call(c_call, shared_from_this()); return Call(c_call, this, cq); } diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h index cd239247c8..46009d20ba 100644 --- a/src/cpp/client/channel.h +++ b/src/cpp/client/channel.h @@ -51,6 +51,7 @@ class Credentials; class StreamContextInterface; class Channel GRPC_FINAL : public GrpcLibrary, + public std::enable_shared_from_this, public ChannelInterface { public: Channel(const grpc::string& target, grpc_channel* c_channel); -- cgit v1.2.3