aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
diff options
context:
space:
mode:
authorGravatar Yuchen Zeng <zyc@google.com>2017-07-12 15:59:56 -0700
committerGravatar Yuchen Zeng <zyc@google.com>2017-07-17 17:52:15 -0700
commitd40a7ae6c34a97c06e9bef3dc1a6e9774c5bf93c (patch)
treef463d4d2da0d26d5d2d3dc47c0b3c9220c140ba4 /src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
parentbe803dc68756631c6c73121bb786382164373113 (diff)
Add already_closed in grpc_fd_orphan
Diffstat (limited to 'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c')
-rw-r--r--src/core/lib/iomgr/ev_epoll_thread_pool_linux.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c b/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
index 49be72c03e..68399b7f54 100644
--- a/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
+++ b/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c
@@ -493,8 +493,8 @@ static int fd_wrapped_fd(grpc_fd *fd) {
static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
grpc_closure *on_done, int *release_fd,
- const char *reason) {
- bool is_fd_closed = false;
+ bool already_closed, const char *reason) {
+ bool is_fd_closed = already_closed;
grpc_error *error = GRPC_ERROR_NONE;
epoll_set *unref_eps = NULL;
@@ -505,7 +505,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
descriptor fd->fd (but we still own the grpc_fd structure). */
if (release_fd != NULL) {
*release_fd = fd->fd;
- } else {
+ } else if (!is_fd_closed) {
close(fd->fd);
is_fd_closed = true;
}