diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java index ce8f7999c45..3de49ca4e45 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java @@ -515,13 +515,20 @@ private void acceptConnections() throws IOException { boolean error = false; try { socket = serverSocket.accept(); + BufferedInputStream is; - // start with the initLimit, once the ack is processed - // in LearnerHandler switch to the syncLimit - socket.setSoTimeout(self.tickTime * self.initLimit); - socket.setTcpNoDelay(nodelay); + try { + // start with the initLimit, once the ack is processed + // in LearnerHandler switch to the syncLimit + socket.setSoTimeout(self.tickTime * self.initLimit); + socket.setTcpNoDelay(nodelay); + + is = new BufferedInputStream(socket.getInputStream()); + } catch (IOException e) { + error = true; + return; // close the socket at the finally block + } - BufferedInputStream is = new BufferedInputStream(socket.getInputStream()); LearnerHandler fh = new LearnerHandler(socket, is, Leader.this); fh.start(); } catch (SocketException e) {