diff options
author | 2016-12-02 22:16:03 +0000 | |
---|---|---|
committer | 2016-12-02 22:16:03 +0000 | |
commit | 0f4bbba82687420a2ebc56ea66021c29890472f0 (patch) | |
tree | b40062cc71f4391a1a51e5f18a4f135b351903a5 /src | |
parent | a0bcfbbfe2378459a439a3344df59774e32cd774 (diff) |
Fix allocation bugs in server shutdown.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/ext/transport/chttp2/server/chttp2_server.c | 9 | ||||
-rw-r--r-- | src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.c b/src/core/ext/transport/chttp2/server/chttp2_server.c index 50cbafab56..dc85d1cf5c 100644 --- a/src/core/ext/transport/chttp2/server/chttp2_server.c +++ b/src/core/ext/transport/chttp2/server/chttp2_server.c @@ -338,11 +338,12 @@ error: } if (tcp_server) { grpc_tcp_server_unref(exec_ctx, tcp_server); + } else { + grpc_channel_args_destroy(state->args); + grpc_chttp2_server_handshaker_factory_destroy(exec_ctx, + state->handshaker_factory); + gpr_free(state); } - grpc_channel_args_destroy(state->args); - grpc_chttp2_server_handshaker_factory_destroy(exec_ctx, - state->handshaker_factory); - gpr_free(state); *port_num = 0; done: diff --git a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c index b9a833803b..5f41728132 100644 --- a/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +++ b/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c @@ -69,6 +69,7 @@ static void server_security_handshaker_factory_destroy( (server_security_handshaker_factory *)hf; GRPC_SECURITY_CONNECTOR_UNREF(&handshaker_factory->security_connector->base, "server"); + gpr_free(hf); } static const grpc_chttp2_server_handshaker_factory_vtable @@ -124,9 +125,6 @@ done: gpr_log(GPR_ERROR, "%s", msg); grpc_error_free_string(msg); GRPC_ERROR_UNREF(err); - if (sc != NULL) { - GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "server"); - } } return port_num; } |