From b5ee02c228e4b0856d8479d436011eeab5ec57c5 Mon Sep 17 00:00:00 2001
From: Kaushal M <kaushal@redhat.com>
Date: Mon, 16 May 2016 15:15:49 +0530
Subject: [PATCH 136/141] rpc/socket: Close pipe on disconnection
Encrypted connections create a pipe, which isn't closed when the
connection disconnects. This leaks fds, and gluster eventually ends up
in a situation with fd starvation which leads to operation failures.
>Reviewed-on: http://review.gluster.org/14356
>Tested-by: MOHIT AGRAWAL <moagrawa@redhat.com>
>Smoke: Gluster Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Change-Id: I144e1f767cec8c6fc1aa46b00cd234129d2a4adc
BUG: 1381822
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/87981
Tested-by: Mohit Agrawal <moagrawa@redhat.com>
Reviewed-by: Mohit Agrawal <moagrawa@redhat.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
---
rpc/rpc-transport/socket/src/socket.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index 700157e..4244883 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -2567,10 +2567,17 @@ err:
__socket_teardown_connection (this);
sys_close (priv->sock);
priv->sock = -1;
+
+ sys_close (priv->pipe[0]);
+ sys_close (priv->pipe[1]);
+ priv->pipe[0] = -1;
+ priv->pipe[1] = -1;
+
priv->ot_state = OT_IDLE;
+
pthread_mutex_unlock(&priv->lock);
- rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this);
+ rpc_transport_notify (this, RPC_TRANSPORT_DISCONNECT, this);
rpc_transport_unref (this);
--
1.7.1