diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index dfc2b303bca..29db0b41c3b 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -329,6 +329,15 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) { grpc_server_start(server_); if (!has_generic_service_) { + if (!sync_methods_->empty()) { + unknown_method_.reset(new RpcServiceMethod( + "unknown", RpcMethod::BIDI_STREAMING, new UnknownMethodHandler)); + // Use of emplace_back with just constructor arguments is not accepted + // here + // by gcc-4.4 because it can't match the anonymous nullptr with a proper + // constructor implicitly. Construct the object and use push_back. + sync_methods_->push_back(SyncRequest(unknown_method_.get(), nullptr)); + } for (size_t i = 0; i < num_cqs; i++) { new UnimplementedAsyncRequest(this, cqs[i]); }