Unref uv timers/tcp handles

pull/15048/head
kpayson64 7 years ago
parent 8391e17adc
commit d93f3e376b
  1. 3
      src/core/lib/iomgr/tcp_uv.cc
  2. 3
      src/core/lib/iomgr/timer_uv.cc

@ -204,6 +204,9 @@ static grpc_error* uv_socket_init_helper(uv_socket_t* uv_socket, int domain) {
uv_socket->write_buffers = nullptr; uv_socket->write_buffers = nullptr;
uv_socket->read_len = 0; uv_socket->read_len = 0;
uv_tcp_nodelay(uv_socket->handle, 1); uv_tcp_nodelay(uv_socket->handle, 1);
// Node uses a garbage collector to call destructors, so we don't
// want to hold the uv loop open with active gRPC objects.
uv_unref((uv_handle_t*)uv_socket->handle);
uv_socket->pending_connection = false; uv_socket->pending_connection = false;
uv_socket->accept_socket = nullptr; uv_socket->accept_socket = nullptr;
uv_socket->accept_error = GRPC_ERROR_NONE; uv_socket->accept_error = GRPC_ERROR_NONE;

@ -52,6 +52,9 @@ static void timer_start(grpc_custom_timer* t) {
uv_timer->data = t; uv_timer->data = t;
t->timer = (void*)uv_timer; t->timer = (void*)uv_timer;
uv_timer_start(uv_timer, run_expired_timer, t->timeout_ms, 0); uv_timer_start(uv_timer, run_expired_timer, t->timeout_ms, 0);
// Node uses a garbage collector to call destructors, so we don't
// want to hold the uv loop open with active gRPC objects.
uv_unref((uv_handle_t*)uv_timer);
} }
static void timer_stop(grpc_custom_timer* t) { static void timer_stop(grpc_custom_timer* t) {

Loading…
Cancel
Save