aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/transport
diff options
context:
space:
mode:
authorGravatar Juanli Shen <juanlishen@google.com>2018-10-26 18:12:28 -0700
committerGravatar Juanli Shen <juanlishen@google.com>2018-10-26 18:12:28 -0700
commit19ea6226b2aa913e9a533eace3259704c9e7bd9f (patch)
tree890267e7c6f8301bf3f9f0e57579319a47a1dd36 /src/core/ext/transport
parenta6d5884814a8be39094a7a0e18486af3b92f8758 (diff)
Fix resource quota related leak
Diffstat (limited to 'src/core/ext/transport')
-rw-r--r--src/core/ext/transport/chttp2/server/chttp2_server.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc
index bdb2339e40..6855246fa4 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.cc
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc
@@ -142,7 +142,6 @@ static void on_handshake_done(void* arg, grpc_error* error) {
// If the handshaking succeeded but there is no endpoint, then the
// handshaker may have handed off the connection to some external
// code, so we can just clean up here without creating a transport.
- // TODO(juanlishen): Do we need to free the memory to resource user?
if (args->endpoint != nullptr) {
grpc_transport* transport = grpc_create_chttp2_transport(
args->args, args->endpoint, false, resource_user);
@@ -168,6 +167,11 @@ static void on_handshake_done(void* arg, grpc_error* error) {
connection_state, grpc_schedule_on_exec_ctx);
grpc_timer_init(&connection_state->timer, connection_state->deadline,
&connection_state->on_timeout);
+ } else {
+ if (resource_user != nullptr) {
+ grpc_resource_user_free(resource_user,
+ GRPC_RESOURCE_QUOTA_CHANNEL_SIZE);
+ }
}
}
grpc_handshake_manager_pending_list_remove(