aboutsummaryrefslogtreecommitdiff
path: root/src/core/lib/security/transport/security_handshaker.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/lib/security/transport/security_handshaker.cc')
-rw-r--r--src/core/lib/security/transport/security_handshaker.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc
index 6d05c97078..f464218d0d 100644
--- a/src/core/lib/security/transport/security_handshaker.cc
+++ b/src/core/lib/security/transport/security_handshaker.cc
@@ -521,10 +521,18 @@ class FailHandshaker : public Handshaker {
void Shutdown(grpc_error_handle why) override { GRPC_ERROR_UNREF(why); }
void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
grpc_closure* on_handshake_done,
- HandshakerArgs* /*args*/) override {
- ExecCtx::Run(DEBUG_LOCATION, on_handshake_done,
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Failed to create security handshaker"));
+ HandshakerArgs* args) override {
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Failed to create security handshaker");
+ grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error));
+ grpc_endpoint_destroy(args->endpoint);
+ args->endpoint = nullptr;
+ grpc_channel_args_destroy(args->args);
+ args->args = nullptr;
+ grpc_slice_buffer_destroy_internal(args->read_buffer);
+ gpr_free(args->read_buffer);
+ args->read_buffer = nullptr;
+ ExecCtx::Run(DEBUG_LOCATION, on_handshake_done, error);
}
private: